(57)【要約】【課題】  ユーザー領域と冗長領域の双方に、消去状態に対応するデータが書込まれている場合の、ユーザーデータと誤り訂正符号との不整合を解消する。【解決手段】  ユーザー領域に書込まれるユーザーデータに基づいて生成された誤り訂正符号に対してマスク回路２５が第１の変換処理を施し、第１の変換処理が施された誤り訂正符号をフラッシュメモリ２の冗長領域に書込む。この第１の変換処理では、ユーザーデータのビットデータが、全て消去状態（論理値の"１"）のときに、変換処理後の誤り訂正符号のビットデータが、全て消去状態（論理値の"１"）になるような変換が行われる。読み出したユーザーデータに含まれる誤りを検出、訂正する場合には、第１の変換処理を施す前の誤り訂正符号に戻す第２の変換処理を施すことにより得られた誤り訂正符号が使用される。【選択図】図３
2006127441.tif 000002
【特許請求の範囲】
【請求項１】
データの書込み及び読み出しがページ単位で行われ、データの消去が複数ページからなるブロック単位で行われるフラッシュメモリにアクセスするメモリコントローラであって、
前記フラッシュメモリの各ページのユーザー領域にデータを書込むデータ書込み手段と、
前記ユーザー領域に書込まれるデータに対する誤り訂正符号を生成する誤り訂正符号生成手段と、
前記誤り訂正符号に対して、第１の変換処理を施す第１の変換処理手段と
前記第１の変換処理が施された前記誤り訂正符号を、前記ユーザー領域と対応する冗長領域に書込む訂正符号書込み手段とを備え、
前記第１の変換処理手段の行う前記第１の変換処理は、前記ユーザー領域に書込まれるデータの全てのビットデータが前記フラッシュメモリにおける消去状態と一致するときに、当該第１の変換処理が施された後の前記誤り訂正符号の全てのビットデータを、前記フラッシュメモリにおける消去状態に一致させることを特徴とするメモリコントローラ。
【請求項２】
前記第１の変換処理手段は、前記誤り訂正符号生成手段が生成した誤り訂正符号と予め設定されたマスクデータとの排他的論理和をとる手段を備えることを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記ユーザー領域に書込まれているデータを読み出すデータ読出し手段と、
前記冗長領域に書込まれている前記第１の変換処理が施された誤り訂正符号を読み出す誤り訂正符号読出し手段と、
前記誤り訂正符号読出し手段が読出した前記第１の変換処理が施された誤り訂正符号に対して、第２の変換処理を施す第２の変換処理手段と、
前記第２の変換処理が施された前記誤り訂正符号に基づいて前記ユーザー領域から読み出したデータに含まれる誤りを検出、訂正する誤り検出訂正手段とを備え、
前記第２の変換処理手段の行う前記第２の変換処理は、前記第１の変換処理が施された前記誤り訂正符号を、前記第１の変換処理を施す前の前記誤り訂正符号に戻すことを特徴とする請求項１又は２に記載のメモリコントローラ。
【請求項４】
前記第２の変換処理手段は、前記誤り訂正符号読出し手段が読出した前記第１の変換処理が施された誤り訂正符号と予め設定されたマスクデータとの排他的論理和をとる手段を備えることを特徴とする請求項３に記載のメモリコントローラ。
【請求項５】
前記誤り訂正符号が、リードソロモン符号であることを特徴とする請求項１乃至４のいずれか１項に記載のメモリコントローラ。
【請求項６】
請求項１乃至５のいずれか１項に記載のメモリコントローラと、データの書込み及び読み出しがページ単位で行われ、データの消去が複数ページからなるブロック単位で行われるフラッシュメモリとを備えることを特徴とするフラッシュメモリシステム。
【請求項７】
データの書込み及び読み出しがページ単位で行われ、データの消去が複数ページからなるブロック単位で行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
前記フラッシュメモリの各ページのユーザー領域にデータを書込む処理と、
前記ユーザー領域に書込まれるデータに対する誤り訂正符号を生成する処理と、
前記誤り訂正符号に対して第１の変換処理を施す処理と
前記第１の変換処理が施された前記誤り訂正符号を、前記ユーザー領域と対応する冗長領域に書込む処理とを含み、
前記第１の変換処理では、前記ユーザー領域に書込まれるデータの全てのビットデータが前記フラッシュメモリにおける消去状態と一致するときに、当該第１の変換処理が施された後の前記誤り訂正符号の全てのビットデータを、前記フラッシュメモリにおける消去状態に一致させることを特徴とするフラッシュメモリの制御方法。
【請求項８】
前記第１の変換処理は、前記生成された誤り訂正符号と予め設定されたマスクデータとの排他的論理和をとることを特徴とする請求項７に記載のフラッシュメモリの制御方法。
【請求項９】
前記ユーザー領域に書込まれているデータを読み出す処理と、
前記冗長領域に書込まれている前記第１の変換処理が施された誤り訂正符号を読み出す処理と、
前記冗長領域から読み出した前記第１の変換処理が施された誤り訂正符号に対して、第２の変換処理を施す処理と、
前記第２の変換処理が施された前記誤り訂正符号に基づいて前記ユーザー領域から読み出したデータに含まれる誤りを検出、訂正する処理とを含み、
前記第２の変換処理では、前記第１の変換処理が施された前記誤り訂正符号を、前記第１の変換処理を施す前の前記誤り訂正符号に戻すことを特徴とする請求項７または８に記載のフラッシュメモリの制御方法。
【請求項１０】
前記第２の変換処理手段は、前記読出された前記第１の変換処理が施された誤り訂正符号と予め設定されたマスクデータとの排他的論理和をとることを特徴とする請求項９に記載のフラッシュメモリの制御方法。
【請求項１１】
前記誤り訂正符号が、リードソロモン符号であることを特徴とする請求項７乃至１０のいずれか１項に記載のフラッシュメモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法に関する。
【背景技術】
【０００２】
近年、メモリーカードやシリコンディスクといったメモリシステムにて使用される半導体メモリに、フラッシュメモリが広く採用されている。フラッシュメモリは、不揮発性メモリの一種である。フラッシュメモリに格納されたデータは、電力が供給されていないときでも保持されていることが要求される。
【０００３】
ＮＡＮＤ型フラッシュメモリは、上記のメモリシステムで特に多く用いられるフラッシュメモリの一種である。ＮＡＮＤ型フラッシュメモリに含まれている複数のメモリセルのそれぞれは、他のメモリセルとは独立して、論理値"１"を示すデータが格納されている消去状態から、論理値"０"を示すデータが格納されている書込状態へと変化することができる。これとは対照的に、書込状態から消去状態へと変化するときには、各メモリセルは他のメモリセルと独立して変化することができない。このときには、ブロックと称される予め定められた数のメモリセルが、全て同時に消去状態になる。この一括消去動作は、一般的に、"ブロック消去"と称されている。
【０００４】
ＮＡＮＤ型フラッシュメモリに対する書込処理若しくは読出処理は、ページと称される予め定められた数のメモリセル単位で処理が行なわれる。消去処理の単位であるブロックは複数のページで構成されている。
【０００５】
ＮＡＮＤ型フラッシュメモリに対する書込み処理では、まず、書込みデータがＮＡＮＤ型フラッシュメモリ内のレジスタに転送され、レジスタに保持された書込みデータがメモリセルアレイに複写される。この複写（書込み）処理で、メモリセルを消去状態から書込状態に変化させる場合、コントロールゲートに高電圧が印加され、フローティングゲートに電子が注入される。このような処理により、メモリセルアレイにデータが書込まれるため、ＮＡＮＤ型フラッシュメモリに対する書込み処理では、書込みエラーが発生することがある。
【０００６】
書込みエラー等に起因する読出しデータの誤りは、通常、各ページの冗長領域に書込まれている誤り訂正符号に基づいて検出、訂正が行われる。この誤り訂正符号は、書込み処理のときに、各ページのユーザー領域に書込まれるデータに基づいて生成され、各ページの冗長領域に書込まれる。
【０００７】
データの誤りを検出、訂正するための誤り訂正符号としては、リードソロモン符号、ＢＣＨ符号、ハミング符号等が知られている。ハミング符号は、誤りの訂正能力が高くないが、ユーザー領域に書込む書込みデータの全てのビットデータが論理値"１"（消去状態）のときに、この書込みデータに基づいて生成される誤り訂正符号の全てのビットデータが、論理値"１"（消去状態）に一致するので、ＮＡＮＤ型フラッシュメモリの誤り訂正符号として使用されることが多い。
【０００８】
一方、リードソロモン符号を誤り訂正符号として用いた場合、誤りの訂正能力は高くなるが、書込みデータの全てのビットデータが論理値"１"（消去状態）のときに、この書込みデータに基づいて生成される誤り訂正符号の全てのビットデータが、論理値"１"（消去状態）に一致しない。従って、ＮＡＮＤ型フラッシュメモリの誤り訂正符号として、リードソロモン符号を使用する場合には、この不整合を解消する処理が必要になる。
【０００９】
上記不整合を解消するため、下記特許文献１では、書込み処理のときに、書込みデータと消去状態のデータとを比較し、両データが一致した場合には、書込みデータに基づいて生成された誤り訂正符号を、冗長領域に書込まないようにしている。一方、読出し処理のときは、読出しデータと消去状態のデータとを比較し、両データが一致した場合には、読出しデータに対する誤りの検出、訂正を行っていない。
【特許文献１】特開２００４−７１０１２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
特許文献１（特開２００４−７１０１２）では、書込みデータが消去状態のデータと一致する場合には、誤り訂正符号が冗長領域に書込まれず、読出しデータが消去状態のデータと一致する場合には、読出しデータに対する誤りの検出、訂正を行っていない。従って、読出しエラーが発生したために、読出しデータと消去状態のデータが一致してしまった場合には、誤りの検出、訂正が行われないという問題が発生する。
【００１１】
そこで、本発明は、消去状態のデータに基づいて生成される誤り訂正符号が、消去状態のデータと一致しないという不整合を解消すると共に、全ての読出しデータに対して誤りの検出、訂正をすることができるメモリコントローラ及びそのメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するために、本発明の第１の観点に係るメモリコントローラは、
データの書込み及び読み出しがページ単位で行われ、データの消去が複数ページからなるブロック単位で行われるフラッシュメモリにアクセスするメモリコントローラであって、
前記フラッシュメモリの各ページのユーザー領域にデータを書込むデータ書込み手段と、
前記ユーザー領域に書込まれるデータに対する誤り訂正符号を生成する誤り訂正符号生成手段と、
前記誤り訂正符号に対して、第１の変換処理を施す第１の変換処理手段と
前記第１の変換処理が施された前記誤り訂正符号を、前記ユーザー領域と対応する冗長領域に書込む訂正符号書込み手段とを備え、
前記第１の変換処理手段の行う前記第１の変換処理は、前記ユーザー領域に書込まれるデータの全てのビットデータが前記フラッシュメモリにおける消去状態と一致するときに、当該第１の変換処理が施された後の前記誤り訂正符号の全てのビットデータを、前記フラッシュメモリにおける消去状態に一致させることを特徴とする。
【００１３】
このような構成を採用したことにより、ユーザー領域に書き込むデータに対する誤り訂正符号が誤り訂正符号生成手段により生成される。誤り訂正符号は、第１の変換処理が施されて冗長領域に書き込まれる。ここで、第１の変換処理により、ユーザー領域に書込まれるデータの全てのビットデータがフラッシュメモリにおける消去状態と一致するときに、誤り訂正符号の全てのビットデータが、フラッシュメモリにおける消去状態に一致するように変換される。よって、ユーザー領域に書き込まれたデータと整合するようになる。また、第１の変換処理が施された誤り訂正符号を処理前の誤り訂正符号に復元して用いることにより、データの誤り検出及び訂正を実施できる。
【００１４】
なお、前記第１の変換処理手段は、前記誤り訂正符号生成手段が生成した誤り訂正符号と予め設定されたマスクデータとの排他的論理和をとる手段を備えてもよい。
【００１５】
また、前記ユーザー領域に書込まれているデータを読み出すデータ読出し手段と、
前記冗長領域に書込まれている前記第１の変換処理が施された誤り訂正符号を読み出す誤り訂正符号読出し手段と、
前記誤り訂正符号読出し手段が読出した前記第１の変換処理が施された誤り訂正符号に対して、第２の変換処理を施す第２の変換処理手段と、
前記第２の変換処理が施された前記誤り訂正符号に基づいて前記ユーザー領域から読み出したデータに含まれる誤りを検出、訂正する誤り検出訂正手段とを備え、
前記第２の変換処理手段の行う前記第２の変換処理は、前記第１の変換処理が施された前記誤り訂正符号を、前記第１の変換処理を施す前の前記誤り訂正符号にしてもよい。
【００１６】
この場合、前記第２の変換処理手段は、前記誤り訂正符号読出し手段が読出した前記第１の変換処理が施された誤り訂正符号と予め設定されたマスクデータとの排他的論理和をとる手段を備えてもよい。
【００１７】
また、前記誤り訂正符号が、リードソロモン符号であってもよい。
【００１８】
上記目的を達成するために、本発明の第２の観点に係るフラッシュメモリシステムは、本発明の第１の観点に係るメモリコントローラと、データの書込み及び読み出しがページ単位で行われ、データの消去が複数ページからなるブロック単位で行われるフラッシュメモリとを備えることを特徴とする。
【００１９】
上記目的を達成するために、本発明の第３の観点に係るフラッシュメモリの制御方法は、
データの書込み及び読み出しがページ単位で行われ、データの消去が複数ページからなるブロック単位で行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
前記フラッシュメモリの各ページのユーザー領域にデータを書込む処理と、
前記ユーザー領域に書込まれるデータに対する誤り訂正符号を生成する処理と、
前記誤り訂正符号に対して第１の変換処理を施す処理と
前記第１の変換処理が施された前記誤り訂正符号を、前記ユーザー領域と対応する冗長領域に書込む処理とを含み、
前記第１の変換処理では、前記ユーザー領域に書込まれるデータの全てのビットデータが前記フラッシュメモリにおける消去状態と一致するときに、当該第１の変換処理が施された後の前記誤り訂正符号の全てのビットデータを、前記フラッシュメモリにおける消去状態に一致させることを特徴とする。
【００２０】
なお、前記第１の変換処理は、前記生成された誤り訂正符号と予め設定されたマスクデータとの排他的論理和をとってもよい。
【００２１】
また、前記ユーザー領域に書込まれているデータを読み出す処理と、
前記冗長領域に書込まれている前記第１の変換処理が施された誤り訂正符号を読み出す処理と、
前記冗長領域から読み出した前記第１の変換処理が施された誤り訂正符号に対して、第２の変換処理を施す処理と、
前記第２の変換処理が施された前記誤り訂正符号に基づいて前記ユーザー領域から読み出したデータに含まれる誤りを検出、訂正する処理とを含み、
前記第２の変換処理では、前記第１の変換処理が施された前記誤り訂正符号を、前記第１の変換処理を施す前の前記誤り訂正符号に戻してもよい。
【００２２】
この場合、前記第２の変換処理手段は、前記読出された前記第１の変換処理が施された誤り訂正符号と予め設定されたマスクデータとの排他的論理和をとってもよい。
【００２３】
また、前記誤り訂正符号が、リードソロモン符号であってもよい。
【発明の効果】
【００２４】
本発明によれば、ユーザー領域に書込まれるユーザーデータに基づいて生成された誤り訂正符号に対して、変換処理を施すことにより、ユーザー領域と冗長領域の双方に消去状態に対応するデータが書込まれている場合の、ユーザーデータと誤り訂正符号との不整合を解消している。このような構成にしたことにより、符号化方式を選択する際の自由度が広がり、リードソロモン符号等の訂正能力の高い符号化方式を採用することができる。又、ユーザー領域に書込まれるユーザーデータに依存することなく、常に同様な誤りの訂正が行われる。
【発明を実施するための最良の形態】
【００２５】
以下、図面に基づき、本発明の実施の形態について詳細に説明する。
図１は、フラッシュメモリシステム１を、概略的に示すブロック図である。
図１に示したように、フラッシュメモリシステム１は、フラッシュメモリ２と、それを制御するメモリコントローラ３で構成されている。又、フラッシュメモリシステム１は、通常、ホストシステム４に着脱可能に装着され、ホストシステム４に対して、一種の外部記憶装置として用いられる。
【００２６】
尚、ホストシステム４としては、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置が挙げられる。
以下に、フラッシュメモリ２及びメモリコントローラ３の詳細を説明する。
【００２７】
[フラッシュメモリ２の説明]
このフラッシュメモリシステム１において、データが記憶されるフラッシュメモリ２は、ＮＡＮＤ型フラッシュメモリで構成されている。ＮＡＮＤ型フラッシュメモリは、ストレージデバイスへの用途として(ハードディスクの代わりになるものとして)開発された不揮発性メモリである。このＮＡＮＤ型フラッシュメモリは、ランダムアクセスを行なうことができず、書込みと読出しはページ単位で、消去はブロック単位で行なわれる。又、データの上書きができないので、データを書込むときは、消去されている領域にデータの書込みが行なわれる。
【００２８】
ＮＡＮＤ型フラッシュメモリは、このような特徴を有するため、通常、データの書替を行なう場合には、ブロック消去されている消去済ブロックに新たなデータ（書替後のデータ）を書込み、古いデータ（書替前のデータ）が書込まれていたブロックを消去するという処理を行なっている。
【００２９】
このようなデータの書替を行なった場合、書替後のデータは、書替前と異なるブロックに書込まれるため、ホストシステム４側から与えられる論理アドレスと、フラッシュメモリ２内での物理アドレスとの対応関係は、データを書替える毎に動的に変化する。従って、フラッシュメモリ２にアクセスするときには、通常、論理アドレスと物理アドレスとの対応関係を示したアドレス変換テーブルが作成され、このアドレス変換テーブルを用いて、フラッシュメモリ２に対するアクセスが行なわれる。
【００３０】
図２は、ブロックとページの関係を示す説明図である。
上記ブロックとページの構成は、フラッシュメモリ２の仕様によって異なるが、一般的なフラッシュメモリ２では、図２（ａ）に示したように、１ブロックが３２ページ（Ｐ０〜Ｐ３１）で構成され、各ページが５１２バイトのユーザー領域と１６バイトの冗長領域で構成されている。又、記憶容量の増加に伴い、図２（ｂ）に示したように、１ブロックが６４ページ（Ｐ０〜Ｐ６３）で構成され、各ページが２０４８バイトのユーザー領域と６４バイトの冗長領域で構成されているものも提供されている。
【００３１】
ここで、ユーザー領域は、主に、ホストシステム４から供給されるデ―タが記憶される領域であり、冗長領域は、誤り訂正符号、対応論理アドレス情報及びブロックステータス等の付加データが記憶される領域である。誤り訂正符号は、ユーザー領域に記憶されているデータに含まれる誤りを検出、訂正するための付加データであり、後述するＥＣＣブロックによって生成される。
【００３２】
対応論理アドレス情報は、物理ブロックにデータが記憶されている場合に書込まれ、その物理ブロックに記憶されているデータの論理アドレスに関する情報を示している。尚、物理ブロックにデータが記憶されていない場合は、対応論理アドレス情報が書込まれないので、対応論理アドレス情報が書込まれているか否かで、そのブロックが消去済ブロックであるか否かを判断することができる。つまり、対応論理ブロックアドレスが書込まれていない場合は、消去済ブロックであると判断される。
【００３３】
ブロックステータスは、その物理ブロックが不良ブロック（正常にデータの書込み等を行なうことができない物理ブロック）であるか否かを示すフラグであり、その物理ブロックが不良ブロックであると判断された場合には、不良ブロックであることを示すフラグが設定される。
【００３４】
次に、フラッシュメモリ２の、回路構成について説明する。
一般的なＮＡＮＤ型フラッシュメモリは、書込みデータ若しくは読出しデータを保持するためのレジスタと、データを記憶するメモリセルアレイによって構成されている。メモリセルアレイは、複数のメモリセルが直列に接続されたメモリセル群を複数備えており、ワード線によって、メモリセル群の特定のメモリセルが選択される。このワード線によって選択されたメモリセルとレジスタの間で、データの複写（レジスタからメモリセルへの複写、若しくはメモリセルからレジスタへの複写）が行なわれる。
【００３５】
メモリセルアレイを構成するメモリセルは、２つのゲートを備えたＭＯＳトランジスタで構成されている。ここで、上側のゲートはコントロールゲートと、下側のゲートはフローティングゲートと呼ばれており、フローティングゲートに電荷（電子）を注入したり、フローティングゲートから電荷（電子）を排出したりすることによって、データの書込みや消去を行っている。
【００３６】
フローティングゲートは、周囲を絶縁体で囲まれているので、注入された電子は長期間にわたって保持される。フローティングゲートに電子を注入するときは、コントロールゲートが高電位側となる高電圧を印加して電子を注入し、フローティングゲートから電子を排出するときは、コントロールゲートが低電位側となる高電圧を印加して電子を排出する。フローティングゲートに電子が注入されている状態（書込状態）が、論理値"０"のデータに対応し、フローティングゲートから電子が排出されている状態（消去状態）が、論理値"１"のデータに対応する。
【００３７】
［メモリコントローラ３の説明］
メモリコントローラ３は、ホストインターフェース制御ブロック５と、マイクロプロセッサ６と、ホストインターフェースブロック７と、ワークエリア８と、バッファ９と、フラッシュメモリインターフェースブロック１０と、ＥＣＣ（エラー・コレクション・コード）ブロック１１と、フラッシュメモリシーケンサブロック１２とから構成される。
【００３８】
これら機能ブロックによって構成されるメモリコントローラ３は、一つの半導体チップ上に集積されている。以下に、各機能ブロックの機能を説明する。
マイクロプロセッサ６は、メモリコントローラ３を構成する各機能ブロック全体の、動作を制御する機能ブロックである。
【００３９】
ホストインターフェース制御ブロック５は、ホストインターフェースブロック７の動作を制御する機能ブロックである。ここで、ホストインターフェース制御ブロック５は、ホストインターフェースブロック７の動作を設定する動作設定レジスタ（図示せず）を備えており、この動作設定レジスタに基づいて、ホストインターフェースブロック７は動作する。
【００４０】
ホストインターフェースブロック７は、ホストシステム４とデータ、アドレス情報、ステータス情報及び外部コマンド情報の授受を行なう機能ブロックである。すなわち、フラッシュメモリシステム１がホストシステム４に装着されると、フラッシュメモリシステム１とホストシステム４とは、外部バス１３を介して相互に接続され、かかる状態において、ホストシステム４よりフラッシュメモリシステム１に供給されるデータ等は、ホストインターフェースブロック７を入口として、メモリコントローラ３の内部に取り込まれ、フラッシュメモリシステム１からホストシステム４に供給されるデータ等は、ホストインターフェースブロック７を出口として、ホストシステム４に供給される。
ホストインターフェースブロック７は、ホストシステム４より供給される論理アドレス、セクタ数及び外部コマンドを保持するレジスタや、エラーが発生した場合にセットされるエラーレジスタ（図示せず）等を有している。
【００４１】
ワークエリア８は、フラッシュメモリ２の制御に必要なデータが一時的に格納される作業領域であり、複数のＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）セルによって構成されている。
【００４２】
バッファ９は、フラッシュメモリ２から読出したデータ及びフラッシュメモリ２に書込むデータを、一時的に保持する機能ブロックである。すなわち、フラッシュメモリ２から読出したデータは、ホストシステム４の受取準備ができるまで、バッファ９に保持され、フラッシュメモリ２に書込むデータは、フラッシュメモリ２の書込準備ができるまで、バッファ９に保持される。
【００４３】
フラッシュメモリシーケンサブロック１２は、内部コマンドに基づいて、フラッシュメモリ２の動作を制御する機能ブロックである。フラッシュメモリシーケンサブロック１２は、複数のレジスタ（図示せず）を備え、この複数のレジスタに内部コマンドを実行する際に必要な情報が設定される。この複数のレジスタに、内部コマンドを実行する際に必要な情報が設定されると、フラッシュメモリシーケンサブロック１２は、その情報に基づいて処理を実行する。
【００４４】
前述の「内部コマンド」とは、メモリコントローラ３からフラッシュメモリ２に与えられるコマンドであり、ホストシステム４からフラッシュメモリシステム１に与えられるコマンドである「外部コマンド」と区別される。
【００４５】
フラッシュメモリインターフェースブロック１０は、内部バス１４を介して、フラッシュメモリ２とデータ、アドレス情報、ステータス情報、内部コマンド情報及びデバイスＩＤ情報等の授受を行なう機能ブロックである。
【００４６】
ＥＣＣブロック１１は、フラッシュメモリ２に書込むデ―タに付加される誤り訂正符号を生成するとともに、読出しデータに付加されている誤り訂正符号に基づいて、読出したデータに含まれる誤りを検出・訂正する機能ブロックである。
【００４７】
ここで、ＥＣＣブロック１１について詳細に説明する。
図３は、書込み処理におけるＥＣＣブロックの動作を説明するための説明図である。
図４及び図５は、読出し処理におけるＥＣＣブロックの動作を説明するための図面である。
【００４８】
ＥＣＣブロック１１は、ＥＣＣレジスタ２２と管理データレジスタ２３と誤り訂正符号・復号器２４とマスク回路２５とを備えている。
ＥＣＣレジスタ２２は、フラッシュメモリ２の冗長領域から読み出した誤り訂正符号を一時的に保持する。管理データレジスタ２３は、フラッシュメモリ２の冗長領域に書込む管理データ、又はフラッシュメモリ２の冗長領域から読み出した管理データを一時的に保持する。誤り訂正符号・復号器２４は、書込み処理のときに、書込みデータに基づいて誤り訂正符号を生成し、読出し処理のときに、誤り訂正符号に基づいて読出しデータの誤りを検出、訂正する。マスク回路２５は、入力された誤り訂正符号に対して予め設定されている第１の変換処理及び第２の変換処理を施す。フラッシュメモリ２には、ユーザーデータ、管理データ（ＭＮＧ）及び誤り訂正符号（ＥＣＣ−Ｍ）が書込まれる。
以下に、１０ビットを１シンボルとし、４シンボルの誤り訂正、５シンボルの誤り検出能力を持つリードソロモン符号を例にとり、ＥＣＣブロック１１の動作を説明する。
【００４９】
まず、書込み処理におけるＥＣＣブロック１１の動作を説明する（図３参照）。
ホストシステム４から供給された５１２バイト（４０９６ビット）の書込みデータ（ユーザーデータ）は、バッファ９に一時的に保持された後、フラッシュメモリ２及び誤り訂正符号・復号器２４に転送される。フラッシュメモリ２に転送された５１２バイト（４０９６ビット）の書込みデータは、フラッシュメモリ２のユーザー領域に書込まれる。
【００５０】
誤り訂正符号・復号器２４に転送された５１２バイト（４０９６ビット）の書込みデータには、４ビットのダミーデータが付加される。誤り訂正符号・復号器２４は、４ビットのダミーデータが付加された４１００ビットの書込みデータに対する誤り訂正符号を生成する。生成された８０ビットの誤り訂正符号には、マスク回路２５で第１の変換処理が施され、第１の変換処理が施された誤り訂正符号（ＥＣＣ−Ｍ）が、フラッシュメモリ２の冗長領域に書込まれる。
【００５１】
誤り訂正符号・復号器２４は、４１８シンボルに対して、５シンボルの誤り検出と、４シンボルの誤り訂正が可能なリードソロモン符号を使用している。ここで、１シンボルは１０ビットに対応し、４１８シンボルのうち４１０シンボルは、書込みデータに割当てられ、８シンボルは誤り訂正符号に割当てられる。
【００５２】
書込みデータに割当てられた４１０シンボルは、４１００ビットに対応するため、誤り訂正符号・復号器２４に転送する５１２バイト（４０９６ビット）の書込みデータ（ユーザデータ）に、４ビットのダミーデータを付加している。このダミーデータの論理値については、適宜設定すればよい。
【００５３】
マスク回路２５では、フラッシュメモリ２のユーザー領域に書込まれる４０９６ビットのビットデータが、全て消去状態（論理値の"１"）のときに、第１の変換処理が施された後の８０ビットのビットデータが、全て消去状態（論理値の"１"）になるような変換処理が施される。リードソロモン符号を用いた場合、４０９６ビットのビットデータが、全て論理値の"１"のときに、誤り訂正符号・復号器２４で生成される８０ビットのビットデータが、全て論理値の"１"になることはないが、マスク回路２５で施される第１の変換処理を適宜設定すれば、第１の変換処理を施した後の誤り訂正符号のビットデータを、全て論理値の"１"に対応させることができる。
【００５４】
尚、ダミーデータの設定によって、誤り訂正符号・復号器２４で生成される誤り訂正符号は変わるが、４ビットのダミーデータをどのように設定しても、８０ビットのビットデータが、全て論理値の"１"になることはない。
【００５５】
次に、図４を参照して、読出し処理におけるＥＣＣブロック１１の動作を説明する。
フラッシュメモリ２のユーザー領域から読み出されたユーザーデータは、バッファ９に保持されると共に、誤り訂正符号・復号器２４にも入力される。誤り訂正符号・復号器２４に入力される４０９６ビットのビットデータには、書込み処理の場合と同様に４ビットのダミーデータが付加される。一方、冗長領域から読み出された誤り訂正符号（ＥＣＣ−Ｍ）は、マスク回路２５で、第２の変換処理が施された後、ＥＣＣレジスタ２２に保持されると共に、誤り訂正符号・復号器２４にも入力される。第２の変換処理では、冗長領域から読み出された誤り訂正符号を、第１の変換処理を施す前の誤り訂正符号に戻すような変換処理が行われる。つまり、書込み処理のときに、誤り訂正符号・復号器２４で生成された誤り訂正符号と同じ誤り訂正符号（第１の変換処理を施す前の誤り訂正符号）が、読み出した４０９６ビットのユーザーデータと４ビットのダミーデータに続いて、誤り訂正符号・復号器２４に入力される。
【００５６】
誤り訂正符号・復号器２４では、入力された４０９６ビットのユーザーデータ、４ビットのダミーデータ、及び８０ビットの誤り訂正符号に基づいて、ユーザーデータ及び誤り訂正符号に含まれる誤りの検出が行われ、訂正可能な誤りが検出された場合は、バッファ９に保持されているユーザーデータ、又はＥＣＣレジスタ２２に保持されている誤り訂正符号を訂正する。この際、誤りの検出と訂正は、シンボル（１０ビット）単位で行われる。
【００５７】
図５は、誤り訂正符号・復号器２４が、４１８０ビットのデータを保持することができるデータ保持手段を備えている場合を示している。
この場合、ユーザー領域から読み出されたユーザーデータと、マスク回路２５で第２の変換処理がされた誤り訂正符号は、誤り訂正符号・復号器２４だけに入力され、誤り訂正符号・復号器２４内のデータ保持手段に保持される。
【００５８】
図４の場合と同様に、ユーザーデータ、ダミーデータ、及び誤り訂正符号に基づいた誤りの検出が行われ、訂正可能な誤りが検出された場合は、誤り訂正符号・復号器２４内のデータ保持手段に保持されているユーザーデータや誤り訂正符号が訂正される。その後、ユーザーデータと誤り訂正符号は、バッファ９とＥＣＣレジスタ２２にそれぞれ転送される。
【００５９】
次に、図６〜９を参照して、マスク回路２５の設定方法について説明する。
図６は、第１の変換処理の概要を示す説明図である。
図７は、第２の変換処理の概要を示す説明図である。
マスク回路２５は、マスクデータを出力するマスクデータ出力回路２５ａと、排他的論理和を出力する論理回路２５ｂとで構成されている。
第１の変換処理の場合（図６参照）、誤り訂正符号・復号器２４から出力された誤り訂正符号（ＥＣＣ）が、論理回路２５ｂに入力され、論理回路２５ｂで誤り訂正符号とマスクデータとの排他的論理和の演算処理が行われる。論理回路２５ｂから出力された演算処理後の誤り訂正符号（ＥＣＣ−Ｍ）は、フラッシュメモリ２の冗長領域に書込まれる。
【００６０】
第２の変換処理の場合（図７参照）、フラッシュメモリ２の冗長領域から読み出された誤り訂正符号（ＥＣＣ−Ｍ）が、論理回路２５ｂに入力され、論理回路２５ｂでマスクデータとの排他的論理和の演算処理が行われる。この構成では、第１の変換処理と第２の変換処理で、同じマスクデータが用いられている。同じマスクデータを用いて、第１の変換処理を施した誤り訂正符号（ＥＣＣ−Ｍ）に対して、第２の誤り訂正符号を施すと、第１の変換処理を施す前の誤り訂正符号（ＥＣＣ）が得られる。この第１の変換処理を施す前の誤り訂正符号（ＥＣＣ）は、誤り訂正符号・復号器２４に入力される。
【００６１】
次に、リードソロモン符号を使用した場合のマスクデータについて説明する。
図８は、ＥＣＣシンボルとマスクデータの対応関係を示す図である。
４１８シンボルに対して、５シンボルの誤り検出と、４シンボルの誤り訂正が可能なリードソロモン符号を使用した場合のマスクデータと演算処理前後の誤り訂正符号は、図８のようになる。ここで、誤り訂正符号はシンボル毎に示されており、マスクデータもこれに合わせて１０ビット毎に示している。例示されている８シンボルの誤り訂正符号は、ユーザーデータとして与えられる４０９６ビットのビットデータが、全て消去状態（論理値の"１"）のときの誤り訂正符号であり、４ビットのダミーデータは、全て論理値の"０"に設定されている。
【００６２】
誤り訂正符号のシンボルＥＣＣ０〜ＥＣＣ７には、それぞれに設定されたマスクデータとの排他的論理和の演算処理が施される。ＥＣＣ０のシンボル０９４ｈ（１６進数表示）には、マスクデータ３６Ｂｈ（１６進数表示）が割当てられ、ＥＣＣ１のシンボル１Ｂ６ｈ（１６進数表示）には、マスクデータ２４９ｈ（１６進数表示）が割当てられる。ＥＣＣ２のシンボル０ＢＢｈ（１６進数表示）には、マスクデータ３４４ｈ（１６進数表示）が割当てられ、ＥＣＣ３のシンボル０３Ｅｈ（１６進数表示）には、マスクデータ３Ｃ１ｈ（１６進数表示）が割当てられる。ＥＣＣ４のシンボル０Ｂ７ｈ（１６進数表示）には、マスクデータ３４８ｈ（１６進数表示）が割当てられ、ＥＣＣ５のシンボル２９７ｈ（１６進数表示）には、マスクデータ１６８ｈ（１６進数表示）が割当てられる。ＥＣＣ６のシンボル１５３ｈ（１６進数表示）には、マスクデータ２ＡＣｈ（１６進数表示）が割当てられ、ＥＣＣ７のシンボル２Ｄ４ｈ（１６進数表示）には、マスクデータ１２Ｂｈ（１６進数表示）が割当てられる。
【００６３】
図９は、排他的論理和の演算処理を説明するための図であり、ＥＣＣのシンボルとマスタデータと演算処理後のシンボルとを２進数で示している。
ＥＣＣ０のシンボル０９４ｈ（１６進数表示）、ＥＣＣ０に割当てられたマスクデータ３６Ｂｈ（１６進数表示）、及びこれらの演算処理後のシンボル（ＥＣＣ−Ｍ）を２進数で示すと、図９のようになる。排他的論理和の演算処理では、誤り訂正符号のシンボルとマスクデータが、ビット毎に比較され、論理値が等しいときは、論理値の"０"が出力され、論理値が異なるときは、論理値の"１"が出力される。
【００６４】
０９４ｈ（１６進数表示）と３６Ｂｈ（１６進数表示）は、全てのビットの論理値が異なるので、演算処理後のシンボル（ＥＣＣ−Ｍ）は、３ＦＦｈ（１６進数表示）になる。ＥＣＣ１〜７のシンボルと、これらに割当てられているそれぞれのマスクデータも、対応するビットの論理値が全て異なるので、演算処理後のシンボル（ＥＣＣ−Ｍ）は、上記と同様に全て３ＦＦｈ（１６進数表示）になる。
【００６５】
図１０は、排他的論理和の演算処理を説明するための図であり、演算処理後のシンボルとマスタデータとＥＣＣのシンボルとを２進数で示している。
第２の変換処理、つまり、ＥＣＣ０に割当てられたマスクデータ３６Ｂｈ（１６進数表示）と演算処理後のシンボル（ＥＣＣ−Ｍ）３ＦＦｈ（１６進数表示）との排他的論理和の演算処理を行った場合、ＥＣＣ０のシンボル０９４ｈ（１６進数表示）が得られる。つまり、演算処理後のシンボル（ＥＣＣ−Ｍ）とマスクデータとの排他的論理和の演算処理を行った場合には、演算処理前のシンボル（ＥＣＣ）が得られる。
【００６６】
尚、書込み処理のときに、誤り訂正符号・復号器２４から出力される誤り訂正符号に対して施される第１の変換処理は、ユーザーデータのビットデータが、全て消去状態（論理値の"１"）のときに、変換処理後の誤り訂正符号のビットデータが、全て消去状態（論理値の"１"）になるような変換処理であれば、特に限定されることはない。又、読出し処理のときに、フラッシュメモリ２から読み出された誤り訂正符号に対して施される第２の変換処理は、第１の変換処理を施す前の誤り訂正符号を得ることができる変換処理であれば、特に限定されることはない。
【図面の簡単な説明】
【００６７】
【図１】本発明の実施形態に係るフラッシュメモリシステムのブロック図である。
【図２】フラッシュメモリのブロックとページの構成を示す図である。
【図３】ＥＣＣブロックの処理を説明するためのブロック図である。
【図４】ＥＣＣブロックの処理を説明するためのブロック図である。
【図５】ＥＣＣブロックの処理を説明するためのブロック図である。
【図６】第１の変換処理の概要を示す説明図である。
【図７】第２の変換処理の概要を示す説明図である。
【図８】ＥＣＣシンボルとマスクデータの対応関係を示す図である。
【図９】排他的論理和の演算処理を説明するための図である。
【図１０】排他的論理和の演算処理を説明するための図である。
【符号の説明】
【００６８】
１  フラッシュメモリシステム
２  フラッシュメモリ
３  メモリコントローラ
４  ホストシステム
５  ホストインターフェース制御ブロック
６  マイクロプロセッサ
７  ホストインターフェースブロック
８  ワークエリア
９  バッファ
１０  フラッシュメモリインターフェースブロック
１１  ＥＣＣブロック
１２  フラッシュメモリシーケンサブロック
１３  外部バス
１４  内部バス
２２  ＥＣＣレジスタ
２３  管理データレジスタ
２４  誤り訂正符号・復号器
２５  マスク回路
２５ａ  マスクデータ出力回路
２５ｂ  論理回路
【図１】
2006127441.tif 000003
【図２】
2006127441.tif 000004
【図３】
2006127441.tif 000005
【図４】
2006127441.tif 000006
【図５】
2006127441.tif 000007
【図６】
2006127441.tif 000008
【図７】
2006127441.tif 000009
【図８】
2006127441.tif 000010
【図９】
2006127441.tif 000011
【図１０】
2006127441.tif 000012