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