"メモリ部を制御するメモリコントローラであって、前記メモリ部へ書き込むデータに対する誤り検出符号を生成し、前記データおよび前記誤り検出符号に対するttは2以上の整数シンボル訂正可能な誤り訂正符号を生成する符号化部と、n個nは2以上の整数のチャネルを有し、前記データと前記誤り検出符号と前記誤り訂正符号と、を前記チャネルごとに前記メモリ部へ書き込み、前記データと前記誤り検出符号と前記誤り訂正符号とを読み出しデータとして前記チャネルごとに前記メモリ部から読み出すメモリインタフェースと、前記チャネルごとの前記読み出しデータに対してssは、1以上でtより小さい整数シンボル訂正可能な第1の誤り訂正復号化処理をそれぞれ実施するn個の第1の誤り訂正復号化部と、前記第1の誤り訂正復号化処理により復号されたデータおよび誤り検出符号に基づいて前記チャネルごとに誤り検出処理を行うn個の誤り検出部と、前記誤り検出部により誤りが検出された前記チャネルの前記読み出しデータに対してtシンボル訂正可能な第2の誤り訂正復号化処理を実施するnより小さい個数の第2の誤り訂正復号化部と、を備えることを特徴とするメモリコントローラ。前記符号化部は、前記誤り検出符号を前記チャネルごとに生成し、前記誤り訂正符号を前記チャネルごとに生成する、ことを特徴とする請求項1に記載のメモリコントローラ。前記第1の誤り訂正復号化処理における符号長と前記第2の誤り訂正復号化処理における符号長とが同一である、ことを特徴とする請求項1または2に記載のメモリコントローラ。1シンボルを1ビットとし、前記誤り訂正符号をBCH符号とする、ことを特徴とする請求項1、2または3に記載のメモリコントローラ。前記誤り訂正符号をリードソロモン符号とする、ことを特徴とする請求項1、2または3に記載のメモリコントローラ。前記符号化部は、外部から与えられる訂正能力であるtの値と予め定められた原始多項式とから生成多項式を算出し、前記生成多項式を用いて前記誤り訂正符号を生成する、ことを特徴とする請求項1~5のいずれか1つに記載のメモリコントローラ。前記第2の誤り訂正復号化部は、訂正能力であるtの値を変更可能とすることを特徴とする、請求項1~6のいずれか1つに記載のメモリコントローラ。前記第2の誤り訂正復号化部の個数を1とする、ことを特徴とする請求項1~7のいずれか1つに記載のメモリコントローラ。前記第2の誤り訂正復号化部の個数を2以上とする、ことを特徴とする請求項1~7のいずれか1つに記載のメモリコントローラ。メモリ部と、前記メモリ部への書き込みおよび前記メモリ部からの読み出しを制御するメモリコントローラと、を備え、前記メモリコントローラは、前記メモリ部へ書き込むデータに対する誤り検出符号を生成し、前記データおよび前記誤り検出符号に対するttは2以上の整数シンボル訂正可能な誤り訂正符号を生成する符号化部と、n個nは2以上の整数のチャネルを有し、前記データと前記誤り検出符号と前記誤り訂正符号と、を前記チャネルごとに前記メモリ部へ書き込み、前記データと前記誤り検出符号と前記誤り訂正符号とを読み出しデータとして前記チャネルごとに前記メモリ部から読み出すメモリインタフェースと、前記チャネルごとの前記読み出しデータに対してssは、1以上でtより小さい整数シンボル訂正可能な第1の誤り訂正復号化処理をそれぞれ実施するn個の第1の誤り訂正復号化部と、前記第1の誤り訂正復号化処理により復号されたデータおよび誤り検出符号に基づいて前記チャネルごとに誤り検出処理を行うn個の誤り検出部と、前記誤り検出部により誤りが検出された前記チャネルの前記読み出しデータに対してtシンボル訂正可能な第2の誤り訂正復号化処理を実施するnより小さい個数の第2の誤り訂正復号化部と、を備えることを特徴とする半導体記憶装置。n個nは2以上の整数のチャネルを有する半導体記憶装置において、メモリ部へ格納された、データと、前記データに対して生成された誤り検出符号と、前記データおよび前記誤り検出符号に対して生成されたttは2以上の整数シンボル訂正可能な誤り訂正符号と、を復号する復号方法であって、前記チャネルごとに、前記データと前記誤り検出符号と前記誤り訂正符号とを読み出しデータとして前記メモリ部から読み出す読み出しステップと、前記チャネルごとの前記読み出しデータに対してssは、1以上でtより小さい整数シンボル訂正可能な第1の誤り訂正復号化処理を、n個の第1の誤り訂正復号化部によりそれぞれ実施する第1の復号ステップと、前記第1の誤り訂正復号化処理により復号されたデータおよび誤り検出符号に基づいて、n個の誤り検出部により前記チャネルごとに誤り検出処理を行うそれぞれ実施する誤り検出ステップと、前記誤り検出ステップにおいて誤りが検出されたチャネルの前記読み出しデータに対してtシンボル訂正可能な第2の誤り訂正復号化処理を、nより小さい個数の第2の誤り訂正復号化部により実施する第2の復号ステップと、を備えることを特徴とする復号方法。多重に誤り訂正符号化を実施する技術や、適応的に復号方法を切り替える技術では、一般に、処理が複雑になる、または回路規模が大きくなる等の問題がある。本願発明の一態様によれば、メモリ部を制御するメモリコントローラであって、メモリ部へ書き込むデータと、データに基づいて誤り検出符号を生成し、データおよび誤り検出符号とにttは2以上の整数シンボル訂正可能な誤り訂正符号を生成する符号化部、を備える。また、このメモリコントローラは、データと誤り検出符号と誤り訂正符号と、をn個nは2以上の整数のチャネルごとにメモリ部へ書き込み、データと誤り検出符号と誤り訂正符号とを読み出しデータとしてチャネルごとにメモリ部から読み出すメモリインタフェースを備える。さらに、このメモリコントローラは、チャネルごとの読み出しデータに対してssは、1以上でtより小さい整数シンボル訂正可能な第1の誤り訂正復号化処理をそれぞれ実施するn個の第1の誤り訂正復号化部と、チャネルごとに、前記第1の誤り訂正復号化処理により復号されたデータおよび誤り検出符号に基づいて誤り検出処理を行うn個の誤り検出部と、誤り検出部により誤りが検出されたチャネルの読み出しデータに対してtシンボル訂正可能な第2の誤り訂正復号化処理を実施するnより小さい個数の第2の誤り訂正復号化部と、を備える。以下に添付図面を参照して、実施形態にかかるメモリコントローラ、半導体記憶装置および復号方法を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。図1は、実施の形態にかかる半導体記憶装置1の構成例を示すブロック図である。本実施の形態の半導体記憶装置1は、メモリコントローラメモリ制御装置2と、NAND型記憶セルを備える半導体メモリ部メモリ部3と、で構成される。半導体記憶装置1は、通信媒体を介してホスト4に接続され、ホスト4に対する外部記憶媒体として機能する。ホスト4の例としては、パーソナルコンピュータやCPUCentralProcessingUnitコア等があげられる。メモリコントローラ2は、内部バス20と、HostI/FInterface21と、NANDI/Fメモリインタフェース22と、制御部23と、符号化/復号化処理部24と、で構成される。符号化/復号化処理部24は、符号化部25と、復号化部26と、で構成される。HostI/F21は、ホスト4から受信した命令、データなどを内部バス20に出力する。また、HostI/F21は、内部バス20経由で入力されたデータ、制御部23からの応答通知命令の実行完了を示す通知などなどをホスト4へ送信する。半導体メモリ部3は、メモリ31-0~31-3で構成される。メモリ31-0~31-3はそれぞれ1つ以上のメモリチップによって構成されているとする。NANDI/F22は、メモリ31-0~31-3に対してそれぞれ読み書きを並行して実施できるよう4つのチャネルチャネルch0~ch3を有している。チャネルch0~ch3は、それぞれ対応するメモリ31-0~31-3を制御する。なお、ここでは、チャネルの数を4とし、半導体メモリ部3を構成するメモリの数を4としているが、チャネルの数はこれに限定されず、半導体メモリ部3はチャネルの数に応じたメモリを備えていればよい。制御部23は、半導体記憶装置1の各構成要素を統括的に制御する制御部であり、CPUコア、RAMRandomAccessMemory、ROMReadOnlyMemory、DMADirectMemoryAccessコントローラなどで構成される。制御部23は、ホスト4からHostI/F21および内部バス20経由で命令を受けた場合に、その命令に従った制御を行う。例えば、制御部23は、ホスト4からの命令に従って、半導体メモリ部3へのデータの書き込み、半導体メモリ部3からのデータの読み出しなどをNANDI/F22へ指示する。また、制御部23は、符号化/復号化処理部24へ誤り訂正符号化処理または復号化処理の実施を指示する。符号化/復号化処理部24は、制御部23の指示に基づいて、ホスト4から受信したデータに対して誤り訂正符号化処理を行い、NANDI/F22へ出力し、またNANDI/F22から入力されるデータに対して復号化処理を行う。この際、制御部23は、データをチャネルごとに分割して符号化/復号化処理部24へ入力するよう制御し、符号化/復号化処理部24はチャネルごとに並行して誤り訂正符号化処理を行い、処理結果をNANDI/F22の対応するチャネルへ出力する。また、半導体メモリ部3から読み出されたデータがNANDI/F22から入力される際には、符号化/復号化処理部24は、NANDI/F22の各チャネルから入力されるデータをチャネルごとに並行して復号化処理を行う。なお、図1に示した半導体記憶装置1の構成は一例であり、半導体メモリとその半導体メモリの読み書きを制御するコントローラを備え、ホスト4と通信が可能な構成であり、チャネルごとに符号化/復号化処理を行う構成であれば、図1に示した構成に限らずどのような構成でもよい。また、半導体メモリ部3の代わりに半導体メモリ以外の記憶手段を用いてもよい。次に、本実施の形態の半導体メモリ部3への書き込み動作について説明する。まず、制御部23は、ホスト4からデータの書き込みを指示されると、データをチャネルごとに振り分け、符号化/復号化処理部24に符号化の実施を指示するとともに、NANDI/F22へ半導体メモリ部3への書き込みを指示する。ホスト4から送信される書き込み対象のデータは、半導体記憶装置1内の図示しないバッファメモリにチャネルごとに書き込まれる。本実施の形態では、符号化部25は、符号化処理として、誤り検出符号および誤り訂正符号を生成する。図2は、本実施の形態の符号化部25の構成例を示す図である。図2に示すように、符号化部25は、所定のサイズの書き込みデータに基づいてCRCCyclicRedundancyCheck符号を生成する誤り検出符号エンコーダ251-1~251-4と、所定のサイズの書き込みデータと当該データに対応するCRC符号とに基づいて誤り訂正符号を生成する誤り訂正符号エンコーダ252-1~252-4と、を備える。ここでは、符号化部25が、誤り検出符号としてCRC符号を生成する例を説明するが、誤り検出符号はCRC符号に限定されない。また、誤り訂正符号としてはどのような符号を用いてもよいが、ここでは、BCH符号を用いるとする。誤り訂正符号は、BCH符号に限らずRSReed-Solomon符号等どのような符号を用いてもよい。なお、ここでは、チャネルの数を4としているため、誤り検出符号エンコーダおよび誤り訂正符号エンコーダの数をそれぞれ4としているが、チャネルの数に応じて誤り検出符号エンコーダおよび誤り訂正符号エンコーダを備えればよい。誤り検出符号エンコーダ251-1~251-4は、バッファメモリから入力されるそれぞれのチャネルに対応する書き込み対象のデータに対して誤り検出符号を生成する。誤り訂正符号エンコーダ252-1~252-4は、書き込み対象のデータと対応する誤り検出符号とに対してttは1以上の整数シンボル訂正可能な誤り訂正符号を生成し、書き込み対象のデータと誤り検出符号と生成した誤り訂正符号とをNANDI/F22の対応するチャネルへ入力する。なお、ここでは、誤り訂正符号としてビット単位で訂正を行うBCH符号を用いるため、tシンボル訂正可能な誤り訂正符号以下、t重誤り訂正符号というは、tビット訂正可能なBCH符号のことを示す。一方、RS符号等ではシンボル単位で訂正を行っており、訂正単位は採用する誤り訂正符号の種類に依存する。ここでは、1シンボルが1ビットである場合も含むとし、tシンボル訂正可能と記載した場合には、ビット単位で訂正する場合のtビット訂正可能という意味を含むこととする。NANDI/F22は、チャネルごとに、誤り訂正符号エンコーダ252-1~252-4から入力される書き込み対象のデータ、誤り検出符号および誤り訂正符号を、メモリ31-0~31-3へそれぞれ書き込む。なお、書き込み対象のデータは、符号化部25からではなく、バッファメモリからNANDI/F22へ入力されてもよい。図3は、半導体メモリ部3へ書き込まれるデータと符号の概念を示す図である。図3に示すように、所定のサイズの書き込みデータ図3ではデータと記載に基づいて誤り検出符号CRC符号が生成され、所定のサイズの書き込みデータと対応する誤り検出符号とを誤り訂正符号化対象として誤り訂正符号が生成される。ここで、所定のサイズとは、例えば、セクターサイズである。セクターサイズは、例えば、512バイトである。なお、図3では、1組のデータと誤り検出符号に対して1つの誤り訂正符号が生成される例を示しているが、データと誤り検出符号の複数組に対して1つの誤り訂正符号を生成するようにしてもよい。次に、本実施の形態の半導体メモリ部3からの読出し動作について説明する。制御部23は、ホスト4からデータの読み出しを指示されると、符号化/復号化処理部24に復号化の実施を指示するとともに、NANDI/F22へ半導体メモリ部3からの読み出しを指示する。NANDI/F22の各チャネルは、制御部23からの指示に基づいて半導体メモリ部3からデータと対応する誤り検出符号および誤り訂正符号とを読み出し、読み出したデータ、対応する誤り検出符号および誤り訂正符号を符号化/復号化処理部24へ出力する。符号化/復号化処理部24の復号化部26は、チャネルごとに、読み出したデータと誤り検出符号および誤り訂正符号とに基づいて復号化処理を行い、復号化処理により誤りが有ると判断された場合には、読み出したデータに対して誤り訂正を実施する。HostI/F21は、誤り訂正後のデータ誤りの無い場合には、半導体メモリ部3から読み出したデータをホスト4に送信する。次に、本実施の形態の復号化処理について詳細に説明する。図4は、本実施の形態の復号化部26の構成例を示す図である。図4に示すように、本実施の形態の復号化部26は、ssは、1以上でtより小さい整数個の誤り訂正処理を実施することが可能なs重誤り訂正デコーダ第1の誤り訂正復号化部261-1~261-4と、誤り検出符号を用いて誤り検出を行う誤り検出部262-1~262-4と、バッファ263-1~263-4と、をチャネル毎に備える。復号化部26は、さらにt個の誤り訂正処理を実施することが可能なt重誤り訂正デコーダ第2の誤り訂正復号化部264と、誤り検出部265と、選択部266と、を備える。なお、ここでは、チャネルの数を4としているため、s重誤り訂正デコーダ、誤り検出部およびバッファの数をそれぞれ4としているが、チャネルの数に応じてこれらを備えればよい。また、バッファ263-1~263-4はチャネルごとに備えず、1つのバッファで共用してもよいし、s重誤り訂正デコーダ261-1~263-4と一体化してもよいし、復号化部26の外にバッファを備えてもよい。図5は、本実施の形態の符号化/復号化処理の概要を示す図である。図5に示すように、本実施の形態では、NANDI/F22のチャネルch0~ch3ごとに、符号化復号化の処理を実施する。図5は、誤り検出符号としてCRC符号、誤り訂正符号としてBCH符号を用いる例を示している。まず、書き込み時には、上述のように、チャネルごとに、符号化部25において、CRC付加処理誤り検出符号の生成が行われるステップS1。なお、図5では、図の簡略化のため、ch0内の処理にのみステップ番号を付しているが、他のチャネルch1~ch3でも同様の処理が行われる。そして、チャネルごとに、符号化部25により、t重訂正BCH符号化処理t重の誤り訂正符号化処理が実施されステップS2、半導体メモリ部3へデータおよび各符号の書き込みが行われ、読み出し要求があると半導体メモリ部3からの読み出しが行われるステップS3。半導体メモリ部3からの読み出されたデータおよび各符号は、チャネルごとに、復号化部26により、まず、s重訂正BCH復号s重誤り訂正復号化処理が行われステップS4、CRC検査誤り検出処理が行われるステップS5。CRC検査により誤り無しCRC=OKとなった場合、s重訂正BCH復号されたデータが復号化部26から出力されホスト4へ送信される。CRC検査により誤り有りCRC=NGとなったチャネルのデータに対してはt重訂正BCH復号t重誤り訂正復号化処理が実施されステップS6、t重誤り訂正復号化処理に基づいてCRC検査を行うステップS7。なお、ステップS5のCRC検査誤り検出処理と、ステップS7のCRC検査誤り検出処理は、独立の回路で実行してもよいし、共用の回路で実行してもよい。このCRC検査により誤り無しとなった場合t重訂正BCH復号されたデータが復号化部26から出力されホスト4へ送信される。ここで、誤り訂正処理の具体例を用いて、s重誤り訂正処理とt重誤り訂正処理の差を説明する。例として、符号長=15、s=1、t=2の場合について説明する。符号化処理において、t=2個の誤りが訂正可能なt重訂正可能なBCH符号が生成されたとする。この場合に、t重誤り訂正処理により、復号を行う場合、まず、半導体メモリ部3から読み出されたデータに基づいて2つのシンドロームa0,a1を計算する。次に、シンドロームa0,a1を用いて2つの誤り位置多項式の係数b0,b1を、例えば以下の式1に基づいて求める。なお、以下の計算方法は一例であり、誤り位置多項式の計算方法は、復号アルゴリズムに依存するため、以下の方法に限定されない。b0=a0b1=a03a1/a0...1その後、1b0×Xb1×X2=0が成立するXx0,x1を求める。ここで求められたXx0,x1は誤り位置を表しており、当該ビットを反転することで誤り訂正を行うことができる。一方、s=1重訂正する場合は、まず、半導体メモリ部3から読み出されたデータに基づいて1つのシンドロームa0を計算する。次に、上記と同様に誤り位置多項式の1つの係数b0を求める。その後、1b0×X=0が成立するXx0を求める。ここで求められたXx0は誤り位置を表しており、当該ビットを反転することで誤り訂正を行うことができる。以上のように、s重訂正の復号化処理は、t重訂正の復号化処理より演算が少なく、一般に係数の計算等を並列して行うため、s重訂正の復号化処理はt重訂正の復号化処理より回路面積の小さい復号回路で実装することが可能である。上述のとおり、本実施の形態では、符号化処理において、t重誤り訂正符号を生成している。t重誤り訂正符号を用いて復号する際には、通常、t個の誤り訂正処理を実施することが可能なデコーダを用いて復号化処理を実施する。しかし、この場合tが大きくなるとデコーダのハードウェア規模が大きくなる。誤り訂正符号の選択の際には、一般に、誤り訂正不可となる可能性を低くするため、想定される平均誤り数より多い数の誤りに対応可能な誤り訂正符号が選択される。したがって、実際に生じる誤りは、tに比べ少ない場合が多い。本実施の形態では、tより小さい数であるs個の誤り訂正に対応するs重誤り訂正デコーダ261-1~261-4をチャネルごとに備え、通常は、s重誤り訂正デコーダ261-1~261-4により誤り訂正処理を実施する。そして、チャネルごとに、誤り検出部262-1~262-4が、誤り訂正処理後のデータおよび誤り検出符号に基づいて、誤り検出を行い、これにより誤りが検出された場合に、t重誤り訂正デコーダ264による誤り訂正処理を実施する。t重誤り訂正デコーダ264の数は、チャネル数分備える必要はなく、1つ以上であればよい。また、復号化処理では、通常はs重誤り訂正処理を行うだけでよく、誤り訂正検出処理の処理負荷は大きくないため、処理を複雑にすることなくハードウェア規模を低減できる。また、誤り訂正符号化の際は、1種類のt重誤り訂正符号を生成すればよいだけであり、同一のデータに対して2重に誤り訂正符号化する必要もなく、冗長な符号を増加させることもない。さらに、t重誤り訂正デコーダ264に入力されるデータ半導体メモリ部3から読み出されたデータは、s重誤り訂正デコーダ261-1~261-4のいずれかに入力されたデータと同一であり、半導体メモリ部3からの再読み出し等を行う必要もない。図6は、本実施の形態の復号化処理手順の一例を示すフローチャートである。図5および図6を用いて、本実施の復号化部26の動作を説明する。まず、復号化処理が開始されると、NANDI/F22により、チャネルごとにデータ半導体メモリ部3から読み出されたデータであり、誤り訂正符号および誤り検出符号を含むが読み出され、s重誤り訂正デコーダ261-1~261-4に、それぞれ入力されるステップS11。また、NANDI/F22の各チャネルから入力されるデータは、それぞれバッファ263-1~263-4にも入力される。s重誤り訂正デコーダ261-1~261-4は、NANDI/F22の各チャネルから入力されるデータに対してそれぞれs重誤り訂正復号化処理s個の誤り訂正が可能な誤り訂正復号化処理を実施するステップS12。誤り検出部262-1~262-4は、s重誤り訂正デコーダ261-1~261-4によりs重誤り訂正処理がされたデータおよび誤り検出符号に基づいて、それぞれ誤り検出処理を実施し、誤り検出結果を制御部23へ通知するとともにs重誤り訂正処理がされたデータを選択部266へ出力するステップS13。制御部23は、誤り検出部262-1~262-4から通知される誤り検出結果に基づいて、誤りが検出されたチャネル数NCHを求め、NCHが0であるか、1であるか、または2以上であるかを判断するステップS14。NCHが0である場合ステップS14NCH=0、制御部23は、選択部266に対して、誤り検出部262-1~262-4から出力されるデータを全て選択し、誤り訂正復号成功という付帯情報を付けて出力するよう指示し、選択部266は指示に従って誤り検出部262-1~262-4から出力されるデータを出力するステップS15。そして、制御部23は、読み出し対象のデータの読み出しが終了したか否かを判断しステップS25、読み出しが終了した場合ステップS25Yes、処理を終了し、読み出しが終了していない場合ステップS25No、ステップS11へ戻る。NCHが1である場合ステップS14NCH=1、制御部23は、選択部266に対して、誤りが検出されなかったチャネルに対応する誤り検出部262-1~262-4から出力されるデータs重誤り訂正復号化データを選択し、誤り訂正復号成功という付帯情報を付けて出力するよう指示し、選択部266は指示に従ってデータを出力するステップS16。ステップS16では、さらに制御部23は、t重誤り訂正デコーダ264に対して、誤りが検出されたチャネルに対応するバッファ263-1~263-4からデータを読み出して処理を実施するよう指示し、t重誤り訂正デコーダ264は、制御部23からの指示に基づいてt重誤り訂正処理を実施するステップS16。具体的には、t重誤り訂正デコーダ264は、読み出しを指示されたバッファ263-1~263-4s重誤り訂正処理後に誤りが検出されたデータを格納しているバッファからデータを読み出して、当該データに対してt重誤り訂正処理を実施し、処理後のデータを誤り検出部265へ出力する。誤り検出部265は、t重誤り訂正処理後のデータに基づいて誤り検出を行い、誤り検出結果を制御部23へ通知するとともにt重誤り訂正処理がされたデータを選択部266へ出力する。制御部23は、誤り検出部265から通知された誤り検出結果に基づいて誤りが無いか否かを判断しステップS17、誤りが無い場合はステップS17Yes、選択部266に対して、誤り検出部265から出力されるデータを選択し、誤り訂正復号成功という付帯情報を付けて出力するよう指示し、選択部266は指示に基づいてデータを出力しステップS18、ステップS25へ進む。一方、ステップS17で誤りが有ると判断した場合はステップS17No、制御部23は、選択部266に治して誤りが検出されたチャネルに対応するバッファ263-1~263-4のデータを選択し、誤り訂正復号失敗という付帯情報を付けて出力するよう指示し、選択部266は指示に基づいてデータを出力しステップS19、ステップS25へ進む。また、ステップS14で、NCHが2以上である場合ステップS14NCH≧2、制御部23は、選択部266へ誤りが検出されなかったチャネルに対応する誤り検出部262-1~262-4から出力されるデータを選択し、誤り訂正復号成功という付帯情報を付けて出力するよう指示し、選択部266は指示に従ってデータ出力するステップS20。ステップS20では、さらに制御部23は、NCH個のチャネルのうちt重誤り訂正処理対象とするチャネルを決定するステップS20。そして、制御部23は、決定したチャネルに対応するバッファ263-1~263-4からデータを読み出して処理を実施するよう指示し、t重誤り訂正デコーダ264は、制御部23からの指示に基づいてt重誤り訂正処理を実施するステップS21。誤り検出部265は、t重誤り訂正処理後のデータに基づいて誤り検出を行い、誤りを検出結果を制御部23へ通知するとともにt重誤り訂正処理がされたデータを選択部266へ出力する。制御部23は、誤り検出部265から通知された誤り検出結果に基づいて誤りが無いか否かを判断しステップS22、誤りが無い場合はステップS22Yes、選択部266に対して、誤り検出部265から出力されるデータを選択し、誤り訂正復号成功という付帯情報を付けて出力するよう指示し、選択部266は指示に基づいてデータを出力するステップS23。制御部23は、NCH個のチャネルのうち全てについてt重誤り訂正処理が終了したか否かを判断しステップS24、NCH個のチャネルのうち全てについてt重誤り訂正処理が終了した場合ステップS24Yes、ステップS25へ進む。NCH個のチャネルのうちt重誤り訂正処理が終了していないチャネルがある場合ステップS24No、ステップS20へ戻る。なお、2回目以降のステップS20では、t重誤り訂正処理が終了していないチャネルのうちからt重誤り訂正処理対象とするチャネルを決定する。ステップS22で、誤りが有る場合はステップS22No、制御部23は、選択部266へ誤りが検出されたチャネルに対応するバッファ263-1~263-4のデータを選択し、誤り訂正復号失敗という付帯情報を付けて出力するよう指示し、選択部266は指示に基づいてデータを出力しステップS26、ステップS24へ進む。なお、s重誤り訂正デコーダ261-1~261-4、t重誤り訂正デコーダ264との復号方法に制約はないが、BCH符号やRS符号等を用いる場合には、s重誤り訂正デコーダ261-1~261-4とt重誤り訂正デコーダ264とは、同一GFガロア体上の復号演算すなわち、符号長を同一とした復号演算を行うことになる。また、ここでは、誤り訂正エンコーダ252、および、t重誤り訂正デコーダ264の訂正能力tの値は固定値であるとして説明したが、ホストからの制御信号に基づいて設定することが可能であるとしてもよい。例えば、BCH符号を用いる場合に、符号化に用いる原始多項式を予め定めておき、符号化ではこの原始多項式を用いて生成した生成多項式を用いて符号化処理を実施する。t重訂正BCH符号の生成多項式Gxは、以下の式2で表すことができる。Gx=M1xM3xM5x...Mx...2M1xは、原始元αを根とする多項式であり、原始多項式と呼ばれる。M3xはα3を根とする多項式、M5xはα5を根とする多項式、...、Mxはαを根とする多項式、である。M1xを決定すると、演算によりM3x,M5x,...,Mxを順次求めていくことができる。従って、原始多項式と訂正能力tの値がわかっていれば生成多項式を求めることができる。復号化処理においても同様に、原始多項式と訂正能力tの値に基づいて生成多項式を特定することで、符号化に対応した復号化処理が可能となる。訂正能力が可変である誤り訂正エンコーダや誤り訂正デコーダは、訂正能力が固定値である場合に比べて回路規模が大きくなる恐れがあるが、誤り訂正エンコーダの回路規模は誤り訂正デコーダの回路規模に比べて小さいため、誤り訂正エンコーダの回路規模が大きくなっても、メモリコントローラ全体としての回路規模増加は比較的小さい。また、本発明に係るメモリコントローラでは、t重誤り訂正デコーダ264をチャネル数より小さい個数しか備えない特徴があるため、全ての誤り訂正デコーダの訂正能力を可変とする場合と比べて、メモリコントローラ全体としての回路規模増加は小さい。なお、以上の説明では、t重誤り訂正デコーダ264を1つ備える例を説明したが、2つ以上備えていてもよい。同時に2つ以上のチャネルでs重誤り訂正処理後に誤りが検出された場合、t重誤り訂正デコーダ264を1つ備える場合には、いずれか一方のチャネルのt重誤り訂正復号化処理は他方のt重誤り訂正復号化処理が終了するまで開始できないが、2つ備えていれば、同時に2つのチャネルのt重誤り訂正復号化処理まで対応できる。だたし、t重誤り訂正デコーダ264の個数が増えるとハードウェア規模も増えるので、ハードウェア規模の増大量、想定される誤り数や読み出しに対する要求速度等を考慮してt重誤り訂正デコーダ264を適切に選択すればよい。以上のように、本実施の形態では、誤り検出符号が付加されてt重誤り訂正符号化処理が施されたデータに対して、チャネルごとにs重誤り訂正デコーダ261-1~261-4によるs重誤り訂正復号化処理を実施する。そして、誤り検出符号に基づいて誤り検出を行い、誤りが検出されたチャネルのデータにはt重誤り訂正デコーダ264によるt重誤り訂正復号化処理を実施し、誤りが検出されないチャネルのデータはそのままs重誤り訂正復号化処理を復号結果として出力するようにした。このため、符号化および復号化処理を複雑化せずに、回路規模を削減することができる。本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。"