(57)【要約】【課題】  複数個のフラッシュメモリに並行してアクセスする場合に、エラー訂正回路の回路規模が増大するのを抑制することができるメモリコントローラ、当該メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法を提供する。【解決手段】  複数個のフラッシュメモリに対して並行してアクセスする構成のフラッシュメモリシステムで、前記フラッシュメモリから読み出したデータに含まれる誤りの有無を判断する誤り検出手段と、前記フラッシュメモリから読み出したデータに含まれる誤りを訂正する誤り訂正手段と、前記誤り検出手段で誤りが含まれていると判断されたデータだけが、前記誤り訂正手段で誤り訂正が行われるように制御する制御手段とを備え、前記誤り検出手段の個数は、並行してアクセスされる前記フラッシュメモリの個数と同数にし、前記誤り訂正手段の個数は、並行してアクセスされる前記フラッシュメモリの個数より少なくする。【選択図】図３
2008102693.tif 000002
【特許請求の範囲】
【請求項１】
ホストシステムから与えられる指示情報に応じて、複数個のフラッシュメモリに対する並行したアクセスを制御するメモリコントローラであって、
前記フラッシュメモリから読み出したデータに含まれる誤りの有無を判断する誤り検出手段と、
前記フラッシュメモリから読み出したデータに含まれる誤りを訂正する誤り訂正手段と、
前記誤り検出手段で誤りが含まれていると判断されたデータだけが、前記誤り訂正手段で誤り訂正が行われるように制御する制御手段とを備え、
前記誤り検出手段の個数が並行してアクセスされる前記フラッシュメモリの個数と同数であり、前記誤り訂正手段の個数が並行してアクセスされる前記フラッシュメモリの個数より少ないことを特徴とするメモリコントローラ。
【請求項２】
前記誤り訂正手段には２個以上の前記誤り検出手段が割り当てられ、いずれかの前記誤り検出手段で誤りが含まれていると判断されたデータは、該誤り検出手段に割り当てられている前記誤り訂正手段で誤り訂正が行われることを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記制御手段は、前記ホストシステムから読み出される順番が先のデータの誤り訂正が先に行われるように制御することを特徴とする請求項１又は２に記載のメモリコントローラ。
【請求項４】
請求項１乃至３のいずれか１項記載のメモリコントローラと、
複数個のフラッシュメモリとを備えるフラッシュメモリシステム。
【請求項５】
ホストシステムから与えられる指示情報に応じて、複数個のフラッシュメモリに対する並行したアクセスを制御するフラッシュメモリの制御方法であって、
前記フラッシュメモリから読み出したデータに含まれる誤りの有無を判断する誤り検出ステップと、
前記フラッシュメモリから読み出したデータに含まれる誤りを訂正する誤り訂正ステップとを有し、
前記誤り検出ステップは、並行してアクセスされる前記フラッシュメモリから読み出したデータに対して並行して行われ、
前記誤り訂正ステップは、並行してアクセスされる前記フラッシュメモリから読み出したデータに対して予め設定された順番で行われることを特徴とするフラッシュメモリの制御方法。
【請求項６】
前記順番は、前記ホストシステムから読み出される順番が先のデータの誤り訂正が先に行われるように設定されていることを特徴とする請求項５に記載のフラッシュメモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ及び当該メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に関する。
【背景技術】
【０００２】
従来、フラッシュメモリから読み出したデータに含まれる誤りを検出、訂正する方法として、誤り訂正符号（エラーコレクションコード）に基づいて誤りを検出、訂正する方法が知られている。この誤り訂正符号としては、リードソロモン符号、ハミング符号、ＢＣＨ符号等がある。リードソロモン符号を用いたエラー訂正では、ハミング符号を用いたエラー訂正よりエラー訂正処理能力が高く、効率的なエラー訂正が可能であった。（例えば、特許文献１参照）。また、複数のフラッシュメモリを有する半導体ディスク装置では、複数のフラッシュメモリに並行してアクセスすることにより、アクセス速度の高速化がなされていた。（例えば、特許文献２参照）。
【特許文献１】特開２００６−１２７４４１
【特許文献２】特開２００４−２４０９９３
【発明の開示】
【発明が解決しようとする課題】
【０００３】
複数個のフラッシュメモリに並行してアクセスする場合、並行してアクセスされるフラッシュメモリと同数のエラー訂正回路が必要になる。従って、複数個のフラッシュメモリに並行してアクセスする半導体ディスク装置では、エラー訂正回路の回路規模が大きくなってしまっていた。
【０００４】
本発明は、かかる実情に鑑み、複数個のフラッシュメモリに並行してアクセスする場合に、エラー訂正回路の回路規模が増大するのを抑制することができるメモリコントローラ、当該メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法を提供しようとするものである。
【課題を解決するための手段】
【０００５】
上記目的を達成するために、本発明によるメモリコントローラは、ホストシステムから与えられる指示情報に応じて、複数個のフラッシュメモリに対する並行したアクセスを制御するメモリコントローラであって、前記フラッシュメモリから読み出したデータに含まれる誤りの有無を判断する誤り検出手段と、前記フラッシュメモリから読み出したデータに含まれる誤りを訂正する誤り訂正手段と、前記誤り検出手段で誤りが含まれていると判断されたデータだけが、前記誤り訂正手段で誤り訂正が行われるように制御する制御手段とを備え、前記誤り検出手段の個数が並行してアクセスされる前記フラッシュメモリの個数と同数であり、前記誤り訂正手段の個数が並行してアクセスされる前記フラッシュメモリの個数より少ないことを特徴とする。
【０００６】
このような構成にすることにより、誤り訂正手段に対応する回路の回路規模が増大するのを抑制することができる。また、本発明は、リードソロモン符号、ＢＣＨ符号等の符号化方式で生成された誤り訂正符号に基づいて誤り検出と誤り訂正を行う回路のように、誤り検出手段に対応する回路と誤り訂正手段に対応する回路を分離して形成することができれば、誤り訂正符号の符号化方式に限定されることなく実施することができる。
【０００７】
尚、前記誤り訂正手段には２個以上の前記誤り検出手段が割り当てられ、いずれかの前記誤り検出手段で誤りが含まれていると判断されたデータは、該誤り検出手段に割り当てられている前記誤り訂正手段で誤り訂正が行われることが好ましい。また、前記制御手段は、前記ホストシステムから読み出される順番が先のデータの誤り訂正が先に行われるように制御することが好ましい。
【０００８】
本発明によるフラッシュメモリシステムは、上記いずれかのメモリコントローラと複数個のフラッシュメモリとを備えることを特徴としている。
【０００９】
本発明によるフラッシュメモリの制御方法は、ホストシステムから与えられる指示情報に応じて、複数個のフラッシュメモリに対する並行したアクセスを制御するフラッシュメモリの制御方法であって、前記フラッシュメモリから読み出したデータに含まれる誤りの有無を判断する誤り検出ステップと、前記フラッシュメモリから読み出したデータに含まれる誤りを訂正する誤り訂正ステップとを有し、前記誤り検出ステップは、並行してアクセスされる前記フラッシュメモリから読み出したデータに対して並行して行われ、前記誤り訂正ステップは、並行してアクセスされる前記フラッシュメモリから読み出したデータに対して予め設定された順番で行われることを特徴とする。
【００１０】
尚、前記順番は、前記ホストシステムから読み出される順番が先のデータの誤り訂正が先に行われるように設定されていることが好ましい。
【発明の効果】
【００１１】
本発明のメモリコントローラ及びフラッシュメモリシステムによれば、誤り訂正するための回路の個数を並行してアクセスされる前記フラッシュメモリの個数より少なくしたので、複数個のフラッシュメモリに並行してアクセスする構成で、エラー訂正回路の回路規模が増大するのを抑制することができる。
【００１２】
また、本発明のフラッシュメモリの制御方法によれば、誤りを検出する処理は、並行してアクセスされる複数個のフラッシュメモリから読み出したデータに対して並行して行われ、誤りを訂正する処理は、並行してアクセスされる複数個のフラッシュメモリから読み出したデータに対して予め設定された順番で行われる。従って、誤りを検出する処理で読み出したデータに誤りが含まれていた場合は、予め設定された順番で効率的に誤りの訂正を行うことができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態を、図面を参照して説明する。図１は、本発明に係るフラッシュメモリシステム１を概略的に示すブロック図である。図１に示すように、フラッシュメモリシステム１は、フラッシュメモリ２と、それを制御するメモリコントローラ３で構成されている。
【００１４】
なお、フラッシュメモリシステム１は、外部バス１３を介してホストシステム４と接続される。ホストシステム４は、ホストシステム４の全体の動作を制御するためのＣＰＵ（Central Processing Unit）、フラッシュメモリシステム１との情報の授受を担うコンパ
ニオンチップ等から構成される。ホストシステム４は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
【００１５】
フラッシュメモリ２は複数チップのＮＡＮＤ型フラッシュメモリからなり、本実施の形態ではフラッシュメモリ２Ａとフラッシュメモリ２Ｂの２チップからなる。ＮＡＮＤ型フラッシュメモリは、不揮発性メモリであり、レジスタとメモリセルとの間でデータの複写を行って、データの書き込み又は読み出しを行う。
【００１６】
メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。各メモリセル群は、複数のメモリセルが直列に接続されたものである。ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、データの複写、即ち、レジスタから選択されたメモリセルへの複写又は選択されたメモリセルからレジスタへのデータの複写が行われる。
【００１７】
メモリセルアレイを構成するメモリセルは、２つのゲートを備えたＭＯＳトランジスタによって構成される。ここで、一方のゲートが、コントロールゲートと呼ばれ、他方のゲートがフローティングゲートと呼ばれている。このフローティングゲートに電荷（電子）を注入若しくはこのフローティングゲートから電荷（電子）を排出することによって、データの書き込み若しくはデータの消去が行われる。
【００１８】
又、このフローティングゲートは、周囲を絶縁体で囲まれているので、注入された電子は長期間にわたって保持される。なお、フローティングゲートに電子を注入するときは、コントロールゲートが高電位側となる高電圧をコントロールゲートとフローティングゲート間に印加する。また、フローティングゲートから電子を排出するときは、コントロールゲートが低電位側となる高電圧をコントロールゲートとフローティングゲート間に印加する。
【００１９】
ここで、フローティングゲートに電子が注入されている状態が書き込み状態であり、論理値「０」に対応する。また、フローティングゲートから電子が排出されている状態が消去状態であり、論理値「１」に対応する。
【００２０】
ＮＡＮＤ型フラッシュメモリでは、データ読み出し動作及びデータ書き込み動作はページ単位で行われ、データ消去動作はブロック（物理ブロック）単位でおこなわれる。尚、物理ブロックは複数のページで構成され、大ブロックの場合は、１個のページが４セクタ（２０４８バイト）のユーザ領域と６４バイトの冗長領域とで構成され、１個の物理ブロックが６４個のページで構成されている。又、小ブロックの場合は、１個のページが１セクタ（５１２バイト）のユーザ領域と１６バイトの冗長領域とで構成され、１個の物理ブロックが３２個のページで構成されている。又、大ブロックの場合は、ユーザ領域を４分割した５１２バイトの領域をサブページといい、各サブページに冗長領域内の一部の領域を割り当てて使用する。従って、大ブロックの場合は、１個の物理ブロックに２５６個のサブページが含まれている。
【００２１】
一方、ホストシステム４側のアドレス空間は、セクタ（５１２バイト）単位で分割した領域に付けた通番であるＬＢＡ（Logical Block Address）で管理されている。メモリコントローラ３内では、複数個のセクタをまとめたものを論理ブロックとし、この論理ブロックと物理ブロックの対応関係を管理することにより、ホストシステム４側の論理アドレスをフラッシュメモリ２側の物理アドレスに変換している。
【００２２】
ユーザ領域はホストシステム４から与えられるデータを記憶するための領域である。冗長領域は、誤り訂正符号（ＥＣＣ：Error Correcting Code）、論理アドレス情報、ブロックステータス（フラグ）等の付加データを記憶するための領域である。誤り訂正符号は、ユーザ領域に記憶されているデータに含まれる誤りを検出、訂正するためのデータであり、誤り訂正符号生成器２０により生成される。誤り訂正符号生成器２０の詳細については後述する。
【００２３】
論理アドレス情報は、ユーザ領域に有効なデータが格納されている物理ブロックと対応関係にある論理ブロックを特定するための情報である。なお、ユーザ領域に有効なデータが格納されていない物理ブロックについては、そのブロックの冗長領域に、論理アドレス情報は格納されていない。したがって、冗長領域に論理アドレス情報が格納されているか否かを判定することにより、その冗長領域が含まれている物理ブロックに有効なデータが格納されているか否かを判定することができる。つまり、冗長領域に論理アドレス情報が格納されていないとき、その物理ブロックには、有効なデータが格納されていないと判断する。
【００２４】
尚、論理ブロックと物理ブロックとの対応関係は通常、アドレス変換テーブルによって管理される。このアドレス変換テーブルは、各物理ブロックの冗長領域に記憶されている論理アドレス情報に基づいて作成される。
【００２５】
ブロックステータス（フラグ）は、ブロックの良否を示すフラグである。正常にデータの書き込み等を行うことができないブロックは、不良ブロックと判別され、冗長領域には、不良ブロックであることを示すブロックステータス（フラグ）が書き込まれる。
【００２６】
このようなフラッシュメモリ２Ａ、２Ｂは、それぞれメモリコントローラ３から、データ、アドレス情報、内部コマンド等を受信して、データの読み出し処理、書き込み処理、ブロック消去処理、転送処理等の各処理を行う。
【００２７】
ここで、内部コマンドとは、メモリコントローラ３がフラッシュメモリ２Ａ、２Ｂに処理の実行を指示するためのコマンドであり、フラッシュメモリ２Ａ、２Ｂは、メモリコントローラ３から与えられる内部コマンドに従って動作する。これに対して、外部コマンドとは、ホストシステム４がフラッシュメモリシステム１に対して処理の実行を指示するためのコマンドである。
【００２８】
メモリコントローラ３は、図１に示すように、マイクロプロセッサ６と、ホストインタフェースブロック７と、ワークエリア８と、バッファ９と、フラッシュメモリインタフェースブロック１０と、ＥＣＣブロック１１と、ＲＯＭ（Read Only Memory）１２と、から構成される。これら機能ブロックによって構成されるメモリコントローラ３は、一つの半導体チップ上に集積される。以下に各機能ブロックについて説明する。
【００２９】
マイクロプロセッサ６は、ＲＯＭ１２に記憶されているプログラムに従って、メモリコントローラ３の全体の動作を制御する。例えば、マイクロプロセッサ６は、各種処理等を定義したコマンドセットをＲＯＭ１２から読み出してフラッシュメモリインタフェースブロック１０に供給し、フラッシュメモリインタフェースブロック１０に処理を実行させる。
【００３０】
ホストインタフェースブロック７は、ホストシステム４との間の、データ、アドレス情報、ステータス情報、外部コマンド等の授受を行なう。ホストシステム４よりフラッシュメモリシステム１に供給されるデータ等は、ホストインタフェースブロック７を入口としてフラッシュメモリシステム１の内部（例えば、バッファ９）に取り込まれる。また、フラッシュメモリシステム１からホストシステム４に供給されるデータ等は、ホストインタフェースブロック７を出口としてホストシステム４に供給される。
【００３１】
ワークエリア８は、フラッシュメモリ２の制御に必要なデータが一時的に格納される作業領域であり、複数のＳＲＡＭ（Static Random Access Memory）セルによって構成される。
【００３２】
バッファ９は、フラッシュメモリ２Ａ、２Ｂから読み出されたデータ及びフラッシュメモリ２Ａ、２Ｂに書き込むべきデータを一時的に蓄積する。フラッシュメモリ２Ａ、２Ｂから読み出されたデータは、ホストシステム４が受け取り可能な状態となるまでバッファ９に保持される。フラッシュメモリ２Ａ、２Ｂに書き込むべきデータは、それぞれフラッシュメモリ２Ａ、２Ｂが書き込み可能な状態となるまでバッファ９に保持される。
【００３３】
フラッシュメモリインタフェースブロック１０は、内部バス１４を介して、フラッシュメモリ２とデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。
【００３４】
ＥＣＣブロック１１は、フラッシュメモリ２Ａ、２Ｂに書き込むデータ（ユーザデータ）に付加される誤り訂正符号（ＥＣＣ）を生成するとともに、フラッシュメモリ２から読み出したデータに付加された誤り訂正符号（ＥＣＣ）に基づいて、読み出したデータに含まれる誤りを検出・訂正する。本実施の形態では、リードソロモン符号方式で符号化された誤り訂正符号（以下、リードソロモン符号の誤り訂正符号と言う）を用いて、誤りの検出と訂正を行っている。
【００３５】
ＲＯＭ１２は、マイクロプロセッサ６による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。例えば、アドレス変換テーブルの作成等の処理手順を定義するプログラムが格納される。
【００３６】
ここで、ＥＣＣブロック１１の詳細について説明する。ＥＣＣブロック１１は、データを書き込む際に用いられる誤り訂正符号生成器２０と、データを読み出す際に用いられる誤り訂正器３０とを有する。誤り訂正符号生成器２０は、入力されたデータに基づいて、リードソロモン符号の誤り訂正符号（ＥＣＣ）を生成する。誤り訂正器３０は、フラッシュメモリ２Ａ、２Ｂから読み出した誤り訂正符号（ＥＣＣ）に基づいてエラー訂正処理を行う。
【００３７】
誤り訂正符号生成器２０の動作を、図２を参照して説明する。図２は、ＥＣＣブロック１１の構成のうち誤り訂正符号生成器２０（２０Ａ、２０Ｂ）のみを記載している。誤り訂正符号生成器２０Ａ、２０Ｂは受け取ったユーザデータからエラー訂正のための誤り訂正符号（ＥＣＣ）を生成する。ここで、バッファ９からフラッシュメモリ２Ａに転送されるユーザデータは、誤り訂正符号生成器２０Ａに入力される。一方、バッファ９からフラッシュメモリ２Ｂに転送されるユーザデータは、誤り訂正符号生成器２０Ｂに入力される。つまり、フラッシュメモリ２Ａに書き込まれるユーザデータの誤り訂正符号（ＥＣＣ）は誤り訂正符号生成器２０Ａで生成され、フラッシュメモリ２Ｂに書き込まれるユーザデータの誤り訂正符号（ＥＣＣ）は誤り訂正符号生成器２０Ｂで生成される。尚、誤り訂正符号生成器２０Ａで生成された誤り訂正符号（ＥＣＣ）は、フラッシュメモリ２Ａの冗長領域に書き込まれ、誤り訂正符号生成器２０Ｂで生成された誤り訂正符号（ＥＣＣ）は、フラッシュメモリ２Ｂの冗長領域に書き込まれる。
【００３８】
尚、バッファ９からフラッシュメモリ２Ａへのユーザデータの転送とバッファ９からフラッシュメモリ２Ｂへのユーザデータの転送は並行して行われる。フラッシュメモリ２Ａに接続されている内部バス１４Ａとフラッシュメモリ２Ｂに接続されている内部バス１４Ｂは独立していることが好ましいが、双方に接続されている内部バス１４を時分割で使用してもよい。時分割で共用する場合は、例えば、フラッシュメモリ２Ａに転送する１セクタのデータに含まれるデータと、フラッシュメモリ２Ｂに転送する１セクタのデータに含まれるデータを、１バイト単位で交互に転送する。
【００３９】
誤り符号生成器２０Ａ、２０Ｂに入力されたユーザデータは、リードソロモン符号の所定のシンボル長に変換される。この所定のシンボル長に変換されたシンボルデータに基づいてリードソロモン符号の誤り訂正符号（ＥＣＣ）が生成される。更に、消去状態のときの不整合を回避するため、ユーザ領域に書き込まれる１セクタのユーザデータの全ビットが消去状態（論理値の“１”）のときに、冗長領域に書き込まれる誤り訂正符号（ＥＣＣ）の全ビットが消去状態（論理値の“１”）になるような変換処理が施される。従って、フラッシュメモリ２Ａ、２Ｂの冗長領域には、この変換処理が施された誤り訂正符号（ＥＣＣ）が書き込まれる。又、この変換処理が施された誤り訂正符号（ＥＣＣ）は、所定のシンボル長のシンボルデータからバイト単位のデータに変換されてフラッシュメモリ２Ａ、２Ｂの冗長領域に書き込まれる。
【００４０】
本実施の形態では、ユーザデータを１０ビットのシンボルデータに変換して誤り訂正符号（ＥＣＣ）を生成している。この変換では、１セクタ（４０９６ビット）のユーザデータを順次連結した後、１０ビット単位で切り出している。又、１セクタ（４０９６ビット）のユーザデータの末尾に４ビットのダミーデータを付加することにより、１セクタ（４０９６ビット）のユーザデータを４１０シンボルのシンボルデータに変換している。又、誤り訂正符号生成器２０Ａ、２０Ｂでは、８シンボルの誤り訂正符号（ＥＣＣ）が生成されるように設定されている。この８シンボルの誤り訂正符号（ＥＣＣ）に基づいて、５シンボルの誤り検出と４シンボルの誤り訂正をすることができる。
【００４１】
以上に説明したように、ホストシステムから与えられたユーザデータは、バッファ９に保持された後、フラッシュメモリ２Ａ又はフラッシュメモリ２Ｂに転送される。フラッシュメモリ２Ａに書き込まれるユーザデータについては、フラッシュメモリインタフェースブロック１０Ａ及び内部バス１４Ａを介してフラッシュメモリ２Ａに転送されると共に、誤り訂正符号生成器２０Ａに入力される。誤り訂正符号生成器２０Ａは、入力されたユーザデータに基づいて８シンボルの誤り訂正符号（ＥＣＣ）を生成する。この８シンボルの誤り訂正符号（ＥＣＣ）は、上述の変換処理が施された後、１０バイトのデータとしてフラッシュメモリ２Ａに転送される。
【００４２】
一方、フラッシュメモリ２Ｂに書き込まれるユーザデータについては、フラッシュメモリインタフェースブロック１０Ｂ及び内部バス１４Ｂを介してフラッシュメモリ２Ｂに転送されると共に、誤り訂正符号生成器２０Ｂに入力される。誤り訂正符号生成器２０Ｂは、入力されたユーザデータに基づいて８シンボルの誤り訂正符号（ＥＣＣ）を生成する。この８シンボルの誤り訂正符号（ＥＣＣ）は、上述の変換処理が施された後、１０バイトのデータとしてフラッシュメモリ２Ｂに転送される。
【００４３】
次に、誤り訂正器３０の動作を、図３を参照して説明する。図３は、ＥＣＣブロック１１の構成のうち誤り訂正器３０のみが記載されている。この誤り訂正器３０は、誤り有無計算回路３１Ａ、３１Ｂ、セレクト信号生成回路３２、インタフェースセレクタ３３及び誤り訂正回路４０で構成されている。更に、誤り訂正回路４０は、誤り数計算回路４１、誤り位置計算回路４２及び誤り値計算回路４３で構成されている。
【００４４】
フラッシュメモリ２Ａ、２Ｂからユーザデータを読み出すときには、変換処理が施されている誤り訂正符号（ＥＣＣ）も読み出される。フラッシュメモリ２Ａのユーザ領域から読み出されたユーザデータは、内部バス１４Ａ及びフラッシュメモリインタフェースブロック１０Ａを介してバッファ９に転送されると共に、誤り有無計算回路３１Ａに入力される。更に、読み出したユーザデータが記憶されていたユーザ領域と対応する冗長領域から変換処理が施されている誤り訂正符号（ＥＣＣ）が読み出され、誤り有無計算回路３１Ａに入力される。一方、フラッシュメモリ２Ｂのユーザ領域から読み出されたユーザデータは、内部バス１４Ｂ及びフラッシュメモリインタフェースブロック１０Ｂを介してバッファ９に転送されると共に、誤り有無計算回路３１Ｂに入力される。更に、読み出したユーザデータが記憶されていたユーザ領域と対応する冗長領域から変換処理が施されている誤り訂正符号（ＥＣＣ）が読み出され、誤り有無計算回路３１Ｂに入力される。
【００４５】
誤り有無計算回路３１Ａ、３１Ｂでは、入力されたユーザデータが１０ビットのシンボルデータに変換される。つまり、入力された１セクタ（４０９６ビット）のユーザデータは、順次連結された後、１０ビット単位で切り出される。又、１セクタ（４０９６ビット）のユーザデータの末尾には４ビットのダミーデータが付加され、１セクタ（４０９６ビット）のユーザデータは４１０シンボルのシンボルデータに変換される。同様に変換処理が施されている誤り訂正符号（ＥＣＣ）は、１０ビットのシンボルデータに変換される。又、変換処理が施されている誤り訂正符号（ＥＣＣ）については、変換処理が施される前の誤り訂正符号（ＥＣＣ）に戻す逆変換処理も施される。
【００４６】
誤り有無計算回路３１Ａ、３１Ｂは、この４１０シンボルのシンボルデータと８シンボルの誤り訂正符号（ＥＣＣ）に基づいて誤り有無を判断する計算処理を実行する。この誤り有無を判断する計算処理も、誤り有無計算回路３１Ａ、３１Ｂで並行して行われる。
【００４７】
ユーザデータ又は誤り訂正符号（ＥＣＣ）に対応する４１８シンボルに誤りが含まれているときは、誤り有無計算回路３１Ａ、３１Ｂから出力される計算結果を示す情報が、インタフェースセレクタ３３を介して誤り数計算回路４１に入力される。尚、セレクト信号生成回路３２は、ホストシステム４から読み出される順番が先のユーザデータの誤り訂正が先に行われるように誤り数計算回路４１に入力する順番を制御する。例えば、フラッシュメモリ２Ａ、２Ｂから並行して読み出されたユーザデータの双方に誤りが含まれていたときに、フラッシュメモリ２Ａから読み出されたユーザデータが先にホストシステム４から読み出される場合は、誤り有無計算回路３１Ａから出力される情報が先に誤り数計算回路４１に入力されるように順番を制御する。
【００４８】
誤り数計算回路４１は、誤り有無計算回路３１Ａから与えられた情報に基づいて誤りの有るシンボルデータの数を求める計算処理を実行する。この計算処理で、誤りの有るシンボルデータの数が５シンボル以上であると判断された場合は、ここで誤り訂正の処理が中止される。誤りの有るシンボルデータの数が４シンボル以下であると判断された場合は、誤り数計算回路４１から出力される計算結果を示す情報が誤り位置計算回路４２に入力される。
【００４９】
誤り位置計算回路４２は、誤り数計算回路４１から与えられた情報に基づいて、ユーザデータ又は誤り訂正符号（ＥＣＣ）に対応する４１８シンボルのうちのどのシンボルデータ（何番目のシンボルデータ）に誤りが有るかを求める計算処理を実行する。誤り位置計算回路４２から出力される計算結果を示す情報は、誤り値計算回路４３に入力される。
【００５０】
誤り値計算回路４３は、誤り位置計算回路４２から与えられた情報に基づいて、誤りが有るシンボルデータの正しい値を求める計算処理を実行する。誤りが有るシンボルデータの正しい値が求められると、バッファ９に保持されているユーザデータの誤り訂正が行われる。ここでは、誤り位置計算回路４２で求められた誤りが有るシンボルデータに対応する部分のユーザデータの値が、誤り値計算回路４３で求めた正しい値に訂正される。つまり、誤りが有るシンボルデータがｎ（１〜４１０）番目のときに、ｎ番目のシンボルデータに対応するビットが正しい値に訂正される。
【００５１】
以上詳細に説明したように、本実施の形態によるメモリコントローラ３によれば、並行して読み出されるユーザデータ（フラッシュメモリ２Ａとフラッシュメモリ２Ｂから読み出されるユーザデータ）に誤りが含まれているか否かを判断する処理が誤り検出手段である誤り有無計算回路３１Ａと誤り有無計算回路３１Ｂで並行して実行される。誤り訂正手段である誤り訂正回路４０は、誤り数計算回路４１、誤り位置計算回路４２及び誤り値計算回路４３で構成されている。フラッシュメモリ２Ａから読み出されるユーザデータの誤り訂正とフラッシュメモリ２Ｂから読み出されるユーザデータの誤り訂正は、いずれも誤り訂正回路４０で実行される。つまり、誤り検出手段は、並行してアクセスされるフラッシュメモリと同数設けられているが、誤り訂正手段の数は並行してアクセスされるフラッシュメモリの数より少なくなっている。従って、誤り検出手段と誤り訂正手段とで構成される誤り訂正器の回路規模を削減することができる。
【００５２】
尚、並行して読み出されたユーザデータの双方、つまり、フラッシュメモリ２Ａから読み出されるユーザデータとフラッシュメモリ２Ｂから読み出されるユーザデータの双方に誤りが含まれていた場合、ホストシステム４から読み出される順番で誤り訂正が行われる。並行して読み出されたユーザデータのいずれか一方にだけ誤りが含まれていた場合、誤りが含まれていた側のユーザデータの誤り訂正だけが実行される。
【００５３】
本発明によるメモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法は上述した実施の形態に限定されず、特許請求の範囲に記載した範囲で種々の変形や改良が可能である。例えば、誤り検出手段（誤り有無計算回路３１Ａ、誤り有無計算回路３１Ｂに相当する回路）と誤り訂正手段（誤り訂正回路４０に相当する回路）の個数は特に限定されず、誤り訂正手段の数が誤り検出手段の数より少ない構成であればよい。又、誤り訂正符号の方式はリードソロモン符号に限定されず、誤り検出手段と誤り訂正手段とを分離して構成できるＢＣＨ符号等の符号化方式であってもよい。
【００５４】
尚、誤り訂正手段で誤り訂正を行う順番は、ホストシステム４から読み出される順番であることが好ましいが、誤り検出手段で先に誤りが検出された側、又は、誤りが含まれているか否かを判断する処理が先に終了した側から順番に誤り訂正を行ってもよい。
【図面の簡単な説明】
【００５５】
【図１】本発明の一実施の形態によるフラッシュメモリシステムの概略構成を示すブロック図である。
【図２】本発明の一実施の形態による誤り訂正符号生成器の動作を説明するためのブロック図である。
【図３】本発明の一実施の形態による誤り訂正器の動作を説明するためのブロック図である。
【符号の説明】
【００５６】
１      フラッシュメモリシステム
２Ａ、２Ｂ      フラッシュメモリ
３      メモリコントローラ
２０    誤り訂正符号生成器
３０    誤り訂正器
【図１】
2008102693.tif 000003
【図２】
2008102693.tif 000004
【図３】
2008102693.tif 000005