JP4513786B2 - メモリコントローラ、メモリシステム及びメモリ制御方法 - Google Patents

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

Info

Publication number
JP4513786B2
JP4513786B2 JP2006178179A JP2006178179A JP4513786B2 JP 4513786 B2 JP4513786 B2 JP 4513786B2 JP 2006178179 A JP2006178179 A JP 2006178179A JP 2006178179 A JP2006178179 A JP 2006178179A JP 4513786 B2 JP4513786 B2 JP 4513786B2
Authority
JP
Japan
Prior art keywords
data
error
block
memory
read
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 - Fee Related
Application number
JP2006178179A
Other languages
English (en)
Other versions
JP2008009614A (ja
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 JP2006178179A priority Critical patent/JP4513786B2/ja
Publication of JP2008009614A publication Critical patent/JP2008009614A/ja
Application granted granted Critical
Publication of JP4513786B2 publication Critical patent/JP4513786B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明は、複数のメモリセルからなるページ単位でデータの書き込み又は読み出しが行われ、複数ページからなる物理ブロック単位で記憶データの消去が行われる不揮発性メモリへのアクセスを制御するメモリコントローラ、該メモリコントローラを含むメモリシステム及びメモリの制御方法に関する。
近年、メモリカード、シリコンディスクなどのメモリシステムには、ページ単位でデータの書き込み又は読み出しが行われ、ブロック単位で記憶データの消去が行われる不揮発性メモリであるNAND型フラッシュメモリが広く用いられている。
NAND型フラッシュメモリは、ページレジスタとメモリセルアレイとで構成され、ページレジスタとメモリセルアレイとの間では、ページ単位でデータの書き込み又は読み出しが行われる。メモリセルアレイを構成するメモリセルは、2つのゲートを備えたMOSトランジスタによって構成され、一方のゲートはコントロールゲート、他方のゲートはフローティングゲートとそれぞれ呼ばれている。このフローティングゲートに電荷(電子)を注入若しくはフローティングゲートから電荷(電子)を排出することによって、データの書き込み若しくはデータの消去が行われる。また、メモリセルを消去状態に対応する論理値“1”から書込状態に対応する論理値“0”に変更させる場合は、メモリセル単位で変更させることができるが、書込状態から消去状態に変更させる場合は、ブロック単位でしか変更させることができない。
したがって、ブロック内の複数のページに記憶されているデータの一部を書き換える場合には、総てのメモリセルが消去状態にある消去済ブロックを1つ選択し、この消去済ブロックに書換後のデータを書き込むと共に、書換前のデータと同一ブロックに記憶されている書換対象でないデータを消去済ブロックにコピーしなければならない。また、ブロックを2つのサブブロックに分割して使用する場合には、同一のブロック内で一方のサブブロックから他方のサブブロックに書換対象でないデータをコピーすることがある。以下、書換対象でないデータを他のページ(同一ブロック内のページであっても、異なるブロック内のページであってもよい)にコピーすることをデータ移動処理と言う。
このような書換え処理で、書換前のデータが記憶されているブロックの記憶データが、総て書替後のデータで置き換えられた場合、又は、書替後のデータとデータ移動処理によりコピーされたデータとで置き換えられた場合、書換前のデータが記憶されているブロックの記憶データは消去される。この消去処理は、書替後のデータ等への置き換えが終了した後に行われるが、必ずしも置き換えが終了したした直後に行わなくてもよい。
また、上述のような書換え処理やデータ移動処理に伴って、NAND型フラッシュメモリに記憶されているデータの記憶領域が変化する。このため、NAND型フラッシュメモリに対するアクセスを制御する場合には、NAND型フラッシュメモリを記憶デバイスとして使用するホストシステムから与えられる論理アドレスとNAND型フラッシュメモリ内の記憶領域を特定する物理アドレスとの対応関係を管理しなければならない。ホストシステムとしては、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置が挙げられる。
図6は、上述したNAND型フラッシュメモリのブロックとページの関係を示す図である。図6によると、各ページはNバイトのユーザ領域とMバイトの冗長領域で構成され、各ブロックはS個のページで構成されている。通常、ユーザ領域にはホストシステムから与えられるデータが記憶され、冗長領域には、記憶するデータの誤り訂正のための情報や、そのデータの論理アドレスを特定するための情報といった各種管理情報が記憶される。なお、現在使用されているNAND型フラッシュメモリとしては、N=512、M=16、S=32の小ブロックタイプのものと、N=2048、M=64、S=64の大ブロックタイプのものが存在している。
NAND型フラッシュメモリは、オーバプログラム又はディスターブ現象により、記憶されているデータに誤りが生じる場合がある。このため、特許文献1では、ユーザ領域に記憶されているデータに対応する誤り訂正符号を同一ページの冗長領域に記憶させておき、データの読み出しの際に、該データに対応する誤り訂正符号に基づき、読み出したデータに含まれる誤りを検出すると共に、その誤りを訂正する訂正処理を行っている。また、この訂正処理で誤りが検出されたデータが記憶されていたブロックの記憶データに対してデータ移動処理を行っている。なお、この移動処理の対象になったデータについて、総て訂正処理を施せば移動処理の対象になったデータに含まれる誤りを総て訂正することができる。
特開2004−272476号公報
フラッシュメモリに記憶される種々のデータのアクセス頻度、つまり、読み出しや書き込みを行う頻度は一様ではなく、例えば、FAT(File Allocation Table)といったファイル管理情報や、ログデータ又はジャーナルデータといった更新記録を示す情報の様に、他に比べ書換え頻度が著しく高いデータが一般的には存在する。したがって、NAND型フラッシュメモリに記憶されている書換え頻度の高いデータと論理アドレスが隣接する書換え頻度の低いデータに対しては、頻繁にデータ移動処理が行われることになる。
フラッシュメモリの記憶データに含まれる誤りは、ページレジスタとメモリセルアレイ間でのデータの授受のとき(メモリセルを書込状態にするときやメモリセルに対する電圧センスのとき)に発生することが多いため、データ移動処理が頻繁に行われる記憶データについては、誤りが生じやすくなる。ここで、特許文献1では、読み出したデータの誤り検出をトリガとして、誤り訂正のためのデータ移動処理を実行するため、頻繁に書き換えられるデータと同一ブロックに記憶されている読み出し頻度の低いデータについては、誤り訂正の対象にならない。したがって、このようなデータに生じる誤りは、頻繁に行われるデータ移動処理により累積される可能性があり、もし、誤り数が使用している誤り訂正符号の訂正能力を超えた場合には、データを修復することができなくなる。また、読み出し時の誤り検出をトリガとして、データ移動処理を実行するため、ホストシステムからの読み出し処理に割り込みをかけることになる。
したがって、本発明は、ホストシステムから与えられる指示情報に基づいて実行されるアクセス処理に及ぼす影響を抑えつつ、データ移動処理の対象になる記憶データの誤り訂正を効率的に行うことができるメモリコントローラ、メモリシステム及びメモリの制御方法を提供することを目的とする。
本発明におけるメモリコントローラによれば、
ホストシステムから与えられる指示情報に基づいて、ページ単位でデータの書き込み又は読み出しが行われ、ブロック単位で記憶データの消去が行われる不揮発性メモリに対するアクセスを制御するメモリコントローラであって、ホストシステムから与えられる論理アドレスと前記不揮発性メモリ内の物理アドレスの関係を管理するアドレス管理手段と、前記不揮発性メモリにデータを書き込む書き込み手段と、前記不揮発性メモリに記憶されているデータを読み出す読み出し手段と、前記不揮発性メモリから読み出したデータに含まれる誤りを検出、訂正する訂正手段と、所定数以上の誤りを含むデータを記憶している物理ブロックを特定する情報を保持する誤りブロックテーブルを作成するテーブル作成手段と、前記誤りブロックテーブルに保持されている情報を更新するテーブル更新手段と、前記ホストシステムから与えられる指示情報に基づく書き込み処理に伴って実行されるデータ移動処理の対象データに対して、前記訂正手段による誤り訂正を行う必要があるか否かを、前記誤りブロックテーブルに保持されている情報に基づいて判断する判断手段と、前記データ移動処理を前記不揮発性メモリ内で実行させる指示を前記不揮発性メモリに与えるコピーバック処理指示手段とを備え、前記判断手段が前記データ移動処理の対象データに対して誤り訂正を行う必要があると判断したときは、前記読み出し手段、前記訂正手段及び前記書き込み手段により前記データ移動処理を行い、前記判断手段が前記データ移動処理の対象データに対して誤り訂正を行う必要がないと判断したときは、前記コピーバック処理指示手段により前記データ移動処理を行うことを特徴とする。
前記誤りブロックテーブルに保持されている情報が、所定数以上の誤りを含むデータを記憶している物理ブロックに割り当てられた論理アドレスを示す情報であってもよい。
前記テーブル作成手段は、前記誤りブロックテーブルを作成するための読み出し処理を行い、該読み出し処理の対象となるデータが論理アドレスで設定されることが好ましい。
本発明におけるメモリシステムによれば、
前記メモリコントローラと、ページ単位でデータの書き込み又は読み出しが行われ、ブロック単位で記憶データの消去が行われる不揮発性メモリとを備えていることを特徴とする。
本発明におけるメモリ制御方法によれば、
ページ単位でデータの書き込み又は読み出しが行われ、ブロック単位で記憶データの消去が行われる不揮発性メモリのメモリ制御方法であって、前記不揮発性メモリに記憶されているデータを読み出す読み出しステップと、前記読み出しステップで読み出したデータに含まれる誤りを検出する誤り検出ステップと、前記誤り検出ステップで所定数以上の誤りが検出されたときに、該誤りを含むデータが記憶されている物理ブロックを特定する情報を保持する情報保持ステップと、書き込み処理に伴って実行されるデータ移動処理の対象データに対して誤り訂正を行う必要があるか否かを、前記情報保持ステップで保持した情報に基づいて判断する判断ステップと、前記判断ステップで誤り訂正を行う必要があると判断したときに、読み出し処理、誤り訂正処理及び書き込み処理により前記データ移動処理を実行する第1のデータ移動ステップと、前記判断ステップで誤り訂正を行う必要がないと判断したときに、コピーバック処理により前記データ移動処理を実行する第2のデータ移動ステップとを含むことを特徴とする。
本発明によれば、予め、所定数以上の誤りを含むデータを記憶している物理ブロックを特定する情報を保持する誤りブロックテーブルを作成しておき、ホストシステムから与えられる指示情報に基づく書き込み処理に伴って実行されるデータ移動処理で、データ移動処理の対象データが記憶されている物理ブロックが、所定数以上の誤りを含むデータを記憶している物理ブロックであると判断したときは、データ移動処理を兼ねた誤り訂正処理を実行する。一方、データ移動処理の対象データが記憶されている物理ブロックが、所定数以上の誤りを含むデータを記憶している物理ブロックでないと判断したときは、誤り訂正が行われないコピーバック処理によるデータ移動処理を実行する。したがって、ホストシステムから与えられる指示情報に基づいて実行されるアクセス処理に及ぼす影響を抑えつつ、効率的に記憶データに含まれる誤りを訂正することができる。
データ移動処理を兼ねた誤り訂正処理を実行するか否かは、誤りブロックテーブルに保持されている情報に基づいて判断されるので、誤りブロックテーブルを作成するときの検査範囲を適宜設定すれば、頻繁に書き換えられるデータと同一の物理ブロックに記憶されている読み出し頻度の低いデータに含まれる誤りを訂正することができる。
本発明を実施するための最良の実施形態について、以下では図面を用いて詳細に説明する。
図1は、本発明によるメモリシステムの機能ブロック図であり、メモリシステム1は、内部バス12により相互に接続するフラッシュメモリ2とメモリコントローラ3とを備えている。また、メモリコントローラ3は、ホストシステム4と接続するための外部バス11に対するインタフェースを備えている。
ここで、フラッシュメモリ2は、図6に示すNAND型フラッシュメモリの様に、データの書き込み又は読み出しの処理単位であるページと、複数のページを含むブロックで構成され、データ消去はブロック単位で行われる。また、メモリコントローラ3は、1つの半導体チップ上に集積化された回路により実現され、マイクロプロセッサと、マイクロプロセッサが実行するプログラムを保存するROMと、後述するアドレス変換テーブルや誤りブロックテーブルを保存するRAMとを含み、マイクロプロセッサはROMに保存されているプログラムを実行してフラッシュメモリ2の制御を行う。
既に述べたようにフラッシュメモリ2に対する書換え処理では、データの記憶領域をデータ書換えの度に変更する必要がある。したがって、メモリコントローラ3は、ホストシステム4から与えられる論理アドレスと、フラッシュメモリ2内の記憶領域を特定する物理アドレスとの対応関係を管理する必要がある。この論理アドレスと物理アドレスとの対応関係を管理することにより、ホストシステム4から与えられる論理アドレスと対応関係にあるデータの記憶領域を特定することができる。この対応関係を管理のため、メモリコントローラ3は、アドレス変換テーブルを生成する。以下に、アドレス変換テーブルに基づくアドレス変換処理を説明する。
なお、以後の説明において、ホストシステム4から与えられる論理アドレスは、セクタ(512バイト)単位のアドレスであるLBA(Logical Block Address)とする。また、以後の説明に使用するフラッシュメモリ2は、大ブロック構成、つまり、1ブロックが64ページで、1ページが2048バイトのユーザ領域と64バイトの冗長領域により構成されているものとする。
大ブロック構成の場合、各ページのユーザ領域には4セクタ分のデータが記憶されるため、1セクタ分の領域をサブページとすれば、各ページは4個のサブページで構成され、各ブロックは256個のサブページで構成されている。また、フラッシュメモリ2内の記憶領域を特定する物理アドレスは、フラッシュメモリ2のブロック(以後、物理ブロックと言う。)を特定する物理ブロックアドレスと、各物理ブロック内のサブページを特定するサブページ番号(0〜255)に基づいて生成される。なお、フラッシュメモリ2に対しては、ページを特定するロウアドレスとページ内の領域を特定するカラムアドレスが、記憶領域を特定するアドレス情報として与えられる。各サブページには、冗長領域を4つに分割した領域が割り当てられ、各サブページに割り当てられた冗長領域には、サブページに記憶されたデータに対応する各種管理情報が記憶される。
図3は、メモリコントローラ3のアドレス変換処理を説明する図である。図3に示す様に、メモリコントローラ3は、連続するLBAをフラッシュメモリ2の物理ブロックと同じ容量、つまり、256セクタ単位の論理ブロックにグループ化し、各論理ブロックに“論理ブロック番号”と呼ぶ通し番号を付与する。具体的には、LBAを256で割ったときの商を論理ブロック番号とする。更に、LBAを256で割った余りに対応する論理ブロック内のセクタに付けた通番(0〜255)をセクタ番号とする。
なお、以下の説明において、物理ブロック内の各サブページには、その物理ブロックに割り当てられたデータがLBAの順番で書き込まれるものとする。したがって、論理ブロックと物理ブロックの対応関係を管理すれば、LBAとサブページの対応関係を管理することができる。
アドレス変換テーブルとは、データを記憶しているフラッシュメモリ2の物理ブロックと、論理ブロックとの対応関係を示すテーブルである。例えば、論理ブロックと物理ブロックとの対応関係は、論理ブロック番号と物理ブロックアドレスの対応関係で示すことができる。例えば、図3に示した双方向の矢印が論理ブロックと物理ブロックの対応関係を示している場合、アドレス変換テーブルには、論理ブロック番号#0が物理ブロックアドレス#124に対応し、論理ブロック番号#1が物理ブロックアドレス#212に対応し、論理ブロック番号#499が物理ブロックアドレス#1に対応し、論理ブロック番号#999が物理ブロックアドレス#561に対応することを示す情報が保持される。
なお、論理ブロック内のセクタと物理ブロック内のサブページは、セクタ番号とサブページ番号が一致するもの同士が対応する。例えば、LBA#283のセクタは論理ブロック番号#1の論理ブロックに含まれるセクタ番号#27のセクタなので、物理ブロックアドレス#212の物理ブロック内のサブページ番号#27のサブページに対応する。
メモリコントローラ3は、データを書き込んだ物理ブロックの先頭ページの冗長領域に、そのデータに対応する論理ブロックを示す情報(以下、論理アドレス情報と言う。)を書き込む。この論理アドレス情報として、例えば、論理ブロック番号を冗長領域に書き込んでもよい。また、1000個の論理ブロックをグループ化した論理ゾーンと1024個の物理ブロックをグループ化した物理ゾーンとの対応関係を管理するようにすれば、対応関係にある論理ゾーンと物理ゾーンの単位でアドレス変換テーブルを作成することができる。ここで、論理ゾーン内の1000個の論理ブロックに付けた通番を論理ゾーン内ブロック番号(0〜999)とすれば、論理アドレス情報として、論理ゾーン内ブロック番号を冗長領域に書き込んでもよい。なお、論理ゾーンに含まれる論理ブロックの個数と物理ゾーンに含まれる物理ブロックの個数は適宜設定することができる。但し、データを正常に書き込むことのできない不良ブロックが発生した場合等を考慮する必要があるため、物理ゾーンに含まれる物理ブロックの個数は論理ゾーンに含まれる論理ブロックの個数より多く設定する。
アドレス変換テーブルを作成するときは、各論理ブロックの先頭ページの冗長領域から論理アドレス情報を読み出し、読み出した論理アドレス情報に基づいてアドレス変換テーブルを作成する。つまり、論理アドレス情報が書き込まれていた物理ブロックと、その物理ブロックから読み出した論理アドレス情報で特定される論理ブロックが対応関係であることを示すアドレス変換テーブルが作成される。
また、1個の物理ブロックを複数のサブブロックに分割し、このサブブロックの容量と論理ブロックの容量が一致するように複数のセクタをグループ化してもよい。例えば、1個の物理ブロックを2個のサブブロック(第1のサブブロックと第2のサブブロック)に分割し、このサブブロックに合わせて128セクタ単位の論理ブロックにグループ化してもよい。この論理ブロックを1個の物理ブロックに割り当てた場合、各物理ブロックに割り当てられる論理ブロックに対応するデータは、第1のサブブロック又第2のサブブロックに記憶される。また、第1のサブブロックに記憶されているデータを更新するときに、更新データを第2のサブブロックに書き込むようにしてもよい。
このような構成で、第1のサブブロックに記憶されているデータの一部を書き換える場合には、第1のサブブロックから第2のサブブロックに書換対象でないデータをコピーするデータ移動処理を行ってもよい。
図2は、本発明によるメモリコントローラ3の機能ブロック図であり、本発明の説明に必要な部分のみを簡略化して示している。図2によると、メモリコントローラ3は、ホストインタフェース部31と、バッファ32と、ECC(Error Correction Code:誤り訂正符号)生成部33と、誤り検出訂正部34と、制御部35と、フラッシュインタフェース部36と、誤りブロック管理部37とを備えている。更に、制御部35は、コマンド処理部351とアドレス処理部352とを含んでいる。
ホストインタフェース部31は、ホストシステム4と外部バス11により接続して、ホストシステム4から与えられる指示情報を取得する。この指示情報は、書き込みや読み出しといったアクセス処理を指示するコマンドと、アクセス対象領域を特定する情報を含んでいる。アクセス対象領域を特定する情報は、アクセス対象領域の先頭LBAと、アクセス対象の領域の先頭から末尾までのセクタ数を指示する情報を含んでいる。以下、アクセス対象領域の先頭LBAとセクタ数で特定される領域をLBA範囲と言う。また、ホストインタフェース部31は、フラッシュメモリ2に書き込むデータをホストシステム4から取得し、フラッシュメモリ2から読み出したデータをホストシステム4に供給する。
フラッシュインタフェース部36は、フラッシュメモリ2と内部バス12により接続して、フラッシュメモリ2に与える指示情報を出力する。この指示情報は、書き込みや読み出しといったアクセス処理を指示するコマンドと、アクセス対象のページやサブページを特定する情報を含んでいる。また、フラッシュインタフェース部36は、フラッシュメモリ2に書き込むデータをフラッシュメモリ2に供給し、フラッシュメモリ2から読み出したデータを取得する。
なお、ホストシステム4がメモリコントローラ3に与えるコマンドとメモリコントローラ3がフラッシュメモリ2に与えるコマンドを区別するため、以後、前者を外部コマンドと言い、後者を内部コマンドと言う。
バッファ32は、ホストシステム4から与えられたフラッシュメモリ2に書き込むデータ若しくはフラッシュメモリ2から読み出したデータを保持する。バッファ32に保持された書き込みデータは、フラッシュインタフェース部36を介してフラッシュメモリ2に転送される。バッファ32に保持された読み出しデータは、ホストインタフェース部31を介してホストシステム4に転送される。
ECC生成部33は、所定の誤り訂正符号化方法に従って誤り訂正符号を生成する。ECC生成部33には、フラッシュメモリ2に書き込むデータが入力され、フラッシュメモリ2に書き込むデータに対応する誤り訂正符号が生成される。
誤り検出訂正部34は、フラッシュメモリ2から読み出したデータと、読み出したデータに対応する誤り訂正符号に基づいて、フラッシュメモリ2から読み出したデータに含まれる誤りを検出する。更に、フラッシュメモリ2から読み出したデータに含まれる誤りを検出したときは、バッファ32に保持されているデータに含まれる誤りを訂正する。また、後述する誤りブロックテーブルを作成するための読み出し処理で、読み出したデータに所定数以上の誤りが含まれている場合には、誤りブロック管理部37に誤りが検出されたことを通知する。
誤りブロック管理部37は、後述する誤りブロックテーブルの作成及び更新を行う。
制御部35は、ホストシステム4から与えられる外部コマンド及びLBA範囲を示す情報を取り込み、外部コマンドに対応するシーケンスコマンドとフラッシュメモリ2内のアクセス対象領域(以下、物理アドレス範囲と言う。)を特定する情報をフラッシュインタフェース部36に与える。シーケンスコマンドは、書き込み処理や読み出し処理を実行するためのコマンドセットであり、ROMに記憶されている。
次に、メモリコントローラ3で実行されるアクセス処理について説明する。以下の説明では、説明を簡略化するため、LBA範囲は複数の論理ブロックに跨らないものとする。つまり、LBA範囲は1個の論理ブロックに含まれるものとする。なお、LBA範囲が複数の論理ブロックに跨る場合は、以下に説明する処理を、論理ブロック単位で実行すれば良い。
ホストシステム4から与えられる外部コマンド及びLBA範囲を示す情報は、ホストインタフェース部31内のレジスタに書き込まれ後、制御部35に取り込まれる。ここで、制御部35に取り込まれたLBA範囲に基づいてアドレス処理部352が物理アドレス範囲を特定する情報を生成する。つまり、LBA範囲が含まれる論理ブロックの論理ブロック番号若しくは論理ゾーン内ブロック番号を求める。続いて、アドレス変換テーブルを参照して、この論理ブロックと対応する物理ブロックの物理ブロックアドレスを求める。更に、アクセス対象領域の先頭LBAのセクタ番号を求める。このセクタ番号が、アクセス対象の先頭サブページ番号に対応する。また、アクセス対象のセクタ数は、アクセス対象のサブページ数に対応する。
物理アドレス範囲を特定するための物理ブロックアドレス、先頭サブページ番号及びサブページ数は、フラッシュインタフェース部36内の物理ブロックアドレスレジスタ、サブページ番号レジスタ及びカウンタにそれぞれ書き込まれる。コマンド処理部351は、取り込んだ外部コマンドに対応するシーケンスコマンドをフラッシュインタフェース部36に与える。
ホストシステム4から与えられた外部コマンドが、書き込み処理を指示するコマンドの場合、フラッシュインタフェース部36は、コマンド処理部351から与えられた書き込み処理のシーケンスコマンドを実行する。この書き込み処理では、書き込みを指示する内部コマンド、書き込み先のサブページに対応するアドレス及びデータ等が順次フラッシュメモリ2に与えられる。ここで、書き込み先のサブページに対応するアドレスは、フラッシュインタフェース部36内の物理ブロックアドレスレジスタとサブページ番号レジスタに設定されている情報に基づいて生成される。サブページ番号レジスタに設定されている番号は、1サブページの書き込みが終了する毎にインクリメント(1ずつ加算)され、カウンタに設定されている値は、1サブページの書き込みが終了する毎にデクリメント(1ずつ減算)され、カウンタに設定されている値が0になったときに処理を終了する。つまり、カウンタに設定されたサブページ数の書き込み処理が行われる。
ユーザ領域に書き込まれるデータはバッファ32から与えられ、冗長領域に書き込まれる誤り訂正符号はECC生成部33から与えられ、冗長領域に書き込まれる論理アドレス情報(論理ブロック番号若しくは論理ゾーン内ブロック番号)等の管理情報は制御部35から与えられる。
なお、ホストシステム4から与えられたLBA範囲に対応するデータが既に記憶されている場合は、フラッシュインタフェース部36内の物理ブロックアドレスレジスタに消去済ブロックの物理ブロックアドレスが書き込まれる。また、この消去済ブロックに書換対象でないデータのコピーをしなければならない場合は、データ移動処理を実行する。このデータ移動処理は、フラッシュメモリ2からバッファ32にデータを読み出し、バッファ32に保持されたデータをフラッシュメモリ2に書き込む再書き込み処理、又は、フラッシュメモリ2内でのデータのコピーであるコピーバック処理(メモリセルアレイからページレジスタに読み出したデータをメモリセルアレイに書き込む処理)によって行われる。
ホストシステム4から与えられた外部コマンドが、読み出し処理を指示するコマンドの場合、フラッシュインタフェース部36は、コマンド処理部351から与えられた読み出し処理のシーケンスコマンドを実行する。この読み出し処理では、読み出しを指示する内部コマンド及び読み出し先のサブページに対応するアドレスが順次フラッシュメモリ2に与えられる。ここで、読み出し先のサブページに対応するアドレスは、フラッシュインタフェース部36内の物理ブロックアドレスレジスタとサブページ番号レジスタに設定されている情報に基づいて生成される。サブページ番号レジスタに設定されている番号は、1サブページの読み出しが終了する毎にインクリメント(1ずつ加算)され、カウンタに設定されている値は、1サブページの読み出しが終了する毎にデクリメント(1ずつ減算)され、カウンタに設定されている値が0になったときに処理を終了する。つまり、カウンタに設定されたサブページ数の読み出し処理が行われる。
ユーザ領域から読み出されたデータはバッファ32及び誤り検出訂正部34に転送され、誤り検出訂正部34には冗長領域から読み出された誤り訂正符号も転送される。誤り検出訂正部34は、ユーザ領域から読み出されたデータ及びこのデータに対応する誤り訂正符号に基づいてユーザ領域から読み出されたデータに含まれる誤りを検出する。ユーザ領域から読み出されたデータに含まれる誤りを検出したときは、バッファ32に保持されているデータを訂正する。
次に、誤りブロック管理部37によって作成及び更新される誤りブロックテーブルについて説明する。誤りブロックテーブルは、訂正が必要な誤りを含むデータが記憶されている物理ブロックと対応関係にある論理ブロックを特定するためのテーブルである。図4は、誤りブロックテーブルの1例であり、訂正が必要な誤りを含むデータが記憶されている物理ブロックと対応関係にある論理ブロックの論理ブロック番号を保持している。ここで、論理ブロックを特定する情報は、論理ブロック番号以外の情報であってもよい。なお、論理ブロックと物理ブロックの対応関係は、アドレス変換テーブルを参照すれば分かるので、訂正が必要な誤りを含むデータが記憶されている物理ブロックを特定する情報(例えば、物理ブロックアドレス)を誤りブロックテーブルに保持するようにしてもよい。
次に、誤りブロックテーブルの作成処理について説明する。誤りブロックテーブルは起動時又はホストシステム4から与えられる指示情報に基づくアクセス処理が行われていないときに作成される。誤りブロックテーブルを作成するときは、誤りブロック管理部37内に設定された検査範囲で特定される領域からデータを読み出し、読み出したデータに所定数以上の誤りが含まれている場合には、そのデータが記憶されていた物理ブロックに対応する論理ブロックの論理ブロック番号を誤りブロックテーブルに書き込む。
検査範囲を示す情報は、LBAで検査範囲を示す情報であっても、論理ブロック番号で検査範囲を示す情報であってもよい。例えば、検査範囲の先頭論理ブロック番号と末尾論理ブロック番号で検査範囲を特定する。検査範囲は、FAT、ログデータ、ジャーナルデータ等の書換え頻度の高いデータが記憶される領域が含まれるように設定することが好ましい。検査範囲は、ホストシステム4から外部バス11を介して設定できるようにしてもよい。又は、メモリコントローラ3の入出力端子(図示していない)の一部を、検査範囲を設定するための端子に割り当ててもよい。
なお、所定数以上の誤りが含まれているか否かは、セクタ単位で判断し、所定数以上の誤りが含まれているセクタを検出したときは、そのセクタが含まれる論理ブロックから、そのセクタ以降のデータ読み出しは行わず、検査範囲の次の論理ブロックに対応する物理ブロックからのデータ読み出しに移行する。例えば、検査範囲が論理ブロック番号#0〜#9の論理ブロックの場合に、論理ブロック番号#0の論理ブロック内の先頭セクタから順番にデータを読み出していき、セクタ番号#30に対応するデータを読み出したときに所定数以上の誤りが検出されたとき(セクタ番号#30に対応するデータに所定数以上の誤りが含まれていたとき)は、セクタ番号#31以降のセクタに対応するデータの読み出しは行わず、論理ブロック番号#1の論理ブロックからのデータ読み出しに移行する。
ホストシステム4から与えられる指示情報に基づくアクセス処理が行われていないときには、検査範囲に含まれない領域からデータ読み出し、所定数以上の誤りが含まれているデータが記憶されている物理ブロックを検出したときは、その物理ブロックを示す情報を誤りブロックテーブルに追加するようにしてもよい。こうすることにより、検査範囲に含まれない領域についても効率的に記憶データに含まれる誤りを訂正することができる。
ホストシステム4から与えられる指示情報に基づく書き込み処理に伴って実行される誤り訂正処理について図5を参照して説明する。図5は、本発明によるフラッシュメモリの制御方法を示した処理フローであり、アドレス変換テーブル及び誤りブロックテーブルは処理開始時に既に作成されているものとする。
(S51)ホストシステム4から書き込み処理を指示する外部コマンドと共に与えられるLBA範囲を取得する。
(S52)LBA範囲が含まれる論理ブロックと対応する物理ブロック内のデータが記憶されている最後のサブページのサブページ番号(以下、末尾サブページ番号と言う。)を求める。求めた末尾サブページ番号に基づいてデータ移動処理が発生するか否かを判断する。例えば、末尾サブページ番号が#127で、LBA範囲がサブページ番号#32〜#127に対応する場合、サブページ番号#0〜#31のサブページに記憶されているデータについてデータ移動処理が発生する。また、末尾サブページ番号が#31で、LBA範囲がサブページ番号の#32〜127に対応する場合、サブページ番号#32以降のサブページに追加書き込みをすることができるのでデータ移動処理が発生しない。更に、末尾サブページ番号が#31で、LBA範囲がサブページ番号の#0〜63に対応する場合、総てのデータが書き換えられるためデータ移動処理が発生しない。
(S53)データ移動処理が発生する場合は、LBA範囲が含まれる論理ブロックの論理ブロック番号が誤りブロックテーブルに保持されているか否かを誤りブロック管理部37に問い合わせる。例えば、図4に示したように、誤りブロックテーブルに論理ブロック番号#1、#10、#21が保持されているときに、論理ブロック番号#1が誤りブロックテーブルに保持されているか否かを問い合わせた場合、誤りブロック管理部37は論理ブロック番号#1が誤りブロックテーブルに保持されているという判断結果を制御部35に通知する。
(S54)データ移動処理が発生しない場合、つまり、追加書き込みをすることができる場合や総てのデータが書き換えられる場合は、ホストシステム4から与えられるデータの書き込み処理を実行する。また、LBA範囲が含まれる論理ブロックと対応する物理ブロックに記憶されているデータが総てホストシステム4から与えられるデータで書き換えられてしまう場合は、書き込み処理が終了した後に、LBA範囲が含まれる論理ブロックの論理ブロック番号と消去指示が誤りブロック管理部37に通知される。通知された論理ブロック番号が誤りブロックテーブルに保持されている場合は、その論理ブロック番号が誤りブロックテーブルから消去される。
(S55)データ移動処理の対象データに対応する論理ブロック番号が誤りブロックテーブルに保持されている場合、データ移動処理を兼ねた誤り訂正処理を実行するため再書き込み処理によるデータのコピーが行われる。つまり、移動元の物理ブロックに記憶されているデータをバッファ32に読み出し、誤り検出訂正部34が読み出したデータに含まれる誤りを訂正する。続いて、誤りを訂正したデータを移動先の物理ブロックに書き込む。書き換えられるデータについては、ホストシステム4から与えられるデータの書き込み処理を実行する。また、データ移動処理を兼ねた誤り訂正処理が終了した後に、誤り訂正処理が終了したことが誤りブロック管理部37に通知され、誤り訂正処理がなされた論理ブロックの論理ブロック番号が誤りブロックテーブルから消去される。
(S56)データ移動処理の対象データに対応する論理ブロック番号が誤りブロックテーブルに保持されていない場合、コピーバック処理によるデータのコピーが行われる。コピーバック処理によりデータ移動処理が行われた場合、記憶データに含まれる誤りは訂正されないが、データ移動処理にかかる時間を短縮することができる。書き換えられるデータについては、ホストシステム4から与えられるデータの書き込み処理を実行する。
なお、S54〜S56の処理で論理ブロックと物理ブロックの対応関係が変化した場合は、アドレス変換テーブルの情報が更新される。
以上に説明したように、本発明における誤り訂正処理は、ホストシステム4から与えられる指示情報に基づく書き込み処理に伴って実行されるデータ移動処理と共に行われる。つまり、データ移動処理を実行する必要が生じたとき、データ移動処理を兼ねた誤り訂正処理が実行されるので、データに含まれる誤りを訂正するためだけの誤り訂正処理を実行する場合よりもホストシステム4から与えられる指示情報に基づくアクセス処理に及ぼす影響を小さくすることができる。また、データ移動処理を兼ねた誤り訂正処理を実行するか否かは、誤りブロックテーブルに保持されている情報に基づいて判断されるので、誤りブロックテーブルを作成するときの検査範囲を適宜設定することにより、効率的にデータに含まれる誤りを訂正することができる。したがって、誤りブロックテーブルを作成するときの検査範囲は、FAT、ログデータ、ジャーナルデータ等の書換え頻度が高いデータが含まれるように設定することが好ましい。このように設定することにより、頻繁に書き換えられるデータと同一ブロックに記憶されている読み出し頻度の低いデータに含まれる誤りを訂正することができる。
また、誤りブロックテーブルに追加するか否かを判断する記憶データに含まれる誤りの数(所定数)については、用途に応じて適宜設定することができる。例えば、信頼性を重視する用途の場合には、所定数の値を小さくし、アクセススピードを重視する場合には、所定数の値を大きくすればよい。この所定数の設定は、ホストシステム4から外部バス11を介して設定できるようにしてもよい。又は、メモリコントローラ3の入出力端子(図示していない)の一部を、この所定数を設定するための端子に割り当ててもよい。
本発明によるメモリシステムの機能ブロック図である。 本発明によるメモリコントローラの機能ブロック図である。 アドレス管理部におけるアドレス変換の説明図である。 誤りブロックテーブルを示す図である。 本発明によるメモリ制御方法の処理フロー図である。 フラッシュメモリのページとブロックの関係を示す図である。
符号の説明
1 メモリシステム
11 外部バス
12 内部バス
2 フラッシュメモリ
3 メモリコントローラ
31 ホストインタフェース部
32 バッファ
33 ECC生成部
34 誤り検出訂正部
35 制御部
351 コマンド処理部
352 アドレス処理部
36 フラッシュインタフェース部
37 誤りブロック管理部
4 ホストシステム

Claims (5)

  1. ホストシステムから与えられる指示情報に基づいて、ページ単位でデータの書き込み又は読み出しが行われ、ブロック単位で記憶データの消去が行われる不揮発性メモリに対するアクセスを制御するメモリコントローラであって、
    ホストシステムから与えられる論理アドレスと前記不揮発性メモリ内の物理アドレスの関係を管理するアドレス管理手段と、
    前記不揮発性メモリにデータを書き込む書き込み手段と、
    前記不揮発性メモリに記憶されているデータを読み出す読み出し手段と、
    前記不揮発性メモリから読み出したデータに含まれる誤りを検出、訂正する訂正手段と、
    所定数以上の誤りを含むデータを記憶している物理ブロックを特定する情報を保持する誤りブロックテーブルを作成するテーブル作成手段と、
    前記誤りブロックテーブルに保持されている情報を更新するテーブル更新手段と、
    前記ホストシステムから与えられる指示情報に基づく書き込み処理に伴って実行されるデータ移動処理の対象データに対して、前記訂正手段による誤り訂正を行う必要があるか否かを、前記誤りブロックテーブルに保持されている情報に基づいて判断する判断手段と、
    前記データ移動処理を前記不揮発性メモリ内で実行させる指示を前記不揮発性メモリに与えるコピーバック処理指示手段とを備え、
    前記判断手段が前記データ移動処理の対象データに対して誤り訂正を行う必要があると判断したときは、前記読み出し手段、前記訂正手段及び前記書き込み手段により前記データ移動処理を行い、
    前記判断手段が前記データ移動処理の対象データに対して誤り訂正を行う必要がないと判断したときは、前記コピーバック処理指示手段により前記データ移動処理を行うことを特徴とするメモリコントローラ。
  2. 前記誤りブロックテーブルに保持されている情報が、所定数以上の誤りを含むデータを記憶している物理ブロックに割り当てられた論理アドレスを示す情報であることを特徴とする請求項1に記載のメモリコントローラ。
  3. 前記テーブル作成手段は、前記誤りブロックテーブルを作成するための読み出し処理を行い、該読み出し処理の対象となるデータが論理アドレスで設定されることを特徴とする請求項1又は2に記載のメモリコントローラ。
  4. 請求項1から3のいずれか1項に記載のメモリコントローラと、
    ページ単位でデータの書き込み又は読み出しが行われ、ブロック単位で記憶データの消去が行われる不揮発性メモリと、
    を備えていることを特徴とするメモリシステム。
  5. ページ単位でデータの書き込み又は読み出しが行われ、ブロック単位で記憶データの消去が行われる不揮発性メモリのメモリ制御方法であって、
    前記不揮発性メモリに記憶されているデータを読み出す読み出しステップと、
    前記読み出しステップで読み出したデータに含まれる誤りを検出する誤り検出ステップと、
    前記誤り検出ステップで所定数以上の誤りが検出されたときに、該誤りを含むデータが記憶されている物理ブロックを特定する情報を保持する情報保持ステップと、
    書き込み処理に伴って実行されるデータ移動処理の対象データに対して誤り訂正を行う必要があるか否かを、前記情報保持ステップで保持した情報に基づいて判断する判断ステップと、
    前記判断ステップで誤り訂正を行う必要があると判断したときに、読み出し処理、誤り訂正処理及び書き込み処理により前記データ移動処理を実行する第1のデータ移動ステップと、
    前記判断ステップで誤り訂正を行う必要がないと判断したときに、コピーバック処理により前記データ移動処理を実行する第2のデータ移動ステップとを含むことを特徴とするメモリ制御方法。
JP2006178179A 2006-06-28 2006-06-28 メモリコントローラ、メモリシステム及びメモリ制御方法 Expired - Fee Related JP4513786B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006178179A JP4513786B2 (ja) 2006-06-28 2006-06-28 メモリコントローラ、メモリシステム及びメモリ制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006178179A JP4513786B2 (ja) 2006-06-28 2006-06-28 メモリコントローラ、メモリシステム及びメモリ制御方法

Publications (2)

Publication Number Publication Date
JP2008009614A JP2008009614A (ja) 2008-01-17
JP4513786B2 true JP4513786B2 (ja) 2010-07-28

Family

ID=39067788

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006178179A Expired - Fee Related JP4513786B2 (ja) 2006-06-28 2006-06-28 メモリコントローラ、メモリシステム及びメモリ制御方法

Country Status (1)

Country Link
JP (1) JP4513786B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5374075B2 (ja) * 2008-06-06 2013-12-25 エイチジーエスティーネザーランドビーブイ ディスク装置及びその制御方法
JP5592478B2 (ja) * 2010-03-26 2014-09-17 パナソニック株式会社 不揮発性記憶装置及びメモリコントローラ
JP2013171343A (ja) 2012-02-17 2013-09-02 Toshiba Corp ストレージデバイス
CN114464242B (zh) * 2022-01-13 2024-06-14 深圳市金泰克半导体有限公司 一种ddr测试方法、装置、控制器及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003186758A (ja) * 2001-12-20 2003-07-04 Toshiba Corp 不揮発性半導体記憶装置
JP2005078378A (ja) * 2003-08-29 2005-03-24 Sony Corp データ記憶装置及び不揮発性メモリに対するデータ書き込み方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3485938B2 (ja) * 1992-03-31 2004-01-13 株式会社東芝 不揮発性半導体メモリ装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003186758A (ja) * 2001-12-20 2003-07-04 Toshiba Corp 不揮発性半導体記憶装置
JP2005078378A (ja) * 2003-08-29 2005-03-24 Sony Corp データ記憶装置及び不揮発性メモリに対するデータ書き込み方法

Also Published As

Publication number Publication date
JP2008009614A (ja) 2008-01-17

Similar Documents

Publication Publication Date Title
JP4844639B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
TWI633428B (zh) 資料儲存裝置與記憶體裝置之資料處理方法
JP4666081B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP5592478B2 (ja) 不揮発性記憶装置及びメモリコントローラ
JP4513786B2 (ja) メモリコントローラ、メモリシステム及びメモリ制御方法
JP2007034581A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4661191B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4153535B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP2012068765A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4609406B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4655034B2 (ja) メモリコントローラ及びフラッシュメモリシステム並びにフラッシュメモリの制御方法
JP4332132B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4177292B2 (ja) メモリンコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4332134B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP3934659B1 (ja) メモリコントローラ及びフラッシュメモリシステム
JP2005292925A (ja) メモリコントローラ、フラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4661748B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4697146B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4177301B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4000124B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4304167B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4569554B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4332108B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4366283B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム
JP2012033045A (ja) 電子機器およびデータ読み出し方法

Legal Events

Date Code Title Description
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: 20100420

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130521

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees