(57)【要約】【課題】データ移動処理の対象になる記憶データの誤り訂正を効率的に行うことができるメモリコントローラを提供する。【解決手段】誤りブロック管理手段３７は、所定数以上の誤りを含むデータを記憶している物理ブロックを特定する誤りブロックテーブルを作成しておき、ホストシステム４からの指示情報に基づく書き込み処理に伴って実行されるデータ移動処理で、データ移動処理の対象データが記憶されている物理ブロックが、所定数以上の誤りを含むデータを記憶している物理ブロックであるか否かを判断する。所定数以上の誤りを含むデータを記憶している物理ブロックであるときは、制御部３５が、データ移動処理を兼ねた誤り訂正処理を実行し、所定数以上の誤りを含むデータを記憶している物理ブロックでないときは、誤り訂正が行われないコピーバック処理によるデータ移動処理を実行する。【選択図】図２
2008009614.tif 000002
【特許請求の範囲】
【請求項１】
ホストシステムから与えられる指示情報に基づいて、ページ単位でデータの書き込み又は読み出しが行われ、ブロック単位で記憶データの消去が行われる不揮発性メモリに対するアクセスを制御するメモリコントローラであって、
ホストシステムから与えられる論理アドレスと前記不揮発性メモリ内の物理アドレスの関係を管理するアドレス管理手段と、
前記不揮発性メモリにデータを書き込む書き込み手段と、
前記不揮発性メモリに記憶されているデータを読み出す読み出し手段と、
前記不揮発性メモリから読み出したデータに含まれる誤りを検出、訂正する訂正手段と、
所定数以上の誤りを含むデータを記憶している物理ブロックを特定する情報を保持する誤りブロックテーブルを作成するテーブル作成手段と、
前記誤りブロックテーブルに保持されている情報を更新するテーブル更新手段と、
前記ホストシステムから与えられる指示情報に基づく書き込み処理に伴って実行されるデータ移動処理の対象データに対して、前記訂正手段による誤り訂正を行う必要があるか否かを、前記誤りブロックテーブルに保持されている情報に基づいて判断する判断手段と、
前記データ移動処理を前記不揮発性メモリ内で実行させる指示を前記不揮発性メモリに与えるコピーバック処理指示手段とを備え、
前記判断手段が前記データ移動処理の対象データに対して誤り訂正を行う必要があると判断したときは、前記読み出し手段、前記訂正手段及び前記書き込み手段により前記データ移動処理を行い、
前記判断手段が前記データ移動処理の対象データに対して誤り訂正を行う必要がないと判断したときは、前記コピーバック処理指示手段により前記データ移動処理を行うことを特徴とするメモリコントローラ。
【請求項２】
前記誤りブロックテーブルに保持されている情報が、所定数以上の誤りを含むデータを記憶している物理ブロックに割り当てられた論理アドレスを示す情報であることを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記テーブル作成手段は、前記誤りブロックテーブルを作成するための読み出し処理を行い、該読み出し処理の対象となるデータが論理アドレスで設定されることを特徴とする請求項１又は２に記載のメモリコントローラ。
【請求項４】
請求項１から３のいずれか１項に記載のメモリコントローラと、
ページ単位でデータの書き込み又は読み出しが行われ、ブロック単位で記憶データの消去が行われる不揮発性メモリと、
を備えていることを特徴とするメモリシステム。
【請求項５】
ページ単位でデータの書き込み又は読み出しが行われ、ブロック単位で記憶データの消去が行われる不揮発性メモリのメモリ制御方法であって、
前記不揮発性メモリに記憶されているデータを読み出す読み出しステップと、
前記読み出しステップで読み出したデータに含まれる誤りを検出する誤り検出ステップと、
前記誤り検出ステップで所定数以上の誤りが検出されたときに、該誤りを含むデータが記憶されている物理ブロックを特定する情報を保持する情報保持ステップと、
書き込み処理に伴って実行されるデータ移動処理の対象データに対して誤り訂正を行う必要があるか否かを、前記情報保持ステップで保持した情報に基づいて判断する判断ステップと、
前記判断ステップで誤り訂正を行う必要があると判断したときに、読み出し処理、誤り訂正処理及び書き込み処理により前記データ移動処理を実行する第１のデータ移動ステップと、
前記判断ステップで誤り訂正を行う必要がないと判断したときに、コピーバック処理により前記データ移動処理を実行する第２のデータ移動ステップとを含むことを特徴とするメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のメモリセルからなるページ単位でデータの書き込み又は読み出しが行われ、複数ページからなる物理ブロック単位で記憶データの消去が行われる不揮発性メモリへのアクセスを制御するメモリコントローラ、該メモリコントローラを含むメモリシステム及びメモリの制御方法に関する。
【背景技術】
【０００２】
近年、メモリカード、シリコンディスクなどのメモリシステムには、ページ単位でデータの書き込み又は読み出しが行われ、ブロック単位で記憶データの消去が行われる不揮発性メモリであるＮＡＮＤ型フラッシュメモリが広く用いられている。
【０００３】
ＮＡＮＤ型フラッシュメモリは、ページレジスタとメモリセルアレイとで構成され、ページレジスタとメモリセルアレイとの間では、ページ単位でデータの書き込み又は読み出しが行われる。メモリセルアレイを構成するメモリセルは、２つのゲートを備えたＭＯＳトランジスタによって構成され、一方のゲートはコントロールゲート、他方のゲートはフローティングゲートとそれぞれ呼ばれている。このフローティングゲートに電荷（電子）を注入若しくはフローティングゲートから電荷（電子）を排出することによって、データの書き込み若しくはデータの消去が行われる。また、メモリセルを消去状態に対応する論理値“１”から書込状態に対応する論理値“０”に変更させる場合は、メモリセル単位で変更させることができるが、書込状態から消去状態に変更させる場合は、ブロック単位でしか変更させることができない。
【０００４】
したがって、ブロック内の複数のページに記憶されているデータの一部を書き換える場合には、総てのメモリセルが消去状態にある消去済ブロックを１つ選択し、この消去済ブロックに書換後のデータを書き込むと共に、書換前のデータと同一ブロックに記憶されている書換対象でないデータを消去済ブロックにコピーしなければならない。また、ブロックを２つのサブブロックに分割して使用する場合には、同一のブロック内で一方のサブブロックから他方のサブブロックに書換対象でないデータをコピーすることがある。以下、書換対象でないデータを他のページ（同一ブロック内のページであっても、異なるブロック内のページであってもよい）にコピーすることをデータ移動処理と言う。
【０００５】
このような書換え処理で、書換前のデータが記憶されているブロックの記憶データが、総て書替後のデータで置き換えられた場合、又は、書替後のデータとデータ移動処理によりコピーされたデータとで置き換えられた場合、書換前のデータが記憶されているブロックの記憶データは消去される。この消去処理は、書替後のデータ等への置き換えが終了した後に行われるが、必ずしも置き換えが終了したした直後に行わなくてもよい。
【０００６】
また、上述のような書換え処理やデータ移動処理に伴って、ＮＡＮＤ型フラッシュメモリに記憶されているデータの記憶領域が変化する。このため、ＮＡＮＤ型フラッシュメモリに対するアクセスを制御する場合には、ＮＡＮＤ型フラッシュメモリを記憶デバイスとして使用するホストシステムから与えられる論理アドレスとＮＡＮＤ型フラッシュメモリ内の記憶領域を特定する物理アドレスとの対応関係を管理しなければならない。ホストシステムとしては、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置が挙げられる。
【０００７】
図６は、上述したＮＡＮＤ型フラッシュメモリのブロックとページの関係を示す図である。図６によると、各ページはＮバイトのユーザ領域とＭバイトの冗長領域で構成され、各ブロックはＳ個のページで構成されている。通常、ユーザ領域にはホストシステムから与えられるデータが記憶され、冗長領域には、記憶するデータの誤り訂正のための情報や、そのデータの論理アドレスを特定するための情報といった各種管理情報が記憶される。なお、現在使用されているＮＡＮＤ型フラッシュメモリとしては、Ｎ＝５１２、Ｍ＝１６、Ｓ＝３２の小ブロックタイプのものと、Ｎ＝２０４８、Ｍ＝６４、Ｓ＝６４の大ブロックタイプのものが存在している。
【０００８】
ＮＡＮＤ型フラッシュメモリは、オーバプログラム又はディスターブ現象により、記憶されているデータに誤りが生じる場合がある。このため、特許文献１では、ユーザ領域に記憶されているデータに対応する誤り訂正符号を同一ページの冗長領域に記憶させておき、データの読み出しの際に、該データに対応する誤り訂正符号に基づき、読み出したデータに含まれる誤りを検出すると共に、その誤りを訂正する訂正処理を行っている。また、この訂正処理で誤りが検出されたデータが記憶されていたブロックの記憶データに対してデータ移動処理を行っている。なお、この移動処理の対象になったデータについて、総て訂正処理を施せば移動処理の対象になったデータに含まれる誤りを総て訂正することができる。
【０００９】
【特許文献１】特開２００４−２７２４７６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
フラッシュメモリに記憶される種々のデータのアクセス頻度、つまり、読み出しや書き込みを行う頻度は一様ではなく、例えば、ＦＡＴ（Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  Ｔａｂｌｅ）といったファイル管理情報や、ログデータ又はジャーナルデータといった更新記録を示す情報の様に、他に比べ書換え頻度が著しく高いデータが一般的には存在する。したがって、ＮＡＮＤ型フラッシュメモリに記憶されている書換え頻度の高いデータと論理アドレスが隣接する書換え頻度の低いデータに対しては、頻繁にデータ移動処理が行われることになる。
【００１１】
フラッシュメモリの記憶データに含まれる誤りは、ページレジスタとメモリセルアレイ間でのデータの授受のとき（メモリセルを書込状態にするときやメモリセルに対する電圧センスのとき）に発生することが多いため、データ移動処理が頻繁に行われる記憶データについては、誤りが生じやすくなる。ここで、特許文献１では、読み出したデータの誤り検出をトリガとして、誤り訂正のためのデータ移動処理を実行するため、頻繁に書き換えられるデータと同一ブロックに記憶されている読み出し頻度の低いデータについては、誤り訂正の対象にならない。したがって、このようなデータに生じる誤りは、頻繁に行われるデータ移動処理により累積される可能性があり、もし、誤り数が使用している誤り訂正符号の訂正能力を超えた場合には、データを修復することができなくなる。また、読み出し時の誤り検出をトリガとして、データ移動処理を実行するため、ホストシステムからの読み出し処理に割り込みをかけることになる。
【００１２】
したがって、本発明は、ホストシステムから与えられる指示情報に基づいて実行されるアクセス処理に及ぼす影響を抑えつつ、データ移動処理の対象になる記憶データの誤り訂正を効率的に行うことができるメモリコントローラ、メモリシステム及びメモリの制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明におけるメモリコントローラによれば、
ホストシステムから与えられる指示情報に基づいて、ページ単位でデータの書き込み又は読み出しが行われ、ブロック単位で記憶データの消去が行われる不揮発性メモリに対するアクセスを制御するメモリコントローラであって、ホストシステムから与えられる論理アドレスと前記不揮発性メモリ内の物理アドレスの関係を管理するアドレス管理手段と、前記不揮発性メモリにデータを書き込む書き込み手段と、前記不揮発性メモリに記憶されているデータを読み出す読み出し手段と、前記不揮発性メモリから読み出したデータに含まれる誤りを検出、訂正する訂正手段と、所定数以上の誤りを含むデータを記憶している物理ブロックを特定する情報を保持する誤りブロックテーブルを作成するテーブル作成手段と、前記誤りブロックテーブルに保持されている情報を更新するテーブル更新手段と、前記ホストシステムから与えられる指示情報に基づく書き込み処理に伴って実行されるデータ移動処理の対象データに対して、前記訂正手段による誤り訂正を行う必要があるか否かを、前記誤りブロックテーブルに保持されている情報に基づいて判断する判断手段と、前記データ移動処理を前記不揮発性メモリ内で実行させる指示を前記不揮発性メモリに与えるコピーバック処理指示手段とを備え、前記判断手段が前記データ移動処理の対象データに対して誤り訂正を行う必要があると判断したときは、前記読み出し手段、前記訂正手段及び前記書き込み手段により前記データ移動処理を行い、前記判断手段が前記データ移動処理の対象データに対して誤り訂正を行う必要がないと判断したときは、前記コピーバック処理指示手段により前記データ移動処理を行うことを特徴とする。
【００１４】
前記誤りブロックテーブルに保持されている情報が、所定数以上の誤りを含むデータを記憶している物理ブロックに割り当てられた論理アドレスを示す情報であってもよい。
【００１５】
前記テーブル作成手段は、前記誤りブロックテーブルを作成するための読み出し処理を行い、該読み出し処理の対象となるデータが論理アドレスで設定されることが好ましい。
【００１６】
本発明におけるメモリシステムによれば、
前記メモリコントローラと、ページ単位でデータの書き込み又は読み出しが行われ、ブロック単位で記憶データの消去が行われる不揮発性メモリとを備えていることを特徴とする。
【００１７】
本発明におけるメモリ制御方法によれば、
ページ単位でデータの書き込み又は読み出しが行われ、ブロック単位で記憶データの消去が行われる不揮発性メモリのメモリ制御方法であって、前記不揮発性メモリに記憶されているデータを読み出す読み出しステップと、前記読み出しステップで読み出したデータに含まれる誤りを検出する誤り検出ステップと、前記誤り検出ステップで所定数以上の誤りが検出されたときに、該誤りを含むデータが記憶されている物理ブロックを特定する情報を保持する情報保持ステップと、書き込み処理に伴って実行されるデータ移動処理の対象データに対して誤り訂正を行う必要があるか否かを、前記情報保持ステップで保持した情報に基づいて判断する判断ステップと、前記判断ステップで誤り訂正を行う必要があると判断したときに、読み出し処理、誤り訂正処理及び書き込み処理により前記データ移動処理を実行する第１のデータ移動ステップと、前記判断ステップで誤り訂正を行う必要がないと判断したときに、コピーバック処理により前記データ移動処理を実行する第２のデータ移動ステップとを含むことを特徴とする。
【発明の効果】
【００１８】
本発明によれば、予め、所定数以上の誤りを含むデータを記憶している物理ブロックを特定する情報を保持する誤りブロックテーブルを作成しておき、ホストシステムから与えられる指示情報に基づく書き込み処理に伴って実行されるデータ移動処理で、データ移動処理の対象データが記憶されている物理ブロックが、所定数以上の誤りを含むデータを記憶している物理ブロックであると判断したときは、データ移動処理を兼ねた誤り訂正処理を実行する。一方、データ移動処理の対象データが記憶されている物理ブロックが、所定数以上の誤りを含むデータを記憶している物理ブロックでないと判断したときは、誤り訂正が行われないコピーバック処理によるデータ移動処理を実行する。したがって、ホストシステムから与えられる指示情報に基づいて実行されるアクセス処理に及ぼす影響を抑えつつ、効率的に記憶データに含まれる誤りを訂正することができる。
【００１９】
データ移動処理を兼ねた誤り訂正処理を実行するか否かは、誤りブロックテーブルに保持されている情報に基づいて判断されるので、誤りブロックテーブルを作成するときの検査範囲を適宜設定すれば、頻繁に書き換えられるデータと同一の物理ブロックに記憶されている読み出し頻度の低いデータに含まれる誤りを訂正することができる。
【発明を実施するための最良の形態】
【００２０】
本発明を実施するための最良の実施形態について、以下では図面を用いて詳細に説明する。
【００２１】
図１は、本発明によるメモリシステムの機能ブロック図であり、メモリシステム１は、内部バス１２により相互に接続するフラッシュメモリ２とメモリコントローラ３とを備えている。また、メモリコントローラ３は、ホストシステム４と接続するための外部バス１１に対するインタフェースを備えている。
【００２２】
ここで、フラッシュメモリ２は、図６に示すＮＡＮＤ型フラッシュメモリの様に、データの書き込み又は読み出しの処理単位であるページと、複数のページを含むブロックで構成され、データ消去はブロック単位で行われる。また、メモリコントローラ３は、１つの半導体チップ上に集積化された回路により実現され、マイクロプロセッサと、マイクロプロセッサが実行するプログラムを保存するＲＯＭと、後述するアドレス変換テーブルや誤りブロックテーブルを保存するＲＡＭとを含み、マイクロプロセッサはＲＯＭに保存されているプログラムを実行してフラッシュメモリ２の制御を行う。
【００２３】
既に述べたようにフラッシュメモリ２に対する書換え処理では、データの記憶領域をデータ書換えの度に変更する必要がある。したがって、メモリコントローラ３は、ホストシステム４から与えられる論理アドレスと、フラッシュメモリ２内の記憶領域を特定する物理アドレスとの対応関係を管理する必要がある。この論理アドレスと物理アドレスとの対応関係を管理することにより、ホストシステム４から与えられる論理アドレスと対応関係にあるデータの記憶領域を特定することができる。この対応関係を管理のため、メモリコントローラ３は、アドレス変換テーブルを生成する。以下に、アドレス変換テーブルに基づくアドレス変換処理を説明する。
【００２４】
なお、以後の説明において、ホストシステム４から与えられる論理アドレスは、セクタ（５１２バイト）単位のアドレスであるＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）とする。また、以後の説明に使用するフラッシュメモリ２は、大ブロック構成、つまり、１ブロックが６４ページで、１ページが２０４８バイトのユーザ領域と６４バイトの冗長領域により構成されているものとする。
【００２５】
大ブロック構成の場合、各ページのユーザ領域には４セクタ分のデータが記憶されるため、１セクタ分の領域をサブページとすれば、各ページは４個のサブページで構成され、各ブロックは２５６個のサブページで構成されている。また、フラッシュメモリ２内の記憶領域を特定する物理アドレスは、フラッシュメモリ２のブロック（以後、物理ブロックと言う。）を特定する物理ブロックアドレスと、各物理ブロック内のサブページを特定するサブページ番号（０〜２５５）に基づいて生成される。なお、フラッシュメモリ２に対しては、ページを特定するロウアドレスとページ内の領域を特定するカラムアドレスが、記憶領域を特定するアドレス情報として与えられる。各サブページには、冗長領域を４つに分割した領域が割り当てられ、各サブページに割り当てられた冗長領域には、サブページに記憶されたデータに対応する各種管理情報が記憶される。
【００２６】
図３は、メモリコントローラ３のアドレス変換処理を説明する図である。図３に示す様に、メモリコントローラ３は、連続するＬＢＡをフラッシュメモリ２の物理ブロックと同じ容量、つまり、２５６セクタ単位の論理ブロックにグループ化し、各論理ブロックに“論理ブロック番号”と呼ぶ通し番号を付与する。具体的には、ＬＢＡを２５６で割ったときの商を論理ブロック番号とする。更に、ＬＢＡを２５６で割った余りに対応する論理ブロック内のセクタに付けた通番（０〜２５５）をセクタ番号とする。
【００２７】
なお、以下の説明において、物理ブロック内の各サブページには、その物理ブロックに割り当てられたデータがＬＢＡの順番で書き込まれるものとする。したがって、論理ブロックと物理ブロックの対応関係を管理すれば、ＬＢＡとサブページの対応関係を管理することができる。
【００２８】
アドレス変換テーブルとは、データを記憶しているフラッシュメモリ２の物理ブロックと、論理ブロックとの対応関係を示すテーブルである。例えば、論理ブロックと物理ブロックとの対応関係は、論理ブロック番号と物理ブロックアドレスの対応関係で示すことができる。例えば、図３に示した双方向の矢印が論理ブロックと物理ブロックの対応関係を示している場合、アドレス変換テーブルには、論理ブロック番号＃０が物理ブロックアドレス＃１２４に対応し、論理ブロック番号＃１が物理ブロックアドレス＃２１２に対応し、論理ブロック番号＃４９９が物理ブロックアドレス＃１に対応し、論理ブロック番号＃９９９が物理ブロックアドレス＃５６１に対応することを示す情報が保持される。
【００２９】
なお、論理ブロック内のセクタと物理ブロック内のサブページは、セクタ番号とサブページ番号が一致するもの同士が対応する。例えば、ＬＢＡ＃２８３のセクタは論理ブロック番号＃１の論理ブロックに含まれるセクタ番号＃２７のセクタなので、物理ブロックアドレス＃２１２の物理ブロック内のサブページ番号＃２７のサブページに対応する。
【００３０】
メモリコントローラ３は、データを書き込んだ物理ブロックの先頭ページの冗長領域に、そのデータに対応する論理ブロックを示す情報（以下、論理アドレス情報と言う。）を書き込む。この論理アドレス情報として、例えば、論理ブロック番号を冗長領域に書き込んでもよい。また、１０００個の論理ブロックをグループ化した論理ゾーンと１０２４個の物理ブロックをグループ化した物理ゾーンとの対応関係を管理するようにすれば、対応関係にある論理ゾーンと物理ゾーンの単位でアドレス変換テーブルを作成することができる。ここで、論理ゾーン内の１０００個の論理ブロックに付けた通番を論理ゾーン内ブロック番号（０〜９９９）とすれば、論理アドレス情報として、論理ゾーン内ブロック番号を冗長領域に書き込んでもよい。なお、論理ゾーンに含まれる論理ブロックの個数と物理ゾーンに含まれる物理ブロックの個数は適宜設定することができる。但し、データを正常に書き込むことのできない不良ブロックが発生した場合等を考慮する必要があるため、物理ゾーンに含まれる物理ブロックの個数は論理ゾーンに含まれる論理ブロックの個数より多く設定する。
【００３１】
アドレス変換テーブルを作成するときは、各論理ブロックの先頭ページの冗長領域から論理アドレス情報を読み出し、読み出した論理アドレス情報に基づいてアドレス変換テーブルを作成する。つまり、論理アドレス情報が書き込まれていた物理ブロックと、その物理ブロックから読み出した論理アドレス情報で特定される論理ブロックが対応関係であることを示すアドレス変換テーブルが作成される。
【００３２】
また、１個の物理ブロックを複数のサブブロックに分割し、このサブブロックの容量と論理ブロックの容量が一致するように複数のセクタをグループ化してもよい。例えば、１個の物理ブロックを２個のサブブロック（第１のサブブロックと第２のサブブロック）に分割し、このサブブロックに合わせて１２８セクタ単位の論理ブロックにグループ化してもよい。この論理ブロックを１個の物理ブロックに割り当てた場合、各物理ブロックに割り当てられる論理ブロックに対応するデータは、第１のサブブロック又第２のサブブロックに記憶される。また、第１のサブブロックに記憶されているデータを更新するときに、更新データを第２のサブブロックに書き込むようにしてもよい。
【００３３】
このような構成で、第１のサブブロックに記憶されているデータの一部を書き換える場合には、第１のサブブロックから第２のサブブロックに書換対象でないデータをコピーするデータ移動処理を行ってもよい。
【００３４】
図２は、本発明によるメモリコントローラ３の機能ブロック図であり、本発明の説明に必要な部分のみを簡略化して示している。図２によると、メモリコントローラ３は、ホストインタフェース部３１と、バッファ３２と、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｅ：誤り訂正符号）生成部３３と、誤り検出訂正部３４と、制御部３５と、フラッシュインタフェース部３６と、誤りブロック管理部３７とを備えている。更に、制御部３５は、コマンド処理部３５１とアドレス処理部３５２とを含んでいる。
【００３５】
ホストインタフェース部３１は、ホストシステム４と外部バス１１により接続して、ホストシステム４から与えられる指示情報を取得する。この指示情報は、書き込みや読み出しといったアクセス処理を指示するコマンドと、アクセス対象領域を特定する情報を含んでいる。アクセス対象領域を特定する情報は、アクセス対象領域の先頭ＬＢＡと、アクセス対象の領域の先頭から末尾までのセクタ数を指示する情報を含んでいる。以下、アクセス対象領域の先頭ＬＢＡとセクタ数で特定される領域をＬＢＡ範囲と言う。また、ホストインタフェース部３１は、フラッシュメモリ２に書き込むデータをホストシステム４から取得し、フラッシュメモリ２から読み出したデータをホストシステム４に供給する。
【００３６】
フラッシュインタフェース部３６は、フラッシュメモリ２と内部バス１２により接続して、フラッシュメモリ２に与える指示情報を出力する。この指示情報は、書き込みや読み出しといったアクセス処理を指示するコマンドと、アクセス対象のページやサブページを特定する情報を含んでいる。また、フラッシュインタフェース部３６は、フラッシュメモリ２に書き込むデータをフラッシュメモリ２に供給し、フラッシュメモリ２から読み出したデータを取得する。
【００３７】
なお、ホストシステム４がメモリコントローラ３に与えるコマンドとメモリコントローラ３がフラッシュメモリ２に与えるコマンドを区別するため、以後、前者を外部コマンドと言い、後者を内部コマンドと言う。
【００３８】
バッファ３２は、ホストシステム４から与えられたフラッシュメモリ２に書き込むデータ若しくはフラッシュメモリ２から読み出したデータを保持する。バッファ３２に保持された書き込みデータは、フラッシュインタフェース部３６を介してフラッシュメモリ２に転送される。バッファ３２に保持された読み出しデータは、ホストインタフェース部３１を介してホストシステム４に転送される。
【００３９】
ＥＣＣ生成部３３は、所定の誤り訂正符号化方法に従って誤り訂正符号を生成する。ＥＣＣ生成部３３には、フラッシュメモリ２に書き込むデータが入力され、フラッシュメモリ２に書き込むデータに対応する誤り訂正符号が生成される。
【００４０】
誤り検出訂正部３４は、フラッシュメモリ２から読み出したデータと、読み出したデータに対応する誤り訂正符号に基づいて、フラッシュメモリ２から読み出したデータに含まれる誤りを検出する。更に、フラッシュメモリ２から読み出したデータに含まれる誤りを検出したときは、バッファ３２に保持されているデータに含まれる誤りを訂正する。また、後述する誤りブロックテーブルを作成するための読み出し処理で、読み出したデータに所定数以上の誤りが含まれている場合には、誤りブロック管理部３７に誤りが検出されたことを通知する。
【００４１】
誤りブロック管理部３７は、後述する誤りブロックテーブルの作成及び更新を行う。
【００４２】
制御部３５は、ホストシステム４から与えられる外部コマンド及びＬＢＡ範囲を示す情報を取り込み、外部コマンドに対応するシーケンスコマンドとフラッシュメモリ２内のアクセス対象領域（以下、物理アドレス範囲と言う。）を特定する情報をフラッシュインタフェース部３６に与える。シーケンスコマンドは、書き込み処理や読み出し処理を実行するためのコマンドセットであり、ＲＯＭに記憶されている。
【００４３】
次に、メモリコントローラ３で実行されるアクセス処理について説明する。以下の説明では、説明を簡略化するため、ＬＢＡ範囲は複数の論理ブロックに跨らないものとする。つまり、ＬＢＡ範囲は１個の論理ブロックに含まれるものとする。なお、ＬＢＡ範囲が複数の論理ブロックに跨る場合は、以下に説明する処理を、論理ブロック単位で実行すれば良い。
【００４４】
ホストシステム４から与えられる外部コマンド及びＬＢＡ範囲を示す情報は、ホストインタフェース部３１内のレジスタに書き込まれ後、制御部３５に取り込まれる。ここで、制御部３５に取り込まれたＬＢＡ範囲に基づいてアドレス処理部３５２が物理アドレス範囲を特定する情報を生成する。つまり、ＬＢＡ範囲が含まれる論理ブロックの論理ブロック番号若しくは論理ゾーン内ブロック番号を求める。続いて、アドレス変換テーブルを参照して、この論理ブロックと対応する物理ブロックの物理ブロックアドレスを求める。更に、アクセス対象領域の先頭ＬＢＡのセクタ番号を求める。このセクタ番号が、アクセス対象の先頭サブページ番号に対応する。また、アクセス対象のセクタ数は、アクセス対象のサブページ数に対応する。
【００４５】
物理アドレス範囲を特定するための物理ブロックアドレス、先頭サブページ番号及びサブページ数は、フラッシュインタフェース部３６内の物理ブロックアドレスレジスタ、サブページ番号レジスタ及びカウンタにそれぞれ書き込まれる。コマンド処理部３５１は、取り込んだ外部コマンドに対応するシーケンスコマンドをフラッシュインタフェース部３６に与える。
【００４６】
ホストシステム４から与えられた外部コマンドが、書き込み処理を指示するコマンドの場合、フラッシュインタフェース部３６は、コマンド処理部３５１から与えられた書き込み処理のシーケンスコマンドを実行する。この書き込み処理では、書き込みを指示する内部コマンド、書き込み先のサブページに対応するアドレス及びデータ等が順次フラッシュメモリ２に与えられる。ここで、書き込み先のサブページに対応するアドレスは、フラッシュインタフェース部３６内の物理ブロックアドレスレジスタとサブページ番号レジスタに設定されている情報に基づいて生成される。サブページ番号レジスタに設定されている番号は、１サブページの書き込みが終了する毎にインクリメント（１ずつ加算）され、カウンタに設定されている値は、１サブページの書き込みが終了する毎にデクリメント（１ずつ減算）され、カウンタに設定されている値が０になったときに処理を終了する。つまり、カウンタに設定されたサブページ数の書き込み処理が行われる。
【００４７】
ユーザ領域に書き込まれるデータはバッファ３２から与えられ、冗長領域に書き込まれる誤り訂正符号はＥＣＣ生成部３３から与えられ、冗長領域に書き込まれる論理アドレス情報（論理ブロック番号若しくは論理ゾーン内ブロック番号）等の管理情報は制御部３５から与えられる。
【００４８】
なお、ホストシステム４から与えられたＬＢＡ範囲に対応するデータが既に記憶されている場合は、フラッシュインタフェース部３６内の物理ブロックアドレスレジスタに消去済ブロックの物理ブロックアドレスが書き込まれる。また、この消去済ブロックに書換対象でないデータのコピーをしなければならない場合は、データ移動処理を実行する。このデータ移動処理は、フラッシュメモリ２からバッファ３２にデータを読み出し、バッファ３２に保持されたデータをフラッシュメモリ２に書き込む再書き込み処理、又は、フラッシュメモリ２内でのデータのコピーであるコピーバック処理（メモリセルアレイからページレジスタに読み出したデータをメモリセルアレイに書き込む処理）によって行われる。
【００４９】
ホストシステム４から与えられた外部コマンドが、読み出し処理を指示するコマンドの場合、フラッシュインタフェース部３６は、コマンド処理部３５１から与えられた読み出し処理のシーケンスコマンドを実行する。この読み出し処理では、読み出しを指示する内部コマンド及び読み出し先のサブページに対応するアドレスが順次フラッシュメモリ２に与えられる。ここで、読み出し先のサブページに対応するアドレスは、フラッシュインタフェース部３６内の物理ブロックアドレスレジスタとサブページ番号レジスタに設定されている情報に基づいて生成される。サブページ番号レジスタに設定されている番号は、１サブページの読み出しが終了する毎にインクリメント（１ずつ加算）され、カウンタに設定されている値は、１サブページの読み出しが終了する毎にデクリメント（１ずつ減算）され、カウンタに設定されている値が０になったときに処理を終了する。つまり、カウンタに設定されたサブページ数の読み出し処理が行われる。
【００５０】
ユーザ領域から読み出されたデータはバッファ３２及び誤り検出訂正部３４に転送され、誤り検出訂正部３４には冗長領域から読み出された誤り訂正符号も転送される。誤り検出訂正部３４は、ユーザ領域から読み出されたデータ及びこのデータに対応する誤り訂正符号に基づいてユーザ領域から読み出されたデータに含まれる誤りを検出する。ユーザ領域から読み出されたデータに含まれる誤りを検出したときは、バッファ３２に保持されているデータを訂正する。
【００５１】
次に、誤りブロック管理部３７によって作成及び更新される誤りブロックテーブルについて説明する。誤りブロックテーブルは、訂正が必要な誤りを含むデータが記憶されている物理ブロックと対応関係にある論理ブロックを特定するためのテーブルである。図４は、誤りブロックテーブルの１例であり、訂正が必要な誤りを含むデータが記憶されている物理ブロックと対応関係にある論理ブロックの論理ブロック番号を保持している。ここで、論理ブロックを特定する情報は、論理ブロック番号以外の情報であってもよい。なお、論理ブロックと物理ブロックの対応関係は、アドレス変換テーブルを参照すれば分かるので、訂正が必要な誤りを含むデータが記憶されている物理ブロックを特定する情報（例えば、物理ブロックアドレス）を誤りブロックテーブルに保持するようにしてもよい。
【００５２】
次に、誤りブロックテーブルの作成処理について説明する。誤りブロックテーブルは起動時又はホストシステム４から与えられる指示情報に基づくアクセス処理が行われていないときに作成される。誤りブロックテーブルを作成するときは、誤りブロック管理部３７内に設定された検査範囲で特定される領域からデータを読み出し、読み出したデータに所定数以上の誤りが含まれている場合には、そのデータが記憶されていた物理ブロックに対応する論理ブロックの論理ブロック番号を誤りブロックテーブルに書き込む。
【００５３】
検査範囲を示す情報は、ＬＢＡで検査範囲を示す情報であっても、論理ブロック番号で検査範囲を示す情報であってもよい。例えば、検査範囲の先頭論理ブロック番号と末尾論理ブロック番号で検査範囲を特定する。検査範囲は、ＦＡＴ、ログデータ、ジャーナルデータ等の書換え頻度の高いデータが記憶される領域が含まれるように設定することが好ましい。検査範囲は、ホストシステム４から外部バス１１を介して設定できるようにしてもよい。又は、メモリコントローラ３の入出力端子（図示していない）の一部を、検査範囲を設定するための端子に割り当ててもよい。
【００５４】
なお、所定数以上の誤りが含まれているか否かは、セクタ単位で判断し、所定数以上の誤りが含まれているセクタを検出したときは、そのセクタが含まれる論理ブロックから、そのセクタ以降のデータ読み出しは行わず、検査範囲の次の論理ブロックに対応する物理ブロックからのデータ読み出しに移行する。例えば、検査範囲が論理ブロック番号＃０〜＃９の論理ブロックの場合に、論理ブロック番号＃０の論理ブロック内の先頭セクタから順番にデータを読み出していき、セクタ番号＃３０に対応するデータを読み出したときに所定数以上の誤りが検出されたとき（セクタ番号＃３０に対応するデータに所定数以上の誤りが含まれていたとき）は、セクタ番号＃３１以降のセクタに対応するデータの読み出しは行わず、論理ブロック番号＃１の論理ブロックからのデータ読み出しに移行する。
【００５５】
ホストシステム４から与えられる指示情報に基づくアクセス処理が行われていないときには、検査範囲に含まれない領域からデータ読み出し、所定数以上の誤りが含まれているデータが記憶されている物理ブロックを検出したときは、その物理ブロックを示す情報を誤りブロックテーブルに追加するようにしてもよい。こうすることにより、検査範囲に含まれない領域についても効率的に記憶データに含まれる誤りを訂正することができる。
【００５６】
ホストシステム４から与えられる指示情報に基づく書き込み処理に伴って実行される誤り訂正処理について図５を参照して説明する。図５は、本発明によるフラッシュメモリの制御方法を示した処理フローであり、アドレス変換テーブル及び誤りブロックテーブルは処理開始時に既に作成されているものとする。
【００５７】
（Ｓ５１）ホストシステム４から書き込み処理を指示する外部コマンドと共に与えられるＬＢＡ範囲を取得する。
【００５８】
（Ｓ５２）ＬＢＡ範囲が含まれる論理ブロックと対応する物理ブロック内のデータが記憶されている最後のサブページのサブページ番号（以下、末尾サブページ番号と言う。）を求める。求めた末尾サブページ番号に基づいてデータ移動処理が発生するか否かを判断する。例えば、末尾サブページ番号が＃１２７で、ＬＢＡ範囲がサブページ番号＃３２〜＃１２７に対応する場合、サブページ番号＃０〜＃３１のサブページに記憶されているデータについてデータ移動処理が発生する。また、末尾サブページ番号が＃３１で、ＬＢＡ範囲がサブページ番号の＃３２〜１２７に対応する場合、サブページ番号＃３２以降のサブページに追加書き込みをすることができるのでデータ移動処理が発生しない。更に、末尾サブページ番号が＃３１で、ＬＢＡ範囲がサブページ番号の＃０〜６３に対応する場合、総てのデータが書き換えられるためデータ移動処理が発生しない。
【００５９】
（Ｓ５３）データ移動処理が発生する場合は、ＬＢＡ範囲が含まれる論理ブロックの論理ブロック番号が誤りブロックテーブルに保持されているか否かを誤りブロック管理部３７に問い合わせる。例えば、図４に示したように、誤りブロックテーブルに論理ブロック番号＃１、＃１０、＃２１が保持されているときに、論理ブロック番号＃１が誤りブロックテーブルに保持されているか否かを問い合わせた場合、誤りブロック管理部３７は論理ブロック番号＃１が誤りブロックテーブルに保持されているという判断結果を制御部３５に通知する。
【００６０】
（Ｓ５４）データ移動処理が発生しない場合、つまり、追加書き込みをすることができる場合や総てのデータが書き換えられる場合は、ホストシステム４から与えられるデータの書き込み処理を実行する。また、ＬＢＡ範囲が含まれる論理ブロックと対応する物理ブロックに記憶されているデータが総てホストシステム４から与えられるデータで書き換えられてしまう場合は、書き込み処理が終了した後に、ＬＢＡ範囲が含まれる論理ブロックの論理ブロック番号と消去指示が誤りブロック管理部３７に通知される。通知された論理ブロック番号が誤りブロックテーブルに保持されている場合は、その論理ブロック番号が誤りブロックテーブルから消去される。
【００６１】
（Ｓ５５）データ移動処理の対象データに対応する論理ブロック番号が誤りブロックテーブルに保持されている場合、データ移動処理を兼ねた誤り訂正処理を実行するため再書き込み処理によるデータのコピーが行われる。つまり、移動元の物理ブロックに記憶されているデータをバッファ３２に読み出し、誤り検出訂正部３４が読み出したデータに含まれる誤りを訂正する。続いて、誤りを訂正したデータを移動先の物理ブロックに書き込む。書き換えられるデータについては、ホストシステム４から与えられるデータの書き込み処理を実行する。また、データ移動処理を兼ねた誤り訂正処理が終了した後に、誤り訂正処理が終了したことが誤りブロック管理部３７に通知され、誤り訂正処理がなされた論理ブロックの論理ブロック番号が誤りブロックテーブルから消去される。
【００６２】
（Ｓ５６）データ移動処理の対象データに対応する論理ブロック番号が誤りブロックテーブルに保持されていない場合、コピーバック処理によるデータのコピーが行われる。コピーバック処理によりデータ移動処理が行われた場合、記憶データに含まれる誤りは訂正されないが、データ移動処理にかかる時間を短縮することができる。書き換えられるデータについては、ホストシステム４から与えられるデータの書き込み処理を実行する。
【００６３】
なお、Ｓ５４〜Ｓ５６の処理で論理ブロックと物理ブロックの対応関係が変化した場合は、アドレス変換テーブルの情報が更新される。
【００６４】
以上に説明したように、本発明における誤り訂正処理は、ホストシステム４から与えられる指示情報に基づく書き込み処理に伴って実行されるデータ移動処理と共に行われる。つまり、データ移動処理を実行する必要が生じたとき、データ移動処理を兼ねた誤り訂正処理が実行されるので、データに含まれる誤りを訂正するためだけの誤り訂正処理を実行する場合よりもホストシステム４から与えられる指示情報に基づくアクセス処理に及ぼす影響を小さくすることができる。また、データ移動処理を兼ねた誤り訂正処理を実行するか否かは、誤りブロックテーブルに保持されている情報に基づいて判断されるので、誤りブロックテーブルを作成するときの検査範囲を適宜設定することにより、効率的にデータに含まれる誤りを訂正することができる。したがって、誤りブロックテーブルを作成するときの検査範囲は、ＦＡＴ、ログデータ、ジャーナルデータ等の書換え頻度が高いデータが含まれるように設定することが好ましい。このように設定することにより、頻繁に書き換えられるデータと同一ブロックに記憶されている読み出し頻度の低いデータに含まれる誤りを訂正することができる。
【００６５】
また、誤りブロックテーブルに追加するか否かを判断する記憶データに含まれる誤りの数（所定数）については、用途に応じて適宜設定することができる。例えば、信頼性を重視する用途の場合には、所定数の値を小さくし、アクセススピードを重視する場合には、所定数の値を大きくすればよい。この所定数の設定は、ホストシステム４から外部バス１１を介して設定できるようにしてもよい。又は、メモリコントローラ３の入出力端子（図示していない）の一部を、この所定数を設定するための端子に割り当ててもよい。
【図面の簡単な説明】
【００６６】
【図１】本発明によるメモリシステムの機能ブロック図である。
【図２】本発明によるメモリコントローラの機能ブロック図である。
【図３】アドレス管理部におけるアドレス変換の説明図である。
【図４】誤りブロックテーブルを示す図である。
【図５】本発明によるメモリ制御方法の処理フロー図である。
【図６】フラッシュメモリのページとブロックの関係を示す図である。
【符号の説明】
【００６７】
１  メモリシステム
１１  外部バス
１２  内部バス
２  フラッシュメモリ
３  メモリコントローラ
３１  ホストインタフェース部
３２  バッファ
３３  ＥＣＣ生成部
３４  誤り検出訂正部
３５  制御部
３５１  コマンド処理部
３５２  アドレス処理部
３６  フラッシュインタフェース部
３７  誤りブロック管理部
４  ホストシステム
【図１】
2008009614.tif 000003
【図２】
2008009614.tif 000004
【図３】
2008009614.tif 000005
【図４】
2008009614.tif 000006
【図５】
2008009614.tif 000007
【図６】
2008009614.tif 000008