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

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

Info

Publication number
JP2006127441A
JP2006127441A JP2004345597A JP2004345597A JP2006127441A JP 2006127441 A JP2006127441 A JP 2006127441A JP 2004345597 A JP2004345597 A JP 2004345597A JP 2004345597 A JP2004345597 A JP 2004345597A JP 2006127441 A JP2006127441 A JP 2006127441A
Authority
JP
Japan
Prior art keywords
error correction
correction code
data
flash memory
conversion process
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.)
Pending
Application number
JP2004345597A
Other languages
English (en)
Inventor
Hidetomo Hasegawa
英知 長谷川
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 JP2004345597A priority Critical patent/JP2006127441A/ja
Publication of JP2006127441A publication Critical patent/JP2006127441A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】 ユーザー領域と冗長領域の双方に、消去状態に対応するデータが書込まれている場合の、ユーザーデータと誤り訂正符号との不整合を解消する。
【解決手段】 ユーザー領域に書込まれるユーザーデータに基づいて生成された誤り訂正符号に対してマスク回路25が第1の変換処理を施し、第1の変換処理が施された誤り訂正符号をフラッシュメモリ2の冗長領域に書込む。この第1の変換処理では、ユーザーデータのビットデータが、全て消去状態(論理値の"1")のときに、変換処理後の誤り訂正符号のビットデータが、全て消去状態(論理値の"1")になるような変換が行われる。読み出したユーザーデータに含まれる誤りを検出、訂正する場合には、第1の変換処理を施す前の誤り訂正符号に戻す第2の変換処理を施すことにより得られた誤り訂正符号が使用される。
【選択図】図3

Description

本発明は、メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法に関する。
近年、メモリーカードやシリコンディスクといったメモリシステムにて使用される半導体メモリに、フラッシュメモリが広く採用されている。フラッシュメモリは、不揮発性メモリの一種である。フラッシュメモリに格納されたデータは、電力が供給されていないときでも保持されていることが要求される。
NAND型フラッシュメモリは、上記のメモリシステムで特に多く用いられるフラッシュメモリの一種である。NAND型フラッシュメモリに含まれている複数のメモリセルのそれぞれは、他のメモリセルとは独立して、論理値"1"を示すデータが格納されている消去状態から、論理値"0"を示すデータが格納されている書込状態へと変化することができる。これとは対照的に、書込状態から消去状態へと変化するときには、各メモリセルは他のメモリセルと独立して変化することができない。このときには、ブロックと称される予め定められた数のメモリセルが、全て同時に消去状態になる。この一括消去動作は、一般的に、"ブロック消去"と称されている。
NAND型フラッシュメモリに対する書込処理若しくは読出処理は、ページと称される予め定められた数のメモリセル単位で処理が行なわれる。消去処理の単位であるブロックは複数のページで構成されている。
NAND型フラッシュメモリに対する書込み処理では、まず、書込みデータがNAND型フラッシュメモリ内のレジスタに転送され、レジスタに保持された書込みデータがメモリセルアレイに複写される。この複写(書込み)処理で、メモリセルを消去状態から書込状態に変化させる場合、コントロールゲートに高電圧が印加され、フローティングゲートに電子が注入される。このような処理により、メモリセルアレイにデータが書込まれるため、NAND型フラッシュメモリに対する書込み処理では、書込みエラーが発生することがある。
書込みエラー等に起因する読出しデータの誤りは、通常、各ページの冗長領域に書込まれている誤り訂正符号に基づいて検出、訂正が行われる。この誤り訂正符号は、書込み処理のときに、各ページのユーザー領域に書込まれるデータに基づいて生成され、各ページの冗長領域に書込まれる。
データの誤りを検出、訂正するための誤り訂正符号としては、リードソロモン符号、BCH符号、ハミング符号等が知られている。ハミング符号は、誤りの訂正能力が高くないが、ユーザー領域に書込む書込みデータの全てのビットデータが論理値"1"(消去状態)のときに、この書込みデータに基づいて生成される誤り訂正符号の全てのビットデータが、論理値"1"(消去状態)に一致するので、NAND型フラッシュメモリの誤り訂正符号として使用されることが多い。
一方、リードソロモン符号を誤り訂正符号として用いた場合、誤りの訂正能力は高くなるが、書込みデータの全てのビットデータが論理値"1"(消去状態)のときに、この書込みデータに基づいて生成される誤り訂正符号の全てのビットデータが、論理値"1"(消去状態)に一致しない。従って、NAND型フラッシュメモリの誤り訂正符号として、リードソロモン符号を使用する場合には、この不整合を解消する処理が必要になる。
上記不整合を解消するため、下記特許文献1では、書込み処理のときに、書込みデータと消去状態のデータとを比較し、両データが一致した場合には、書込みデータに基づいて生成された誤り訂正符号を、冗長領域に書込まないようにしている。一方、読出し処理のときは、読出しデータと消去状態のデータとを比較し、両データが一致した場合には、読出しデータに対する誤りの検出、訂正を行っていない。
特開2004−71012号公報
特許文献1(特開2004−71012)では、書込みデータが消去状態のデータと一致する場合には、誤り訂正符号が冗長領域に書込まれず、読出しデータが消去状態のデータと一致する場合には、読出しデータに対する誤りの検出、訂正を行っていない。従って、読出しエラーが発生したために、読出しデータと消去状態のデータが一致してしまった場合には、誤りの検出、訂正が行われないという問題が発生する。
そこで、本発明は、消去状態のデータに基づいて生成される誤り訂正符号が、消去状態のデータと一致しないという不整合を解消すると共に、全ての読出しデータに対して誤りの検出、訂正をすることができるメモリコントローラ及びそのメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法を提供することを目的とする。
上記目的を達成するために、本発明の第1の観点に係るメモリコントローラは、
データの書込み及び読み出しがページ単位で行われ、データの消去が複数ページからなるブロック単位で行われるフラッシュメモリにアクセスするメモリコントローラであって、
前記フラッシュメモリの各ページのユーザー領域にデータを書込むデータ書込み手段と、
前記ユーザー領域に書込まれるデータに対する誤り訂正符号を生成する誤り訂正符号生成手段と、
前記誤り訂正符号に対して、第1の変換処理を施す第1の変換処理手段と
前記第1の変換処理が施された前記誤り訂正符号を、前記ユーザー領域と対応する冗長領域に書込む訂正符号書込み手段とを備え、
前記第1の変換処理手段の行う前記第1の変換処理は、前記ユーザー領域に書込まれるデータの全てのビットデータが前記フラッシュメモリにおける消去状態と一致するときに、当該第1の変換処理が施された後の前記誤り訂正符号の全てのビットデータを、前記フラッシュメモリにおける消去状態に一致させることを特徴とする。
このような構成を採用したことにより、ユーザー領域に書き込むデータに対する誤り訂正符号が誤り訂正符号生成手段により生成される。誤り訂正符号は、第1の変換処理が施されて冗長領域に書き込まれる。ここで、第1の変換処理により、ユーザー領域に書込まれるデータの全てのビットデータがフラッシュメモリにおける消去状態と一致するときに、誤り訂正符号の全てのビットデータが、フラッシュメモリにおける消去状態に一致するように変換される。よって、ユーザー領域に書き込まれたデータと整合するようになる。また、第1の変換処理が施された誤り訂正符号を処理前の誤り訂正符号に復元して用いることにより、データの誤り検出及び訂正を実施できる。
なお、前記第1の変換処理手段は、前記誤り訂正符号生成手段が生成した誤り訂正符号と予め設定されたマスクデータとの排他的論理和をとる手段を備えてもよい。
また、前記ユーザー領域に書込まれているデータを読み出すデータ読出し手段と、
前記冗長領域に書込まれている前記第1の変換処理が施された誤り訂正符号を読み出す誤り訂正符号読出し手段と、
前記誤り訂正符号読出し手段が読出した前記第1の変換処理が施された誤り訂正符号に対して、第2の変換処理を施す第2の変換処理手段と、
前記第2の変換処理が施された前記誤り訂正符号に基づいて前記ユーザー領域から読み出したデータに含まれる誤りを検出、訂正する誤り検出訂正手段とを備え、
前記第2の変換処理手段の行う前記第2の変換処理は、前記第1の変換処理が施された前記誤り訂正符号を、前記第1の変換処理を施す前の前記誤り訂正符号にしてもよい。
この場合、前記第2の変換処理手段は、前記誤り訂正符号読出し手段が読出した前記第1の変換処理が施された誤り訂正符号と予め設定されたマスクデータとの排他的論理和をとる手段を備えてもよい。
また、前記誤り訂正符号が、リードソロモン符号であってもよい。
上記目的を達成するために、本発明の第2の観点に係るフラッシュメモリシステムは、本発明の第1の観点に係るメモリコントローラと、データの書込み及び読み出しがページ単位で行われ、データの消去が複数ページからなるブロック単位で行われるフラッシュメモリとを備えることを特徴とする。
上記目的を達成するために、本発明の第3の観点に係るフラッシュメモリの制御方法は、
データの書込み及び読み出しがページ単位で行われ、データの消去が複数ページからなるブロック単位で行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
前記フラッシュメモリの各ページのユーザー領域にデータを書込む処理と、
前記ユーザー領域に書込まれるデータに対する誤り訂正符号を生成する処理と、
前記誤り訂正符号に対して第1の変換処理を施す処理と
前記第1の変換処理が施された前記誤り訂正符号を、前記ユーザー領域と対応する冗長領域に書込む処理とを含み、
前記第1の変換処理では、前記ユーザー領域に書込まれるデータの全てのビットデータが前記フラッシュメモリにおける消去状態と一致するときに、当該第1の変換処理が施された後の前記誤り訂正符号の全てのビットデータを、前記フラッシュメモリにおける消去状態に一致させることを特徴とする。
なお、前記第1の変換処理は、前記生成された誤り訂正符号と予め設定されたマスクデータとの排他的論理和をとってもよい。
また、前記ユーザー領域に書込まれているデータを読み出す処理と、
前記冗長領域に書込まれている前記第1の変換処理が施された誤り訂正符号を読み出す処理と、
前記冗長領域から読み出した前記第1の変換処理が施された誤り訂正符号に対して、第2の変換処理を施す処理と、
前記第2の変換処理が施された前記誤り訂正符号に基づいて前記ユーザー領域から読み出したデータに含まれる誤りを検出、訂正する処理とを含み、
前記第2の変換処理では、前記第1の変換処理が施された前記誤り訂正符号を、前記第1の変換処理を施す前の前記誤り訂正符号に戻してもよい。
この場合、前記第2の変換処理手段は、前記読出された前記第1の変換処理が施された誤り訂正符号と予め設定されたマスクデータとの排他的論理和をとってもよい。
また、前記誤り訂正符号が、リードソロモン符号であってもよい。
本発明によれば、ユーザー領域に書込まれるユーザーデータに基づいて生成された誤り訂正符号に対して、変換処理を施すことにより、ユーザー領域と冗長領域の双方に消去状態に対応するデータが書込まれている場合の、ユーザーデータと誤り訂正符号との不整合を解消している。このような構成にしたことにより、符号化方式を選択する際の自由度が広がり、リードソロモン符号等の訂正能力の高い符号化方式を採用することができる。又、ユーザー領域に書込まれるユーザーデータに依存することなく、常に同様な誤りの訂正が行われる。
以下、図面に基づき、本発明の実施の形態について詳細に説明する。
図1は、フラッシュメモリシステム1を、概略的に示すブロック図である。
図1に示したように、フラッシュメモリシステム1は、フラッシュメモリ2と、それを制御するメモリコントローラ3で構成されている。又、フラッシュメモリシステム1は、通常、ホストシステム4に着脱可能に装着され、ホストシステム4に対して、一種の外部記憶装置として用いられる。
尚、ホストシステム4としては、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置が挙げられる。
以下に、フラッシュメモリ2及びメモリコントローラ3の詳細を説明する。
[フラッシュメモリ2の説明]
このフラッシュメモリシステム1において、データが記憶されるフラッシュメモリ2は、NAND型フラッシュメモリで構成されている。NAND型フラッシュメモリは、ストレージデバイスへの用途として(ハードディスクの代わりになるものとして)開発された不揮発性メモリである。このNAND型フラッシュメモリは、ランダムアクセスを行なうことができず、書込みと読出しはページ単位で、消去はブロック単位で行なわれる。又、データの上書きができないので、データを書込むときは、消去されている領域にデータの書込みが行なわれる。
NAND型フラッシュメモリは、このような特徴を有するため、通常、データの書替を行なう場合には、ブロック消去されている消去済ブロックに新たなデータ(書替後のデータ)を書込み、古いデータ(書替前のデータ)が書込まれていたブロックを消去するという処理を行なっている。
このようなデータの書替を行なった場合、書替後のデータは、書替前と異なるブロックに書込まれるため、ホストシステム4側から与えられる論理アドレスと、フラッシュメモリ2内での物理アドレスとの対応関係は、データを書替える毎に動的に変化する。従って、フラッシュメモリ2にアクセスするときには、通常、論理アドレスと物理アドレスとの対応関係を示したアドレス変換テーブルが作成され、このアドレス変換テーブルを用いて、フラッシュメモリ2に対するアクセスが行なわれる。
図2は、ブロックとページの関係を示す説明図である。
上記ブロックとページの構成は、フラッシュメモリ2の仕様によって異なるが、一般的なフラッシュメモリ2では、図2(a)に示したように、1ブロックが32ページ(P0〜P31)で構成され、各ページが512バイトのユーザー領域と16バイトの冗長領域で構成されている。又、記憶容量の増加に伴い、図2(b)に示したように、1ブロックが64ページ(P0〜P63)で構成され、各ページが2048バイトのユーザー領域と64バイトの冗長領域で構成されているものも提供されている。
ここで、ユーザー領域は、主に、ホストシステム4から供給されるデ―タが記憶される領域であり、冗長領域は、誤り訂正符号、対応論理アドレス情報及びブロックステータス等の付加データが記憶される領域である。誤り訂正符号は、ユーザー領域に記憶されているデータに含まれる誤りを検出、訂正するための付加データであり、後述するECCブロックによって生成される。
対応論理アドレス情報は、物理ブロックにデータが記憶されている場合に書込まれ、その物理ブロックに記憶されているデータの論理アドレスに関する情報を示している。尚、物理ブロックにデータが記憶されていない場合は、対応論理アドレス情報が書込まれないので、対応論理アドレス情報が書込まれているか否かで、そのブロックが消去済ブロックであるか否かを判断することができる。つまり、対応論理ブロックアドレスが書込まれていない場合は、消去済ブロックであると判断される。
ブロックステータスは、その物理ブロックが不良ブロック(正常にデータの書込み等を行なうことができない物理ブロック)であるか否かを示すフラグであり、その物理ブロックが不良ブロックであると判断された場合には、不良ブロックであることを示すフラグが設定される。
次に、フラッシュメモリ2の、回路構成について説明する。
一般的なNAND型フラッシュメモリは、書込みデータ若しくは読出しデータを保持するためのレジスタと、データを記憶するメモリセルアレイによって構成されている。メモリセルアレイは、複数のメモリセルが直列に接続されたメモリセル群を複数備えており、ワード線によって、メモリセル群の特定のメモリセルが選択される。このワード線によって選択されたメモリセルとレジスタの間で、データの複写(レジスタからメモリセルへの複写、若しくはメモリセルからレジスタへの複写)が行なわれる。
メモリセルアレイを構成するメモリセルは、2つのゲートを備えたMOSトランジスタで構成されている。ここで、上側のゲートはコントロールゲートと、下側のゲートはフローティングゲートと呼ばれており、フローティングゲートに電荷(電子)を注入したり、フローティングゲートから電荷(電子)を排出したりすることによって、データの書込みや消去を行っている。
フローティングゲートは、周囲を絶縁体で囲まれているので、注入された電子は長期間にわたって保持される。フローティングゲートに電子を注入するときは、コントロールゲートが高電位側となる高電圧を印加して電子を注入し、フローティングゲートから電子を排出するときは、コントロールゲートが低電位側となる高電圧を印加して電子を排出する。フローティングゲートに電子が注入されている状態(書込状態)が、論理値"0"のデータに対応し、フローティングゲートから電子が排出されている状態(消去状態)が、論理値"1"のデータに対応する。
[メモリコントローラ3の説明]
メモリコントローラ3は、ホストインターフェース制御ブロック5と、マイクロプロセッサ6と、ホストインターフェースブロック7と、ワークエリア8と、バッファ9と、フラッシュメモリインターフェースブロック10と、ECC(エラー・コレクション・コード)ブロック11と、フラッシュメモリシーケンサブロック12とから構成される。
これら機能ブロックによって構成されるメモリコントローラ3は、一つの半導体チップ上に集積されている。以下に、各機能ブロックの機能を説明する。
マイクロプロセッサ6は、メモリコントローラ3を構成する各機能ブロック全体の、動作を制御する機能ブロックである。
ホストインターフェース制御ブロック5は、ホストインターフェースブロック7の動作を制御する機能ブロックである。ここで、ホストインターフェース制御ブロック5は、ホストインターフェースブロック7の動作を設定する動作設定レジスタ(図示せず)を備えており、この動作設定レジスタに基づいて、ホストインターフェースブロック7は動作する。
ホストインターフェースブロック7は、ホストシステム4とデータ、アドレス情報、ステータス情報及び外部コマンド情報の授受を行なう機能ブロックである。すなわち、フラッシュメモリシステム1がホストシステム4に装着されると、フラッシュメモリシステム1とホストシステム4とは、外部バス13を介して相互に接続され、かかる状態において、ホストシステム4よりフラッシュメモリシステム1に供給されるデータ等は、ホストインターフェースブロック7を入口として、メモリコントローラ3の内部に取り込まれ、フラッシュメモリシステム1からホストシステム4に供給されるデータ等は、ホストインターフェースブロック7を出口として、ホストシステム4に供給される。
ホストインターフェースブロック7は、ホストシステム4より供給される論理アドレス、セクタ数及び外部コマンドを保持するレジスタや、エラーが発生した場合にセットされるエラーレジスタ(図示せず)等を有している。
ワークエリア8は、フラッシュメモリ2の制御に必要なデータが一時的に格納される作業領域であり、複数のSRAM(Static Random Access Memory)セルによって構成されている。
バッファ9は、フラッシュメモリ2から読出したデータ及びフラッシュメモリ2に書込むデータを、一時的に保持する機能ブロックである。すなわち、フラッシュメモリ2から読出したデータは、ホストシステム4の受取準備ができるまで、バッファ9に保持され、フラッシュメモリ2に書込むデータは、フラッシュメモリ2の書込準備ができるまで、バッファ9に保持される。
フラッシュメモリシーケンサブロック12は、内部コマンドに基づいて、フラッシュメモリ2の動作を制御する機能ブロックである。フラッシュメモリシーケンサブロック12は、複数のレジスタ(図示せず)を備え、この複数のレジスタに内部コマンドを実行する際に必要な情報が設定される。この複数のレジスタに、内部コマンドを実行する際に必要な情報が設定されると、フラッシュメモリシーケンサブロック12は、その情報に基づいて処理を実行する。
前述の「内部コマンド」とは、メモリコントローラ3からフラッシュメモリ2に与えられるコマンドであり、ホストシステム4からフラッシュメモリシステム1に与えられるコマンドである「外部コマンド」と区別される。
フラッシュメモリインターフェースブロック10は、内部バス14を介して、フラッシュメモリ2とデータ、アドレス情報、ステータス情報、内部コマンド情報及びデバイスID情報等の授受を行なう機能ブロックである。
ECCブロック11は、フラッシュメモリ2に書込むデ―タに付加される誤り訂正符号を生成するとともに、読出しデータに付加されている誤り訂正符号に基づいて、読出したデータに含まれる誤りを検出・訂正する機能ブロックである。
ここで、ECCブロック11について詳細に説明する。
図3は、書込み処理におけるECCブロックの動作を説明するための説明図である。
図4及び図5は、読出し処理におけるECCブロックの動作を説明するための図面である。
ECCブロック11は、ECCレジスタ22と管理データレジスタ23と誤り訂正符号・復号器24とマスク回路25とを備えている。
ECCレジスタ22は、フラッシュメモリ2の冗長領域から読み出した誤り訂正符号を一時的に保持する。管理データレジスタ23は、フラッシュメモリ2の冗長領域に書込む管理データ、又はフラッシュメモリ2の冗長領域から読み出した管理データを一時的に保持する。誤り訂正符号・復号器24は、書込み処理のときに、書込みデータに基づいて誤り訂正符号を生成し、読出し処理のときに、誤り訂正符号に基づいて読出しデータの誤りを検出、訂正する。マスク回路25は、入力された誤り訂正符号に対して予め設定されている第1の変換処理及び第2の変換処理を施す。フラッシュメモリ2には、ユーザーデータ、管理データ(MNG)及び誤り訂正符号(ECC−M)が書込まれる。
以下に、10ビットを1シンボルとし、4シンボルの誤り訂正、5シンボルの誤り検出能力を持つリードソロモン符号を例にとり、ECCブロック11の動作を説明する。
まず、書込み処理におけるECCブロック11の動作を説明する(図3参照)。
ホストシステム4から供給された512バイト(4096ビット)の書込みデータ(ユーザーデータ)は、バッファ9に一時的に保持された後、フラッシュメモリ2及び誤り訂正符号・復号器24に転送される。フラッシュメモリ2に転送された512バイト(4096ビット)の書込みデータは、フラッシュメモリ2のユーザー領域に書込まれる。
誤り訂正符号・復号器24に転送された512バイト(4096ビット)の書込みデータには、4ビットのダミーデータが付加される。誤り訂正符号・復号器24は、4ビットのダミーデータが付加された4100ビットの書込みデータに対する誤り訂正符号を生成する。生成された80ビットの誤り訂正符号には、マスク回路25で第1の変換処理が施され、第1の変換処理が施された誤り訂正符号(ECC−M)が、フラッシュメモリ2の冗長領域に書込まれる。
誤り訂正符号・復号器24は、418シンボルに対して、5シンボルの誤り検出と、4シンボルの誤り訂正が可能なリードソロモン符号を使用している。ここで、1シンボルは10ビットに対応し、418シンボルのうち410シンボルは、書込みデータに割当てられ、8シンボルは誤り訂正符号に割当てられる。
書込みデータに割当てられた410シンボルは、4100ビットに対応するため、誤り訂正符号・復号器24に転送する512バイト(4096ビット)の書込みデータ(ユーザデータ)に、4ビットのダミーデータを付加している。このダミーデータの論理値については、適宜設定すればよい。
マスク回路25では、フラッシュメモリ2のユーザー領域に書込まれる4096ビットのビットデータが、全て消去状態(論理値の"1")のときに、第1の変換処理が施された後の80ビットのビットデータが、全て消去状態(論理値の"1")になるような変換処理が施される。リードソロモン符号を用いた場合、4096ビットのビットデータが、全て論理値の"1"のときに、誤り訂正符号・復号器24で生成される80ビットのビットデータが、全て論理値の"1"になることはないが、マスク回路25で施される第1の変換処理を適宜設定すれば、第1の変換処理を施した後の誤り訂正符号のビットデータを、全て論理値の"1"に対応させることができる。
尚、ダミーデータの設定によって、誤り訂正符号・復号器24で生成される誤り訂正符号は変わるが、4ビットのダミーデータをどのように設定しても、80ビットのビットデータが、全て論理値の"1"になることはない。
次に、図4を参照して、読出し処理におけるECCブロック11の動作を説明する。
フラッシュメモリ2のユーザー領域から読み出されたユーザーデータは、バッファ9に保持されると共に、誤り訂正符号・復号器24にも入力される。誤り訂正符号・復号器24に入力される4096ビットのビットデータには、書込み処理の場合と同様に4ビットのダミーデータが付加される。一方、冗長領域から読み出された誤り訂正符号(ECC−M)は、マスク回路25で、第2の変換処理が施された後、ECCレジスタ22に保持されると共に、誤り訂正符号・復号器24にも入力される。第2の変換処理では、冗長領域から読み出された誤り訂正符号を、第1の変換処理を施す前の誤り訂正符号に戻すような変換処理が行われる。つまり、書込み処理のときに、誤り訂正符号・復号器24で生成された誤り訂正符号と同じ誤り訂正符号(第1の変換処理を施す前の誤り訂正符号)が、読み出した4096ビットのユーザーデータと4ビットのダミーデータに続いて、誤り訂正符号・復号器24に入力される。
誤り訂正符号・復号器24では、入力された4096ビットのユーザーデータ、4ビットのダミーデータ、及び80ビットの誤り訂正符号に基づいて、ユーザーデータ及び誤り訂正符号に含まれる誤りの検出が行われ、訂正可能な誤りが検出された場合は、バッファ9に保持されているユーザーデータ、又はECCレジスタ22に保持されている誤り訂正符号を訂正する。この際、誤りの検出と訂正は、シンボル(10ビット)単位で行われる。
図5は、誤り訂正符号・復号器24が、4180ビットのデータを保持することができるデータ保持手段を備えている場合を示している。
この場合、ユーザー領域から読み出されたユーザーデータと、マスク回路25で第2の変換処理がされた誤り訂正符号は、誤り訂正符号・復号器24だけに入力され、誤り訂正符号・復号器24内のデータ保持手段に保持される。
図4の場合と同様に、ユーザーデータ、ダミーデータ、及び誤り訂正符号に基づいた誤りの検出が行われ、訂正可能な誤りが検出された場合は、誤り訂正符号・復号器24内のデータ保持手段に保持されているユーザーデータや誤り訂正符号が訂正される。その後、ユーザーデータと誤り訂正符号は、バッファ9とECCレジスタ22にそれぞれ転送される。
次に、図6〜9を参照して、マスク回路25の設定方法について説明する。
図6は、第1の変換処理の概要を示す説明図である。
図7は、第2の変換処理の概要を示す説明図である。
マスク回路25は、マスクデータを出力するマスクデータ出力回路25aと、排他的論理和を出力する論理回路25bとで構成されている。
第1の変換処理の場合(図6参照)、誤り訂正符号・復号器24から出力された誤り訂正符号(ECC)が、論理回路25bに入力され、論理回路25bで誤り訂正符号とマスクデータとの排他的論理和の演算処理が行われる。論理回路25bから出力された演算処理後の誤り訂正符号(ECC−M)は、フラッシュメモリ2の冗長領域に書込まれる。
第2の変換処理の場合(図7参照)、フラッシュメモリ2の冗長領域から読み出された誤り訂正符号(ECC−M)が、論理回路25bに入力され、論理回路25bでマスクデータとの排他的論理和の演算処理が行われる。この構成では、第1の変換処理と第2の変換処理で、同じマスクデータが用いられている。同じマスクデータを用いて、第1の変換処理を施した誤り訂正符号(ECC−M)に対して、第2の誤り訂正符号を施すと、第1の変換処理を施す前の誤り訂正符号(ECC)が得られる。この第1の変換処理を施す前の誤り訂正符号(ECC)は、誤り訂正符号・復号器24に入力される。
次に、リードソロモン符号を使用した場合のマスクデータについて説明する。
図8は、ECCシンボルとマスクデータの対応関係を示す図である。
418シンボルに対して、5シンボルの誤り検出と、4シンボルの誤り訂正が可能なリードソロモン符号を使用した場合のマスクデータと演算処理前後の誤り訂正符号は、図8のようになる。ここで、誤り訂正符号はシンボル毎に示されており、マスクデータもこれに合わせて10ビット毎に示している。例示されている8シンボルの誤り訂正符号は、ユーザーデータとして与えられる4096ビットのビットデータが、全て消去状態(論理値の"1")のときの誤り訂正符号であり、4ビットのダミーデータは、全て論理値の"0"に設定されている。
誤り訂正符号のシンボルECC0〜ECC7には、それぞれに設定されたマスクデータとの排他的論理和の演算処理が施される。ECC0のシンボル094h(16進数表示)には、マスクデータ36Bh(16進数表示)が割当てられ、ECC1のシンボル1B6h(16進数表示)には、マスクデータ249h(16進数表示)が割当てられる。ECC2のシンボル0BBh(16進数表示)には、マスクデータ344h(16進数表示)が割当てられ、ECC3のシンボル03Eh(16進数表示)には、マスクデータ3C1h(16進数表示)が割当てられる。ECC4のシンボル0B7h(16進数表示)には、マスクデータ348h(16進数表示)が割当てられ、ECC5のシンボル297h(16進数表示)には、マスクデータ168h(16進数表示)が割当てられる。ECC6のシンボル153h(16進数表示)には、マスクデータ2ACh(16進数表示)が割当てられ、ECC7のシンボル2D4h(16進数表示)には、マスクデータ12Bh(16進数表示)が割当てられる。
図9は、排他的論理和の演算処理を説明するための図であり、ECCのシンボルとマスタデータと演算処理後のシンボルとを2進数で示している。
ECC0のシンボル094h(16進数表示)、ECC0に割当てられたマスクデータ36Bh(16進数表示)、及びこれらの演算処理後のシンボル(ECC−M)を2進数で示すと、図9のようになる。排他的論理和の演算処理では、誤り訂正符号のシンボルとマスクデータが、ビット毎に比較され、論理値が等しいときは、論理値の"0"が出力され、論理値が異なるときは、論理値の"1"が出力される。
094h(16進数表示)と36Bh(16進数表示)は、全てのビットの論理値が異なるので、演算処理後のシンボル(ECC−M)は、3FFh(16進数表示)になる。ECC1〜7のシンボルと、これらに割当てられているそれぞれのマスクデータも、対応するビットの論理値が全て異なるので、演算処理後のシンボル(ECC−M)は、上記と同様に全て3FFh(16進数表示)になる。
図10は、排他的論理和の演算処理を説明するための図であり、演算処理後のシンボルとマスタデータとECCのシンボルとを2進数で示している。
第2の変換処理、つまり、ECC0に割当てられたマスクデータ36Bh(16進数表示)と演算処理後のシンボル(ECC−M)3FFh(16進数表示)との排他的論理和の演算処理を行った場合、ECC0のシンボル094h(16進数表示)が得られる。つまり、演算処理後のシンボル(ECC−M)とマスクデータとの排他的論理和の演算処理を行った場合には、演算処理前のシンボル(ECC)が得られる。
尚、書込み処理のときに、誤り訂正符号・復号器24から出力される誤り訂正符号に対して施される第1の変換処理は、ユーザーデータのビットデータが、全て消去状態(論理値の"1")のときに、変換処理後の誤り訂正符号のビットデータが、全て消去状態(論理値の"1")になるような変換処理であれば、特に限定されることはない。又、読出し処理のときに、フラッシュメモリ2から読み出された誤り訂正符号に対して施される第2の変換処理は、第1の変換処理を施す前の誤り訂正符号を得ることができる変換処理であれば、特に限定されることはない。
本発明の実施形態に係るフラッシュメモリシステムのブロック図である。 フラッシュメモリのブロックとページの構成を示す図である。 ECCブロックの処理を説明するためのブロック図である。 ECCブロックの処理を説明するためのブロック図である。 ECCブロックの処理を説明するためのブロック図である。 第1の変換処理の概要を示す説明図である。 第2の変換処理の概要を示す説明図である。 ECCシンボルとマスクデータの対応関係を示す図である。 排他的論理和の演算処理を説明するための図である。 排他的論理和の演算処理を説明するための図である。
符号の説明
1 フラッシュメモリシステム
2 フラッシュメモリ
3 メモリコントローラ
4 ホストシステム
5 ホストインターフェース制御ブロック
6 マイクロプロセッサ
7 ホストインターフェースブロック
8 ワークエリア
9 バッファ
10 フラッシュメモリインターフェースブロック
11 ECCブロック
12 フラッシュメモリシーケンサブロック
13 外部バス
14 内部バス
22 ECCレジスタ
23 管理データレジスタ
24 誤り訂正符号・復号器
25 マスク回路
25a マスクデータ出力回路
25b 論理回路

Claims (11)

  1. データの書込み及び読み出しがページ単位で行われ、データの消去が複数ページからなるブロック単位で行われるフラッシュメモリにアクセスするメモリコントローラであって、
    前記フラッシュメモリの各ページのユーザー領域にデータを書込むデータ書込み手段と、
    前記ユーザー領域に書込まれるデータに対する誤り訂正符号を生成する誤り訂正符号生成手段と、
    前記誤り訂正符号に対して、第1の変換処理を施す第1の変換処理手段と
    前記第1の変換処理が施された前記誤り訂正符号を、前記ユーザー領域と対応する冗長領域に書込む訂正符号書込み手段とを備え、
    前記第1の変換処理手段の行う前記第1の変換処理は、前記ユーザー領域に書込まれるデータの全てのビットデータが前記フラッシュメモリにおける消去状態と一致するときに、当該第1の変換処理が施された後の前記誤り訂正符号の全てのビットデータを、前記フラッシュメモリにおける消去状態に一致させることを特徴とするメモリコントローラ。
  2. 前記第1の変換処理手段は、前記誤り訂正符号生成手段が生成した誤り訂正符号と予め設定されたマスクデータとの排他的論理和をとる手段を備えることを特徴とする請求項1に記載のメモリコントローラ。
  3. 前記ユーザー領域に書込まれているデータを読み出すデータ読出し手段と、
    前記冗長領域に書込まれている前記第1の変換処理が施された誤り訂正符号を読み出す誤り訂正符号読出し手段と、
    前記誤り訂正符号読出し手段が読出した前記第1の変換処理が施された誤り訂正符号に対して、第2の変換処理を施す第2の変換処理手段と、
    前記第2の変換処理が施された前記誤り訂正符号に基づいて前記ユーザー領域から読み出したデータに含まれる誤りを検出、訂正する誤り検出訂正手段とを備え、
    前記第2の変換処理手段の行う前記第2の変換処理は、前記第1の変換処理が施された前記誤り訂正符号を、前記第1の変換処理を施す前の前記誤り訂正符号に戻すことを特徴とする請求項1又は2に記載のメモリコントローラ。
  4. 前記第2の変換処理手段は、前記誤り訂正符号読出し手段が読出した前記第1の変換処理が施された誤り訂正符号と予め設定されたマスクデータとの排他的論理和をとる手段を備えることを特徴とする請求項3に記載のメモリコントローラ。
  5. 前記誤り訂正符号が、リードソロモン符号であることを特徴とする請求項1乃至4のいずれか1項に記載のメモリコントローラ。
  6. 請求項1乃至5のいずれか1項に記載のメモリコントローラと、データの書込み及び読み出しがページ単位で行われ、データの消去が複数ページからなるブロック単位で行われるフラッシュメモリとを備えることを特徴とするフラッシュメモリシステム。
  7. データの書込み及び読み出しがページ単位で行われ、データの消去が複数ページからなるブロック単位で行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
    前記フラッシュメモリの各ページのユーザー領域にデータを書込む処理と、
    前記ユーザー領域に書込まれるデータに対する誤り訂正符号を生成する処理と、
    前記誤り訂正符号に対して第1の変換処理を施す処理と
    前記第1の変換処理が施された前記誤り訂正符号を、前記ユーザー領域と対応する冗長領域に書込む処理とを含み、
    前記第1の変換処理では、前記ユーザー領域に書込まれるデータの全てのビットデータが前記フラッシュメモリにおける消去状態と一致するときに、当該第1の変換処理が施された後の前記誤り訂正符号の全てのビットデータを、前記フラッシュメモリにおける消去状態に一致させることを特徴とするフラッシュメモリの制御方法。
  8. 前記第1の変換処理は、前記生成された誤り訂正符号と予め設定されたマスクデータとの排他的論理和をとることを特徴とする請求項7に記載のフラッシュメモリの制御方法。
  9. 前記ユーザー領域に書込まれているデータを読み出す処理と、
    前記冗長領域に書込まれている前記第1の変換処理が施された誤り訂正符号を読み出す処理と、
    前記冗長領域から読み出した前記第1の変換処理が施された誤り訂正符号に対して、第2の変換処理を施す処理と、
    前記第2の変換処理が施された前記誤り訂正符号に基づいて前記ユーザー領域から読み出したデータに含まれる誤りを検出、訂正する処理とを含み、
    前記第2の変換処理では、前記第1の変換処理が施された前記誤り訂正符号を、前記第1の変換処理を施す前の前記誤り訂正符号に戻すことを特徴とする請求項7または8に記載のフラッシュメモリの制御方法。
  10. 前記第2の変換処理手段は、前記読出された前記第1の変換処理が施された誤り訂正符号と予め設定されたマスクデータとの排他的論理和をとることを特徴とする請求項9に記載のフラッシュメモリの制御方法。
  11. 前記誤り訂正符号が、リードソロモン符号であることを特徴とする請求項7乃至10のいずれか1項に記載のフラッシュメモリの制御方法。
JP2004345597A 2004-09-30 2004-11-30 メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 Pending JP2006127441A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004345597A JP2006127441A (ja) 2004-09-30 2004-11-30 メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004286476 2004-09-30
JP2004345597A JP2006127441A (ja) 2004-09-30 2004-11-30 メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法

Publications (1)

Publication Number Publication Date
JP2006127441A true JP2006127441A (ja) 2006-05-18

Family

ID=36722100

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004345597A Pending JP2006127441A (ja) 2004-09-30 2004-11-30 メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法

Country Status (1)

Country Link
JP (1) JP2006127441A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8381085B2 (en) 2009-09-04 2013-02-19 Samsung Electronics Co., Ltd. Semiconductor memory device and data processing method thereof
US8429494B2 (en) 2009-08-06 2013-04-23 Sony Corporation Nonvolatile random access memory and nonvolatile memory system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8429494B2 (en) 2009-08-06 2013-04-23 Sony Corporation Nonvolatile random access memory and nonvolatile memory system
US8381085B2 (en) 2009-09-04 2013-02-19 Samsung Electronics Co., Ltd. Semiconductor memory device and data processing method thereof

Similar Documents

Publication Publication Date Title
US8756398B2 (en) Partitioning pages of an electronic memory
US8694748B2 (en) Data merging method for non-volatile memory module, and memory controller and memory storage device using the same
JP2012137994A (ja) メモリシステムおよびその制御方法
US11467758B2 (en) Data writing method using different programming modes based on the number of available physical erasing units, memory control circuit unit and memory storage device
US9383929B2 (en) Data storing method and memory controller and memory storage device using the same
JP2006018373A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2006221334A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2007094639A (ja) メモリコントローラ及びフラッシュメモリシステム
US20070047308A1 (en) Memory controller, flash memory system and control method for flash memory
US8046529B2 (en) Updating control information in non-volatile memory to control selection of content
JP2021163352A (ja) 半導体記憶装置および読出し方法
JP4582078B2 (ja) メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2012068765A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4655034B2 (ja) メモリコントローラ及びフラッシュメモリシステム並びにフラッシュメモリの制御方法
JP4692843B2 (ja) メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2006155335A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
US11704055B2 (en) Storage device, controller and method for operating thereof
JP2006127441A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2005292925A (ja) メモリコントローラ、フラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4194518B2 (ja) メモリコントローラ、フラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4000124B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4697146B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
TWI753814B (zh) 半導體儲存裝置以及錯誤檢測糾正相關資訊的讀出方法
JP4177301B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4304167B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060313

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20060927

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20061010

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061017

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061218

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070123

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070222

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070510