(57)【要約】【課題】  引っ越し処理に要する時間を短縮、もしくは増大を抑制することが可能なメモリコントローラを提供すること。【解決手段】  メモリからのデータリードがメモリ内の引っ越し処理であるとき、エラーの数が閾値未満、又は閾値以下の場合には訂正処理を省略し、エラーの数が閾値以上、又は閾値を超える場合には訂正処理を実行する。【選択図】      図５
2008009944.tif 000002
【特許請求の範囲】
【請求項１】
メモリに接続可能であり、前記メモリを制御するメモリコントローラであって、
前記メモリから読み出した読み出しデータ及びこの読み出しデータのＥＣＣパリティが入力されるメモリインターフェースと、
前記インターフェースからの前記読み出しデータ及び前記ＥＣＣパリティが入力され、前記ＥＣＣパリティに基き、前記読み出しデータ中のエラーの有無、及びこのエラーの訂正情報を生成するＥＣＣコアと、
前記修正情報と、前記インターフェースからの前記読み出しデータとが入力され、前記読み出しデータ中にエラーがあった場合に、前記訂正情報に従って前記読み出しデータを訂正処理するバッファと、を備え
前記メモリからのデータリードが前記メモリ内の引っ越し処理であるとき、前記エラーの数が閾値未満、又は前記閾値以下の場合には前記訂正処理を省略し、前記エラーの数が前記閾値以上、又は前記閾値を超える場合には前記訂正処理を実行することを特徴とするメモリコントローラ。
【請求項２】
前記閾値の設定は可変であることを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記メモリからのデータリードがホストに対するデータリード処理であるとき、前記エラーの数が閾値未満、又は閾値以下に関らずに前記訂正処理を実行し、訂正処理された読み出しデータを前記ホストに出力することを特徴とする請求項２に記載のメモリコントローラ。
【請求項４】
前記メモリが擬似パス機能を有するとき、前記閾値は前記メモリの擬似パス上限値以上の値に設定されることを特徴とする請求項１乃至請求項３いずれか一項に記載のメモリコントローラ。
【請求項５】
前記閾値の上限値は、前記ＥＣＣコアのエラー検知訂正能力未満に設定されることを特徴とする請求項１乃至請求項４いずれか一項に記載のメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はメモリコントローラに係わり、特に、引っ越し処理を行なうメモリコントローラに関する。
【背景技術】
【０００２】
近年、デジタルカメラや携帯型オーディオプレーヤの急速な普及により、大容量の不揮発性半導体メモリの需要が拡大している。そして、不揮発性半導体メモリとしてＮＡＮＤ型フラッシュメモリが広く使用されている。
【０００３】
ＮＡＮＤ型フラッシュメモリにおいては、データは複数のメモリセルにつき一括して消去される。この消去単位をメモリブロックと呼ぶ。ＮＡＮＤ型フラッシュメモリではその特性上、データを上書きすることができない。従って、データを更新する際には、データ消去済みのメモリブロックに新規に更新データを書き込まなければならない。更新しなかったデータについては、更新前のデータが記録されたメモリブロックからデータを読み出し、更新データが書き込まれたブロックに書き戻す必要がある。これを本明細書ではデータの“引っ越し処理”と呼ぶ。引っ越し処理はページコピーコマンドに従って開始される。
【０００４】
このようなページコピーコマンドを用いた引っ越し処理を行なう場合、現状では読み出したデータにＥＣＣエラーが検出されると、メモリコントローラは、該当データについてはエラーを訂正し、エラー訂正後のデータをＮＡＮＤ型フラッシュメモリに送り、エラー訂正後のデータを更新データが書き込まれたブロックに書き戻すようにしている。
【０００５】
ＮＡＮＤ型フラッシュメモリの微細化に伴いエラー発生率は増加する傾向にある。本来高速に引っ越し処理が行なえるはずのページコピーコマンドを用いている場合でも、エラー訂正のための再データインが頻繁に発生し、思うような高速化が実現できなくなっていた。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
この発明は、引っ越し処理に要する時間を短縮、もしくは増大を抑制することが可能なメモリコントローラを提供する。
【課題を解決するための手段】
【０００７】
この発明の一態様に係るメモリコントローラは、メモリに接続可能であり、前記メモリを制御するメモリコントローラであって、前記メモリから読み出した読み出しデータ及びこの読み出しデータのＥＣＣパリティが入力されるメモリインターフェースと、前記インターフェースからの前記読み出しデータ及び前記ＥＣＣパリティが入力され、前記ＥＣＣパリティに基き、前記読み出しデータ中のエラーの有無、及びこのエラーの訂正情報を生成するＥＣＣコアと、前記修正情報と、前記インターフェースからの前記読み出しデータとが入力され、前記読み出しデータ中にエラーがあった場合に、前記訂正情報に従って前記読み出しデータを訂正処理するバッファと、を備え、前記メモリからのデータリードが前記メモリ内の引っ越し処理であるとき、前記エラーの数が閾値未満、又は前記閾値以下の場合には前記訂正処理を省略して前記エラーを含む読み出しデータを前記メモリに書き戻し、前記エラーの数が前記閾値以上、又は前記閾値を超える場合には前記訂正処理を実行して訂正処理された読み出しデータを前記メモリに書き戻す。
【発明の効果】
【０００８】
この発明によれば、引っ越し処理に要する時間を短縮、もしくは増大を抑制することが可能なメモリコントローラを提供できる。
【発明を実施するための最良の形態】
【０００９】
以下、この発明の実施形態を、図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【００１０】
（第１実施形態）
この発明の第１実施形態を、メモリコントローラを備える電子機器、例えば、メモリカードに組み込まれたメモリコントローラを例にして説明する。
【００１１】
まず、この発明を適用できるメモリカードの一例を説明する。
【００１２】
（メモリカードの一例）
図１は、メモリカードの一例を示す図である。
【００１３】
図１に示すように、メモリカード１００は、ホスト機器２００と、バスインタフェース６００を介してデータを送受信する。メモリカード１００は、ホスト機器２００に設けられたスロットに対して挿抜可能に形成される。
【００１４】
メモリカード１００は、メモリコントローラ３００と、不揮発性半導体メモリ（以下フラッシュメモリ）４００と、カード端子５００とを備える。
【００１５】
メモリコントローラ３００は、フラッシュメモリ４００を制御する。フラッシュメモリ４００の一例は、ＮＡＮＤ型フラッシュメモリである。
【００１６】
カード端子５００は、メモリコントローラ３００に電気的に接続される信号ピンであり、メモリカード１００の外部ピンとして機能する。本例のカード端子５００は、複数の信号ピン（第１ピン乃至第９ピン）を備える。第１ピン〜第９ピンに対する信号の割り当ての一例を、図２に示す。
【００１７】
図２に示すように、データ０乃至データ３は、第７ピン、第８ピン、第９ピン、及び第１ピンにそれぞれ割り当てられる。なお、第１ピンは、データ３だけでなく、カード検出信号に対しても割り当てられる。さらに、第２ピンはコマンドに割り当てられ、第３ピン、及び第６ピンは接地電位Ｖｓｓに、第４ピンは電源電位Ｖｄｄに、第５ピンはクロック信号に割り当てられる。
【００１８】
外部端子５００、及びバスインタフェース６００は、ホスト機器２００内のホスト機器コントローラ（図示せず）と、メモリカード１００との通信に使用される。例えば、ホスト機器コントローラは、第１ピン乃至第９ピンを介してメモリカード１００内のメモリコントローラ３００と各種信号、及びデータを通信する。例えば、メモリカード１００にデータを書き込むときには、ホスト機器コントローラは、書き込みコマンドを、第２ピンを介してメモリコントローラ３００に送信する。このとき、メモリコントローラ３００は、第５ピンに供給されるクロック信号に応答して、第２ピンに与えられる書き込みコマンドを取り込む。コマンドの入力に割り当てられる第２ピンは、データ３用の第１ピンと接地電位Ｖｓｓ用の第３ピンとの間に配置される。
【００１９】
これに対し、メモリコントローラ３００とフラッシュメモリ４００との間の通信は、例えば、８ビットのＩＯ線（データライン）７００を介して行われる。
【００２０】
メモリコントローラ３００が、フラッシュメモリ４００にデータを書き込むときには、メモリコントローラ３００は、ＩＯ線７００を介してデータ入力コマンド８０ｈ、カラムアドレス、ページアドレス、データ、及びプログラムコマンド１０ｈをフラッシュメモリ４００に順次入力する。ここで、コマンド８０ｈの“ｈ”は１６進数を示すものであり、実際には“１０００００００”という８ビットの信号が、８ビットのＩＯ線７００にパラレルに与えられる。また、フラッシュメモリ４００に対するコマンドの送信、及びデータの送受信は、ともにＩＯ線７００を共用して行われる。
【００２１】
図３は、メモリカードのハード構成の一例を示すブロック図である。
【００２２】
ホスト機器２００は、メモリカード１００に対してアクセスを行うためのハードウェア、及びソフトウェアを備える。ホスト機器２００の例としては、携帯電話、デジタルカメラ（ビデオカメラ、スチルカメラ）、オーディオ機器、オーディオ／ビジュアル機器、ゲーム機器、電子楽器、テレビジョン、パーソナルコンピュータ、パーソナルデジタルアシスタント、ボイスレコーダ、ＰＣカード、及び電子書籍端末等を挙げることができる。
【００２３】
メモリカード１００は、ホスト機器２００に接続された時に電源供給を受けて動作し、ホスト機器２００からのアクセスに応じた処理を行う。
【００２４】
フラッシュメモリ４００は、消去時の消去ブロックサイズ（消去単位のブロックサイズ）が所定サイズ（例えば、２５６ｋＢ）に定められている。また、このフラッシュメモリ４００に対して、ページと称する単位（例えば、２ｋＢ）でデータの書き込み、及び読み出しが行われる。
【００２５】
メモリコントローラ３００は、フラッシュメモリ４００内部の物理状態（例えば、何処の物理ブロックアドレスに、何番目の論理セクタアドレスデータが含まれているか、あるいは、何処のブロックが消去状態であるか）を管理する。メモリコントローラ３００は、ホスト機器インターフェース３０１、ＣＰＵ（Central Processing Unit）３０３、メモリインターフェース（フラッシュインターフェース）３０５、ＲＯＭ（Read Only Memory）３０７、ＲＡＭ（Random Access Memory）３０９、バッファ（Buffer）３１１、及びＥＣＣコア（ECC core）３１３を含む。
【００２６】
ホスト機器インターフェース３０１は、ホスト機器２００とメモリコントローラ３００との間のインターフェース処理を行う。
【００２７】
ＣＰＵ３０３は、メモリカード１００全体の動作を制御する。ＣＰＵ３０３は、例えば、メモリカード１００が電源供給を受けたときに、ＲＯＭ３０７に格納されているファームウェア（制御プログラム）をＲＡＭ３０９上に読み出して所定の処理を実行することにより、各種のテーブルをＲＡＭ３０９上に作成する。
【００２８】
また、ＣＰＵ３０３は、書き込みコマンド、読み出しコマンド、消去コマンドをホスト機器２００から受け取り、フラッシュメモリ４００に対して所定の処理を実行したり、バッファ３１１を通じたデータ転送処理を制御したりする。
【００２９】
ＲＯＭ３０７は、ＣＰＵ３０３により制御される制御プログラムなどを格納する。
【００３０】
ＲＡＭ３０９は、ＣＰＵ３０３の作業エリアとして使用され、制御プログラムや各種のテーブルを記憶する。
【００３１】
メモリインターフェース３０５は、メモリコントローラ３００とフラッシュメモリ４００との間のインターフェース処理を行う。
【００３２】
バッファ３１１は、ホスト機器２００から送られてくるデータをフラッシュメモリ４００へ書き込む際に、一定量のデータ（例えば、１ページ分）を一時的に記憶したり、フラッシュメモリ４００から読み出されるデータをホスト機器２００へ送り出す際に、一定量のデータを一時的に記憶したりする。
【００３３】
ＥＣＣコア３１３は、フラッシュメモリ４００へデータを書き込む際、ホスト機器２００から送られてくるデータからＥＣＣパリティを生成し、フラッシュメモリ４００からデータを読み出す際、書き込んだデータと読み出したデータとの間にエラーがある場合には、ＥＣＣパリティに基づいて、エラーを検知して訂正する。
【００３４】
本例のメモリコントローラは、フラッシュメモリ４００からのデータリードが、フラッシュメモリ４００の引っ越し処理であるとき、読み出したデータ中のエラーの数が閾値未満、又は閾値以下の場合には訂正処理を省略する。反対に、エラーの数が閾値以上、又は閾値を超える場合には訂正処理を実行する。
【００３５】
このように、本例では、フラッシュメモリ４００内の引っ越し処理であるとき、現状では、読み出したデータにエラーがあれば逐一訂正してところを、エラーの数が閾値未満、又は閾値以下の場合には、エラーの訂正を省略するようにする。これにより、例えば、逐一訂正する場合に比較して、エラー訂正に要する演算処理と、エラー訂正のための、例えば、フラッシュメモリ４００への再データ入力を減らすことができる。演算処理と、再データ入力が減ることで、引っ越し処理に要する時間を短縮すること、もしくは引っ越し処理に要する時間の増大を抑制することができる。
【００３６】
以下、より具体的に説明する。
【００３７】
図４は、メモリカードに利用されるページフォーマットの一例を示す図である。
【００３８】
図４に示すように、一例に係るページフォーマットは、１ページ中に、複数のブロックを含む。本例ではｎ個のブロックを含む。ブロックは、何ビット毎にＥＣＣパリティを付加するかの単位である。
【００３９】
ページコピーコマンドを用いた引っ越し処理を行なうとき、引っ越し処理の書き戻し処理方法は、図４に示すページ単位で一括して書き戻す場合と、図４に示すブロック単位で個別に書き戻す場合との２通りがある。以下、２通りの方法に従って順次説明する。
【００４０】
（第１例：ページ単位一括書き戻し）
図５は、この発明の第１実施形態に係るメモリコントローラが実行する引っ越し処理シーケンスの第１例を示す流れ図である。
【００４１】
図５に示すように、まず、エラー位置情報を初期化する（Ｓｔ．１）。エラー位置の情報は、例えば、図３に示したＲＡＭ３０９に記録しておけば良い。この場合、ＲＡＭ３０９が有するメモリ領域のうち、エラー位置情報が記録されたメモリ領域の情報を初期化（クリア）すれば良い。
【００４２】
次に、フラッシュメモリ４００からメモリインターフェース３０５に、図４に示したブロック単位のデータと、このブロック単位のデータのＥＣＣパリティとを読み出す。メモリインターフェース３０５は、ブロック単位のデータをバッファ３１１に転送するとともに、ブロック単位のデータ及びそのＥＣＣパリティをＥＣＣコア３１３に転送する。バッファ３１１はブロック単位のデータを一時的に保持する。ＥＣＣコア３１３は転送されたブロック単位のデータを、そのＥＣＣパリティに基いてＥＣＣ処理する（Ｓｔ．２）。
【００４３】
次に、ＥＣＣ処理の結果に基いて、ＥＣＣコア３１３は、検知されたエラー数が閾値を超えるか否か（エラー数＞閾値）を判断する（Ｓｔ．３）。この判断はＥＣＣコア３１３が実行しなくても、エラー数と閾値とを比較する比較回路をメモリコントローラ３００内に設け、この比較回路を用いて判断するようにしても良い。また、エラー数は閾値以上か（エラー数≧閾値）で判断しても良い。これらの変形は後述する第２例においても同様に適用できる。
【００４４】
エラー数が閾値以下である（Ｎｏ）、と判断された場合にはＳｔ．５に進む。
【００４５】
エラー数が閾値を超える（Ｙｅｓ）、と判断された場合にはＳｔ．４に進む。Ｓｔ．４において、例えば、ＥＣＣコア３１３はエラー数が閾値を超えたことをＣＰＵ３０３に通知する。この通知を受けてＣＰＵ３０３は処理を一旦停止させる。処理が停止されている間に、ＥＣＣコア３１３はＣＰＵ３０３を介して、エラー位置情報を、例えば、ＲＡＭ３０９に記録する。エラー位置情報には、訂正すべきブロックの位置、及び訂正すべきブロックの訂正シンボル数が含まれる。記録した後、処理を再開してＳｔ．５に進む。
【００４６】
次に、Ｓｔ．４において、読み出されたデータがページ境界（ページ末尾）であるか、又は最終データであるかを判断する。
【００４７】
ページ境界、又は最終データではない（Ｎｏ）、と判断された場合にはＳｔ．２に戻り、Ｓｔ．２〜Ｓｔ．５を繰り返す。
【００４８】
ページ境界、又は最終データである（Ｙｅｓ）、と判断された場合にはＳｔ．６に進む。
【００４９】
次に、Ｓｔ．６において、バッファ３１１に一時的に保持された読み出しデータを、フラッシュメモリ４００の、例えば、ページバッファに書き戻す。この際、エラー位置情報が記録されたブロックがあれば、このブロックについては訂正したデータを、例えば、バッファ３１１に再データ入力する。この後、バッファ３１１に一時的に保持され、再データ入力されたデータを含む読み出しデータを、フラッシュメモリ４００の、例えば、ページバッファに書き戻す。
【００５０】
この後、フラッシュメモリ４００は、ページバッファに保持された読み出しデータを、メモリセルアレイの該当ページに書き込む。これにより、１ページ分の引っ越し処理が終了する。
【００５１】
図６に、書き戻し処理をページ単位で実行する場合の、データ入出力の一例を示す。図６に示すデータ入出力は、メモリコントローラ３００とフラッシュメモリ４００との間の、８ビットのＩＯ線７００におけるデータ入出力を示している。
【００５２】
図６に示す一例では、まず、コマンド００ｈを入力した後、引っ越し元アドレスを順次入力する。コマンド３０ｈを入力した後、１ページ分のデータリードが開始される。本例では、５１２バイト単位でＥＣＣパリティが付加されており、５１２バイト毎にＥＣＣチェックが実行され、閾値を超えるエラーがあれば、バッファ３１１に訂正のための再データ入力が実行される。
【００５３】
コマンド８Ｃｈが入力されると、書き戻し処理が開始される。コマンド８Ｃｈを入力した後、引っ越し先アドレスを順次入力した後、バッファ３１１に保持されたデータを、引っ越し先アドレスに書き戻す。
【００５４】
なお、図６に示す一例では、該当ブロックの総入れ替えを実行する例を示しているが、エラー対象カラムのみの変更でも良い。
【００５５】
（第２例：ブロック単位個別書き戻し）
図７は、この発明の第１実施形態に係るメモリコントローラが実行する引っ越し処理シーケンスの第２例を示す流れ図である。
【００５６】
図７に示すように、まず、第１例と同様に、エラー位置情報を初期化する（Ｓｔ．１）。エラー位置情報の記録の仕方は第１例と同様で良い。
【００５７】
次に、フラッシュメモリ４００からメモリインターフェース３０５に、図４に示したブロック単位のデータと、このブロック単位のデータのＥＣＣパリティとを読み出す。メモリインターフェース３０５は、ブロック単位のデータをバッファ３１１に転送するとともに、ブロック単位のデータ及びそのＥＣＣパリティをＥＣＣコア３１３に転送する。バッファ３１１はブロック単位のデータを一時的に保持する。ＥＣＣコア３１３は転送されたブロック単位のデータを、そのＥＣＣパリティに基いてＥＣＣ処理する（Ｓｔ．２）。
【００５８】
次に、ＥＣＣ処理の結果に基いて、ＥＣＣコア３１３は、検知されたエラー数が閾値を超えるか否か（エラー数＞閾値）を判断する（Ｓｔ．３）。
【００５９】
エラー数が閾値以下である（Ｎｏ）、と判断された場合には、バッファ３１１へのデータ入力のみとして、Ｓｔ．５に進む。
【００６０】
エラー数が閾値を超える（Ｙｅｓ）、と判断された場合にはＳｔ．４に進む。バッファ３１１へ、訂正したデータを再データ入力する。この後、バッファ３１１に再データ入力された訂正読み出しデータを、フラッシュメモリ４００の、例えば、ページバッファに書き戻す。この後Ｓｔ．５に進む。
【００６１】
次に、Ｓｔ．５において、読み出されたデータがページ境界（ページ末尾）であるか、又は最終データであるかを判断する。
【００６２】
ページ境界、又は最終データではない（Ｎｏ）、と判断された場合にはＳｔ．２に戻り、Ｓｔ．２〜Ｓｔ．４を繰り返す。
【００６３】
ページ境界、又は最終データである（Ｙｅｓ）、と判断された場合にはＳｔ．６に進む。
【００６４】
次に、Ｓｔ．６において、例えば、メモリコントローラ３００のＣＰＵ３０３はフラッシュメモリ４００にプログラムコマンドを発行する。フラッシュメモリ４００には、エラー訂正が実行されたブロックのみ、データが再入力される。フラッシュメモリ４００はプログラムコマンドを受信すると、フラッシュメモリ４００のページバッファに保持された読み出しデータを、メモリセルアレイの該当ページに書き込む。これにより、１ページ分の引っ越し処理が終了する。
【００６５】
（第２実施形態）
第２実施形態は、閾値を目的に応じて可変設定可能とする例である。本例では、閾値を、特に、データリードが引っ越し処理か否かに応じて可変とする。
【００６６】
図８は、この発明の第２実施形態に係るメモリコントローラが実行する閾値可変設定シーケンスの一例を示す流れ図である。
【００６７】
図８に示すように、例えば、ＣＰＵ３０３にコマンドが入力された、又はＣＰＵ３０３がコマンドを発行した、とする。
【００６８】
次に、Ｓｔ．１において、入力されたコマンド、又は発行したコマンドが、引っ越し処理か否かを判断する。
【００６９】
引っ越し処理ではない（Ｎｏ）、と判断された場合には、閾値を設定せずに、コマンドに従った処理を開始する。
【００７０】
引っ越し処理である（Ｙｅｓ）、と判断された場合には、閾値を設定したのち、コマンドに従った処理を開始する。
【００７１】
このように、閾値を目的に応じて可変設定可能とすること、例えば、本例のように、引っ越し処理に限って閾値を設定すれば、例えば、ホストに対するデータリード処理においては、訂正可能な範囲であれば処理を中断することなく訂正処理してデータを出力することができる。即ち、エラーがあればこのエラーを訂正した後、ホストに送ることができる。
【００７２】
このため、メモリコントローラに、第１実施形態のように、エラーがあっても閾値までは訂正せずに許容する、という処理シーケンスを採用した場合においても、ホストに対するデータリード処理においては、エラーを訂正してホストに送ることができるので、信頼性の高いリード性能を確保することができる。
【００７３】
（第３実施形態）
不揮発性半導体メモリ、例えば、ＮＡＮＤ型フラッシュメモリには、ページバッファに書き込まれたデータと、実際にメモリセルに書き込んだデータとの間にエラーがあっても、エラーの数が所定数未満、又は所定数以下であれば、書き込み失敗（フェイル）とせず、書き込み成功（パス）として取り扱うものがある。一般に、“擬似パス機能”と呼ばれる機能である。
【００７４】
擬似パス機能を有する不揮発性半導体メモリの一例においては、例えば、メモリコントローラが４シンボルのエラー検知訂正が可能な場合には、上記エラーの数が、例えば、“１個”までは書き込み成功（パス）として取り扱う。この場合、不揮発性半導体メモリが擬似パスとして許容するエラーの数（以下擬似パス上限値）は“１”である。
【００７５】
また、メモリコントローラが８シンボルのエラー検知訂正が可能な場合には、上記エラーの数が、例えば、“４個”までは書き込み成功（パス）として取り扱う。この場合、擬似パス上限値は“４”である。
【００７６】
メモリコントローラが、擬似パス機能を有した不揮発性半導体メモリをコントロールする場合には、メモリコントローラの閾値は、擬似パス上限値以上の値に設定することが良い。メモリコントローラの閾値を上記擬似パス上限値未満に設定すると、引っ越し処理の際に訂正処理が頻発しやすくなる可能性があるためである。
【００７７】
そこで、第３実施形態に係るメモリコントローラは、不揮発性半導体メモリが擬似パス機能を有するとき、メモリコントローラの閾値は、擬似パス上限値以上の値に設定する。
【００７８】
これにより、不揮発性半導体メモリが擬似パス機能を有するときでも、引っ越し訂正処理が頻発する可能性を軽減することができる。
【００７９】
また、メモリコントローラの閾値の上限値は、ＥＣＣコアのエラー検知訂正能力未満に設定することが良い。例えば、ＥＣＣコアが４シンボルのエラー検知訂正が可能な場合には、上記閾値の上限値は“３”としてエラー数に１個の余裕を持たせる。この余裕は、引っ越し処理後にエラーが発生する可能性を見込んで、持たせるものである。例えば、ＥＣＣコアが４シンボルのエラー検知訂正が可能な場合には、上記閾値の上限値は“４”に設定することも可能である。しかし、“４”に設定してしまうと、引っ越し処理後に１個でもエラーが発生してしまうと、ＥＣＣコアのエラー検知訂正能力を超えてしまう。これでは、ＥＣＣコアは、エラー検知訂正が不可能になってしまう。
【００８０】
そこで、第３実施形態に係るメモリコントローラは、閾値の上限値を、ＥＣＣコアのエラー検知訂正能力未満に設定する。
【００８１】
これにより、引っ越し処理後にエラーが発生した場合でも、ＥＣＣコアは、そのエラーを含めて検知訂正することができる。
【００８２】
また、エラー訂正符号の例であるが、エラー検知訂正能力は高いほうが、閾値の上限値を高く設定でき、かつ、エラー数の余裕も大きく設定できるから良い。このようなエラー訂正符号としては、リードソロモン符号を挙げることができる。
【００８３】
このように上記実施形態によれば、引っ越し処理に要する時間を短縮、もしくは増大を抑制することが可能なメモリコントローラを提供できる。
【００８４】
また、上記実施形態は、以下の態様を含む。
【００８５】
（１）  メモリに接続可能であり、前記メモリを制御するメモリコントローラであって、
前記メモリから読み出した読み出しデータ及びこの読み出しデータのＥＣＣパリティが入力されるメモリインターフェースと、
前記インターフェースからの前記読み出しデータ及び前記ＥＣＣパリティが入力され、前記ＥＣＣパリティに基き、前記読み出しデータ中のエラーの有無、及びこのエラーの訂正情報を生成するＥＣＣコアと、
前記修正情報と、前記インターフェースからの前記読み出しデータとが入力され、前記読み出しデータ中にエラーがあった場合に、前記訂正情報に従って前記読み出しデータを訂正処理するバッファと、を備え
前記メモリからのデータリードが前記メモリ内の引っ越し処理であるとき、前記エラーの数が閾値未満、又は前記閾値以下の場合には前記訂正処理を省略し、前記エラーの数が前記閾値以上、又は前記閾値を超える場合には前記訂正処理を実行するメモリコントローラ。
【００８６】
（２）  （１）の態様に係るメモリコントローラにおいて、前記閾値の設定は可変であるメモリコントローラ。
【００８７】
（３）  （２）の態様に係るメモリコントローラにおいて、前記メモリからのデータリードがホストに対するデータリード処理であるとき、前記エラーの数が閾値未満、又は閾値以下に関らずに前記訂正処理を実行し、訂正処理された読み出しデータを前記ホストに出力するメモリコントローラ。
【００８８】
（４）  （１）乃至（３）いずれか一つの態様に係るメモリコントローラにおいて、前記メモリが擬似パス機能を有するとき、前記閾値は前記メモリの擬似パス上限値以上の値に設定されるメモリコントローラ。
【００８９】
（５）  （１）乃至（４）いずれか一つの態様に係るメモリコントローラにおいて、前記閾値の上限値は、前記ＥＣＣコアのエラー検知訂正能力未満に設定されるメモリコントローラ。
【００９０】
（６）  （１）乃至（５）いずれか一つの態様に係るメモリコントローラにおいて、前記ＥＣＣコアのエラー検知訂正符号は、リードソロモン符号であるメモリコントローラ。
【００９１】
以上、この発明をいくつかの実施形態により説明したが、この発明は各実施形態に限定されるものではなく、その実施にあたっては発明の要旨を逸脱しない範囲で種々に変形することが可能である。
【００９２】
また、各実施形態は単独で実施することが可能であるが、適宜組み合わせて実施することも可能である。
【００９３】
また、各実施形態は種々の段階の発明を含んでおり、各実施形態において開示した複数の構成要件の適宜な組み合わせにより、種々の段階の発明を抽出することが可能である。
【００９４】
また、上記実施形態は、この発明を、不揮発性半導体メモリをコントロールするコントローラに適用した例に基づき説明したが、この発明はメモリコントローラに限られるものではなく、このコントローラを内蔵した半導体集積回路装置、例えば、プロセッサ、システムＬＳＩ等もまた、この発明の範疇である。
【００９５】
また、不揮発性半導体メモリの一例としてＮＡＮＤ型フラッシュメモリを例示したが、上記実施形態に係わるメモリコントローラによってコントロールされる不揮発性半導体メモリは、ＮＡＮＤ型フラッシュメモリに限られるものではなく、ＡＮＤ型、ＮＯＲ型等、ＮＡＮＤ型以外のフラッシュメモリでも良い。
【図面の簡単な説明】
【００９６】
【図１】図１はメモリカードの一例を示す図
【図２】図２はメモリカードの信号割り当ての一例を示す図
【図３】図３はメモリカードのハード構成の一例を示すブロック図
【図４】図４はメモリカードに利用されるページフォーマットの一例を示す図
【図５】図５はこの発明の第１実施形態に係るメモリコントローラが実行する引っ越し処理シーケンスの第１例を示す流れ図
【図６】図６は書き戻し処理をページ単位で実行する場合のデータ入出力の一例を示す図
【図７】図７はこの発明の第１実施形態に係るメモリコントローラが実行する引っ越し処理シーケンスの第２例を示す流れ図
【図８】図８は、この発明の第２実施形態に係るメモリコントローラが実行する閾値可変設定シーケンスの一例を示す流れ図
【符号の説明】
【００９７】
３００…メモリコントローラ、３０５…メモリインターフェース、３１３…ＥＣＣコア、３１１…バッファ。
【図１】
2008009944.tif 000003
【図２】
2008009944.tif 000004
【図３】
2008009944.tif 000005
【図４】
2008009944.tif 000006
【図５】
2008009944.tif 000007
【図６】
2008009944.tif 000008
【図７】
2008009944.tif 000009
【図８】
2008009944.tif 000010