(57)【要約】【課題】複雑な処理を行わずに回路規模を低減することができるメモリコントローラを得ること。【解決手段】メモリコントローラであって、メモリ部へ書き込むデータとデータに対する誤り検出符号とデータおよび誤り検出符号に対するｔ（ｔは２以上の整数）シンボル訂正可能な誤り訂正符号とをｎ個のチャネルごとにメモリ部へ書き込み、データと誤り検出符号と誤り訂正符号とを読み出しデータとしてチャネルごとにメモリ部から読み出すメモリインタフェースと、チャネルごとの読み出しデータに対してｓ（ｓ＜ｔ）シンボル訂正可能な第１の誤り訂正復号化処理を実施するｎ個の第１の誤り訂正復号化部と、第１の誤り訂正復号化処理の復号結果に基づいてチャネルごとに誤り検出処理を行うｎ個の誤り検出部と、誤りが検出されたチャネルの読み出しデータに対してｔシンボル訂正可能な誤り訂正復号化処理を実施する第２の誤り訂正復号化部と、を備える。【選択図】図１
2013029882.tif 000002
【特許請求の範囲】
【請求項１】
メモリ部を制御するメモリコントローラであって、
前記メモリ部へ書き込むデータに対する誤り検出符号を生成し、前記データおよび前記誤り検出符号に対するｔ（ｔは２以上の整数）シンボル訂正可能な誤り訂正符号を生成する符号化部と、
ｎ個（ｎは２以上の整数）のチャネルを有し、前記データと前記誤り検出符号と前記誤り訂正符号と、を前記チャネルごとに前記メモリ部へ書き込み、前記データと前記誤り検出符号と前記誤り訂正符号とを読み出しデータとして前記チャネルごとに前記メモリ部から読み出すメモリインタフェースと、
前記チャネルごとの前記読み出しデータに対してｓ（ｓは、１以上でｔより小さい整数）シンボル訂正可能な第１の誤り訂正復号化処理をそれぞれ実施するｎ個の第１の誤り訂正復号化部と、
前記第１の誤り訂正復号化処理により復号されたデータおよび誤り検出符号に基づいて前記チャネルごとに誤り検出処理を行うｎ個の誤り検出部と、
前記誤り検出部により誤りが検出された前記チャネルの前記読み出しデータに対してｔシンボル訂正可能な第２の誤り訂正復号化処理を実施するｎより小さい個数の第２の誤り訂正復号化部と、
を備えることを特徴とするメモリコントローラ。
【請求項２】
前記符号化部は、前記誤り検出符号を前記チャネルごとに生成し、前記誤り訂正符号を前記チャネルごとに生成する、ことを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記第１の誤り訂正復号化処理における符号長と前記第２の誤り訂正復号化処理における符号長とが同一である、ことを特徴とする請求項１または２に記載のメモリコントローラ。
【請求項４】
１シンボルを１ビットとし、前記誤り訂正符号をＢＣＨ符号とする、ことを特徴とする請求項１、２または３に記載のメモリコントローラ。
【請求項５】
前記誤り訂正符号をリードソロモン符号とする、ことを特徴とする請求項１、２または３に記載のメモリコントローラ。
【請求項６】
前記符号化部は、外部から与えられる訂正能力であるｔの値と予め定められた原始多項式とから生成多項式を算出し、前記生成多項式を用いて前記誤り訂正符号を生成する、ことを特徴とする請求項１〜５のいずれか１つに記載のメモリコントローラ。
【請求項７】
前記第２の誤り訂正復号化部は、訂正能力であるｔの値を変更可能とすることを特徴とする、請求項１〜６のいずれか１つに記載のメモリコントローラ。
【請求項８】
前記第２の誤り訂正復号化部の個数を１とする、ことを特徴とする請求項１〜７のいずれか１つに記載のメモリコントローラ。
【請求項９】
前記第２の誤り訂正復号化部の個数を２以上とする、ことを特徴とする請求項１〜７のいずれか１つに記載のメモリコントローラ。
【請求項１０】
メモリ部と、
前記メモリ部への書き込みおよび前記メモリ部からの読み出しを制御するメモリコントローラと、
を備え、
前記メモリコントローラは、
前記メモリ部へ書き込むデータに対する誤り検出符号を生成し、前記データおよび前記誤り検出符号に対するｔ（ｔは２以上の整数）シンボル訂正可能な誤り訂正符号を生成する符号化部と、
ｎ個（ｎは２以上の整数）のチャネルを有し、前記データと前記誤り検出符号と前記誤り訂正符号と、を前記チャネルごとに前記メモリ部へ書き込み、前記データと前記誤り検出符号と前記誤り訂正符号とを読み出しデータとして前記チャネルごとに前記メモリ部から読み出すメモリインタフェースと、
前記チャネルごとの前記読み出しデータに対してｓ（ｓは、１以上でｔより小さい整数）シンボル訂正可能な第１の誤り訂正復号化処理をそれぞれ実施するｎ個の第１の誤り訂正復号化部と、
前記第１の誤り訂正復号化処理により復号されたデータおよび誤り検出符号に基づいて前記チャネルごとに誤り検出処理を行うｎ個の誤り検出部と、
前記誤り検出部により誤りが検出された前記チャネルの前記読み出しデータに対してｔシンボル訂正可能な第２の誤り訂正復号化処理を実施するｎより小さい個数の第２の誤り訂正復号化部と、
を備えることを特徴とする半導体記憶装置。
【請求項１１】
ｎ個（ｎは２以上の整数）のチャネルを有する半導体記憶装置において、メモリ部へ格納された、データと、前記データに対して生成された誤り検出符号と、前記データおよび前記誤り検出符号に対して生成されたｔ（ｔは２以上の整数）シンボル訂正可能な誤り訂正符号と、を復号する復号方法であって、
前記チャネルごとに、前記データと前記誤り検出符号と前記誤り訂正符号とを読み出しデータとして前記メモリ部から読み出す読み出しステップと、
前記チャネルごとの前記読み出しデータに対してｓ（ｓは、１以上でｔより小さい整数）シンボル訂正可能な第１の誤り訂正復号化処理を、ｎ個の第１の誤り訂正復号化部によりそれぞれ実施する第１の復号ステップと、
前記第１の誤り訂正復号化処理により復号されたデータおよび誤り検出符号に基づいて、ｎ個の誤り検出部により前記チャネルごとに誤り検出処理を行うそれぞれ実施する誤り検出ステップと、
前記誤り検出ステップにおいて誤りが検出されたチャネルの前記読み出しデータに対してｔシンボル訂正可能な第２の誤り訂正復号化処理を、ｎより小さい個数の第２の誤り訂正復号化部により実施する第２の復号ステップと、
を備えることを特徴とする復号方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリコントローラ、半導体記憶装置および復号方法に関する。
【背景技術】
【０００２】
一般に、誤り訂正能力が高い（かつ符号化率の高い）符号は、その復号化処理が複雑になる。また、発生する誤りの数にはばらつきがあり、誤りの数が多い場合には高い誤り訂正能力を発揮することと、誤りが少ない場合には簡易な復号化処理で済ませることと、を両立したいという要求がある。この要求に対して、多重に誤り訂正符号化を実施する技術や、適応的に復号方法を切り替える技術が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−５９４２２号公報
【特許文献２】特開平１０−２０７７２６号公報
【特許文献３】特開２００７−１３２６０号公報
【特許文献４】特開２００８−１６０９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
多重に誤り訂正符号化を実施する技術や、適応的に復号方法を切り替える技術では、一般に、処理が複雑になる、または回路規模が大きくなる等の問題がある。
【課題を解決するための手段】
【０００５】
本願発明の一態様によれば、メモリ部を制御するメモリコントローラであって、メモリ部へ書き込むデータと、データに基づいて誤り検出符号を生成し、データおよび誤り検出符号とにｔ（ｔは２以上の整数）シンボル訂正可能な誤り訂正符号を生成する符号化部、を備える。また、このメモリコントローラは、データと誤り検出符号と誤り訂正符号と、をｎ個（ｎは２以上の整数）のチャネルごとにメモリ部へ書き込み、データと誤り検出符号と誤り訂正符号とを読み出しデータとしてチャネルごとにメモリ部から読み出すメモリインタフェースを備える。さらに、このメモリコントローラは、チャネルごとの読み出しデータに対してｓ（ｓは、１以上でｔより小さい整数）シンボル訂正可能な第１の誤り訂正復号化処理をそれぞれ実施するｎ個の第１の誤り訂正復号化部と、チャネルごとに、前記第１の誤り訂正復号化処理により復号されたデータおよび誤り検出符号に基づいて誤り検出処理を行うｎ個の誤り検出部と、誤り検出部により誤りが検出されたチャネルの読み出しデータに対してｔシンボル訂正可能な第２の誤り訂正復号化処理を実施するｎより小さい個数の第２の誤り訂正復号化部と、を備える。
【図面の簡単な説明】
【０００６】
【図１】図１は、半導体記憶装置の構成例を示すブロック図である。
【図２】図２は、符号化部の構成例を示す図である。
【図３】図３は、半導体メモリ部へ書き込まれるデータと符号の概念を示す図である。
【図４】図４は、復号化部の構成例を示す図である。
【図５】図５は、符号化／復号化処理の概要を示す図である。
【図６】図６は、復号化処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態にかかるメモリコントローラ、半導体記憶装置および復号方法を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【０００８】
図１は、実施の形態にかかる半導体記憶装置１の構成例を示すブロック図である。本実施の形態の半導体記憶装置１は、メモリコントローラ（メモリ制御装置）２と、ＮＡＮＤ型記憶セルを備える半導体メモリ部（メモリ部）３と、で構成される。半導体記憶装置１は、通信媒体を介してホスト４に接続され、ホスト４に対する外部記憶媒体として機能する。ホスト４の例としては、パーソナルコンピュータやＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）コア等があげられる。
【０００９】
メモリコントローラ２は、内部バス２０と、ＨｏｓｔＩ／Ｆ（Ｉｎｔｅｒｆａｃｅ）２１と、ＮＡＮＤＩ／Ｆ（メモリインタフェース）２２と、制御部２３と、符号化／復号化処理部２４と、で構成される。符号化／復号化処理部２４は、符号化部２５と、復号化部２６と、で構成される。
【００１０】
ＨｏｓｔＩ／Ｆ２１は、ホスト４から受信した命令、データなどを内部バス２０に出力する。また、ＨｏｓｔＩ／Ｆ２１は、内部バス２０経由で入力されたデータ、制御部２３からの応答通知（命令の実行完了を示す通知など）などをホスト４へ送信する。
【００１１】
半導体メモリ部３は、メモリ３１−０〜３１−３で構成される。メモリ３１−０〜３１−３はそれぞれ１つ以上のメモリチップによって構成されているとする。
【００１２】
ＮＡＮＤＩ／Ｆ２２は、メモリ３１−０〜３１−３に対してそれぞれ読み書きを並行して実施できるよう４つのチャネル（チャネルｃｈ０〜ｃｈ３）を有している。チャネルｃｈ０〜ｃｈ３は、それぞれ対応するメモリ３１−０〜３１−３を制御する。なお、ここでは、チャネルの数を４とし、半導体メモリ部３を構成するメモリの数を４としているが、チャネルの数はこれに限定されず、半導体メモリ部３はチャネルの数に応じたメモリを備えていればよい。
【００１３】
制御部２３は、半導体記憶装置１の各構成要素を統括的に制御する制御部であり、ＣＰＵコア、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、ＤＭＡ（Direct  Memory  Access）コントローラなどで構成される。制御部２３は、ホスト４からＨｏｓｔＩ／Ｆ２１および内部バス２０経由で命令を受けた場合に、その命令に従った制御を行う。例えば、制御部２３は、ホスト４からの命令に従って、半導体メモリ部３へのデータの書き込み、半導体メモリ部３からのデータの読み出しなどをＮＡＮＤＩ／Ｆ２２へ指示する。また、制御部２３は、符号化／復号化処理部２４へ誤り訂正符号化処理または復号化処理の実施を指示する。
【００１４】
符号化／復号化処理部２４は、制御部２３の指示に基づいて、ホスト４から受信したデータに対して誤り訂正符号化処理を行い、ＮＡＮＤＩ／Ｆ２２へ出力し、またＮＡＮＤＩ／Ｆ２２から入力されるデータに対して復号化処理を行う。この際、制御部２３は、データをチャネルごとに分割して符号化／復号化処理部２４へ入力するよう制御し、符号化／復号化処理部２４はチャネルごとに並行して誤り訂正符号化処理を行い、処理結果をＮＡＮＤＩ／Ｆ２２の対応するチャネルへ出力する。また、半導体メモリ部３から読み出されたデータがＮＡＮＤＩ／Ｆ２２から入力される際には、符号化／復号化処理部２４は、ＮＡＮＤＩ／Ｆ２２の各チャネルから入力されるデータをチャネルごとに並行して復号化処理を行う。
【００１５】
なお、図１に示した半導体記憶装置１の構成は一例であり、半導体メモリとその半導体メモリの読み書きを制御するコントローラを備え、ホスト４と通信が可能な構成であり、チャネルごとに符号化／復号化処理を行う構成であれば、図１に示した構成に限らずどのような構成でもよい。また、半導体メモリ部３の代わりに半導体メモリ以外の記憶手段を用いてもよい。
【００１６】
次に、本実施の形態の半導体メモリ部３への書き込み動作について説明する。まず、制御部２３は、ホスト４からデータの書き込みを指示されると、データをチャネルごとに振り分け、符号化／復号化処理部２４に符号化の実施を指示するとともに、ＮＡＮＤＩ／Ｆ２２へ半導体メモリ部３への書き込みを指示する。ホスト４から送信される書き込み対象のデータは、半導体記憶装置１内の図示しないバッファメモリにチャネルごとに書き込まれる。
【００１７】
本実施の形態では、符号化部２５は、符号化処理として、誤り検出符号および誤り訂正符号を生成する。図２は、本実施の形態の符号化部２５の構成例を示す図である。図２に示すように、符号化部２５は、所定のサイズの書き込みデータに基づいてＣＲＣ（Cyclic  Redundancy  Check）符号を生成する誤り検出符号エンコーダ２５１−１〜２５１−４と、所定のサイズの書き込みデータと当該データに対応するＣＲＣ符号とに基づいて誤り訂正符号を生成する誤り訂正符号エンコーダ２５２−１〜２５２−４と、を備える。
【００１８】
ここでは、符号化部２５が、誤り検出符号としてＣＲＣ符号を生成する例を説明するが、誤り検出符号はＣＲＣ符号に限定されない。また、誤り訂正符号としてはどのような符号を用いてもよいが、ここでは、ＢＣＨ符号を用いるとする。誤り訂正符号は、ＢＣＨ符号に限らずＲＳ（Reed−Solomon）符号等どのような符号を用いてもよい。なお、ここでは、チャネルの数を４としているため、誤り検出符号エンコーダおよび誤り訂正符号エンコーダの数をそれぞれ４としているが、チャネルの数に応じて誤り検出符号エンコーダおよび誤り訂正符号エンコーダを備えればよい。
【００１９】
誤り検出符号エンコーダ２５１−１〜２５１−４は、バッファメモリから入力されるそれぞれのチャネルに対応する書き込み対象のデータに対して誤り検出符号を生成する。誤り訂正符号エンコーダ２５２−１〜２５２−４は、書き込み対象のデータと対応する誤り検出符号とに対してｔ（ｔは１以上の整数）シンボル訂正可能な誤り訂正符号を生成し、書き込み対象のデータと誤り検出符号と生成した誤り訂正符号とをＮＡＮＤＩ／Ｆ２２の対応するチャネルへ入力する。なお、ここでは、誤り訂正符号としてビット単位で訂正を行うＢＣＨ符号を用いるため、ｔシンボル訂正可能な誤り訂正符号（以下、ｔ重誤り訂正符号という）は、ｔビット訂正可能なＢＣＨ符号のことを示す。一方、ＲＳ符号等ではシンボル単位で訂正を行っており、訂正単位は採用する誤り訂正符号の種類に依存する。ここでは、１シンボルが１ビットである場合も含むとし、ｔシンボル訂正可能と記載した場合には、ビット単位で訂正する場合のｔビット訂正可能という意味を含むこととする。
【００２０】
ＮＡＮＤＩ／Ｆ２２は、チャネルごとに、誤り訂正符号エンコーダ２５２−１〜２５２−４から入力される書き込み対象のデータ、誤り検出符号および誤り訂正符号を、メモリ３１−０〜３１−３へそれぞれ書き込む。なお、書き込み対象のデータは、符号化部２５からではなく、バッファメモリからＮＡＮＤＩ／Ｆ２２へ入力されてもよい。
【００２１】
図３は、半導体メモリ部３へ書き込まれるデータと符号の概念を示す図である。図３に示すように、所定のサイズの書き込みデータ（図３ではデータと記載）に基づいて誤り検出符号（ＣＲＣ符号）が生成され、所定のサイズの書き込みデータと対応する誤り検出符号とを誤り訂正符号化対象として誤り訂正符号が生成される。ここで、所定のサイズとは、例えば、セクターサイズである。セクターサイズは、例えば、５１２バイトである。なお、図３では、１組のデータと誤り検出符号に対して１つの誤り訂正符号が生成される例を示しているが、データと誤り検出符号の複数組に対して１つの誤り訂正符号を生成するようにしてもよい。
【００２２】
次に、本実施の形態の半導体メモリ部３からの読出し動作について説明する。制御部２３は、ホスト４からデータの読み出しを指示されると、符号化／復号化処理部２４に復号化の実施を指示するとともに、ＮＡＮＤＩ／Ｆ２２へ半導体メモリ部３からの読み出しを指示する。ＮＡＮＤＩ／Ｆ２２の各チャネルは、制御部２３からの指示に基づいて半導体メモリ部３からデータと対応する誤り検出符号および誤り訂正符号とを読み出し、読み出したデータ、対応する誤り検出符号および誤り訂正符号を符号化／復号化処理部２４へ出力する。
【００２３】
符号化／復号化処理部２４の復号化部２６は、チャネルごとに、読み出したデータと誤り検出符号および誤り訂正符号とに基づいて復号化処理を行い、復号化処理により誤りが有ると判断された場合には、読み出したデータに対して誤り訂正を実施する。Ｈｏｓｔ  Ｉ／Ｆ２１は、誤り訂正後のデータ（誤りの無い場合には、半導体メモリ部３から読み出したデータ）をホスト４に送信する。
【００２４】
次に、本実施の形態の復号化処理について詳細に説明する。図４は、本実施の形態の復号化部２６の構成例を示す図である。図４に示すように、本実施の形態の復号化部２６は、ｓ（ｓは、１以上でｔより小さい整数）個の誤り訂正処理を実施することが可能なｓ重誤り訂正デコーダ（第１の誤り訂正復号化部）２６１−１〜２６１−４と、誤り検出符号を用いて誤り検出を行う誤り検出部２６２−１〜２６２−４と、バッファ２６３−１〜２６３−４と、をチャネル毎に備える。復号化部２６は、さらにｔ個の誤り訂正処理を実施することが可能なｔ重誤り訂正デコーダ（第２の誤り訂正復号化部）２６４と、誤り検出部２６５と、選択部２６６と、を備える。なお、ここでは、チャネルの数を４としているため、ｓ重誤り訂正デコーダ、誤り検出部およびバッファの数をそれぞれ４としているが、チャネルの数に応じてこれらを備えればよい。また、バッファ２６３−１〜２６３−４はチャネルごとに備えず、１つのバッファで共用してもよいし、ｓ重誤り訂正デコーダ２６１−１〜２６３−４と一体化してもよいし、復号化部２６の外にバッファを備えてもよい。
【００２５】
図５は、本実施の形態の符号化／復号化処理の概要を示す図である。図５に示すように、本実施の形態では、ＮＡＮＤＩ／Ｆ２２のチャネル（ｃｈ０〜ｃｈ３）ごとに、符号化復号化の処理を実施する。図５は、誤り検出符号としてＣＲＣ符号、誤り訂正符号としてＢＣＨ符号を用いる例を示している。まず、書き込み時には、上述のように、チャネルごとに、符号化部２５において、ＣＲＣ付加処理（誤り検出符号の生成）が行われる（ステップＳ１）。なお、図５では、図の簡略化のため、ｃｈ０内の処理にのみステップ番号を付しているが、他のチャネル（ｃｈ１〜ｃｈ３）でも同様の処理が行われる。
【００２６】
そして、チャネルごとに、符号化部２５により、ｔ重訂正ＢＣＨ符号化処理（ｔ重の誤り訂正符号化処理）が実施され（ステップＳ２）、半導体メモリ部３へデータおよび各符号の書き込みが行われ、読み出し要求があると半導体メモリ部３からの読み出しが行われる（ステップＳ３）。半導体メモリ部３からの読み出されたデータおよび各符号は、チャネルごとに、復号化部２６により、まず、ｓ重訂正ＢＣＨ復号（ｓ重誤り訂正復号化処理）が行われ（ステップＳ４）、ＣＲＣ検査（誤り検出処理）が行われる（ステップＳ５）。
【００２７】
ＣＲＣ検査により誤り無し（ＣＲＣ＝ＯＫ）となった場合、ｓ重訂正ＢＣＨ復号されたデータが復号化部２６から出力されホスト４へ送信される。ＣＲＣ検査により誤り有り（ＣＲＣ＝ＮＧ）となったチャネルのデータに対してはｔ重訂正ＢＣＨ復号（ｔ重誤り訂正復号化処理）が実施され（ステップＳ６）、ｔ重誤り訂正復号化処理に基づいてＣＲＣ検査を行う（ステップＳ７）。なお、ステップＳ５のＣＲＣ検査（誤り検出処理）と、ステップＳ７のＣＲＣ検査（誤り検出処理）は、独立の回路で実行してもよいし、共用の回路で実行してもよい。このＣＲＣ検査により誤り無しとなった場合ｔ重訂正ＢＣＨ復号されたデータが復号化部２６から出力されホスト４へ送信される。
【００２８】
ここで、誤り訂正処理の具体例を用いて、ｓ重誤り訂正処理とｔ重誤り訂正処理の差を説明する。例として、符号長＝１５、ｓ＝１、ｔ＝２の場合について説明する。符号化処理において、ｔ（＝２）個の誤りが訂正可能な（ｔ重訂正可能な）ＢＣＨ符号が生成されたとする。
【００２９】
この場合に、ｔ重誤り訂正処理により、復号を行う場合、まず、半導体メモリ部３から読み出されたデータに基づいて２つのシンドローム（ａ０，ａ１）を計算する。次に、シンドローム（ａ０，ａ１）を用いて２つの誤り位置多項式の係数（ｂ０，ｂ１）を、例えば以下の式（１）に基づいて求める。なお、以下の計算方法は一例であり、誤り位置多項式の計算方法は、復号アルゴリズムに依存するため、以下の方法に限定されない。
ｂ０＝ａ０
ｂ１＝（ａ０3＋ａ１）／ａ０              …（１）
【００３０】
その後、１＋ｂ０×Ｘ＋ｂ１×Ｘ2＝０が成立するＸ（ｘ０，ｘ１）を求める。ここで求められたＸ（ｘ０，ｘ１）は誤り位置を表しており、当該ビットを反転することで誤り訂正を行うことができる。
【００３１】
一方、s（＝１）重訂正する場合は、まず、半導体メモリ部３から読み出されたデータに基づいて１つのシンドロームａ０を計算する。次に、上記と同様に誤り位置多項式の１つの係数ｂ０を求める。その後、１＋ｂ０×Ｘ＝０が成立するＸ（ｘ０）を求める。ここで求められたＸ（ｘ０）は誤り位置を表しており、当該ビットを反転することで誤り訂正を行うことができる。
【００３２】
以上のように、ｓ重訂正の復号化処理は、ｔ重訂正の復号化処理より演算が少なく、一般に係数の計算等を並列して行うため、ｓ重訂正の復号化処理はｔ重訂正の復号化処理より回路面積の小さい復号回路で実装することが可能である。
【００３３】
上述のとおり、本実施の形態では、符号化処理において、ｔ重誤り訂正符号を生成している。ｔ重誤り訂正符号を用いて復号する際には、通常、ｔ個の誤り訂正処理を実施することが可能なデコーダを用いて復号化処理を実施する。しかし、この場合ｔが大きくなるとデコーダのハードウェア規模が大きくなる。誤り訂正符号の選択の際には、一般に、誤り訂正不可となる可能性を低くするため、想定される平均誤り数より多い数の誤りに対応可能な誤り訂正符号が選択される。したがって、実際に生じる誤りは、ｔに比べ少ない場合が多い。
【００３４】
本実施の形態では、ｔより小さい数であるｓ個の誤り訂正に対応するｓ重誤り訂正デコーダ２６１−１〜２６１−４をチャネルごとに備え、通常は、ｓ重誤り訂正デコーダ２６１−１〜２６１−４により誤り訂正処理を実施する。そして、チャネルごとに、誤り検出部２６２−１〜２６２−４が、誤り訂正処理後のデータおよび誤り検出符号に基づいて、誤り検出を行い、これにより誤りが検出された場合に、ｔ重誤り訂正デコーダ２６４による誤り訂正処理を実施する。ｔ重誤り訂正デコーダ２６４の数は、チャネル数分備える必要はなく、１つ以上であればよい。
【００３５】
また、復号化処理では、通常はｓ重誤り訂正処理を行うだけでよく、誤り訂正検出処理の処理負荷は大きくないため、処理を複雑にすることなくハードウェア規模を低減できる。また、誤り訂正符号化の際は、１種類のｔ重誤り訂正符号を生成すればよいだけであり、同一のデータに対して２重に誤り訂正符号化する必要もなく、冗長な符号を増加させることもない。さらに、ｔ重誤り訂正デコーダ２６４に入力されるデータ（半導体メモリ部３から読み出されたデータ）は、ｓ重誤り訂正デコーダ２６１−１〜２６１−４のいずれかに入力されたデータと同一であり、半導体メモリ部３からの再読み出し等を行う必要もない。
【００３６】
図６は、本実施の形態の復号化処理手順の一例を示すフローチャートである。図５および図６を用いて、本実施の復号化部２６の動作を説明する。まず、復号化処理が開始されると、ＮＡＮＤＩ／Ｆ２２により、チャネルごとにデータ（半導体メモリ部３から読み出されたデータであり、誤り訂正符号および誤り検出符号を含む）が読み出され、ｓ重誤り訂正デコーダ２６１−１〜２６１−４に、それぞれ入力される（ステップＳ１１）。また、ＮＡＮＤＩ／Ｆ２２の各チャネルから入力されるデータは、それぞれバッファ２６３−１〜２６３−４にも入力される。
【００３７】
ｓ重誤り訂正デコーダ２６１−１〜２６１−４は、ＮＡＮＤＩ／Ｆ２２の各チャネルから入力されるデータに対してそれぞれｓ重誤り訂正復号化処理（ｓ個の誤り訂正が可能な誤り訂正復号化処理）を実施する（ステップＳ１２）。
【００３８】
誤り検出部２６２−１〜２６２−４は、ｓ重誤り訂正デコーダ２６１−１〜２６１−４によりｓ重誤り訂正処理がされたデータおよび誤り検出符号に基づいて、それぞれ誤り検出処理を実施し、誤り検出結果を制御部２３へ通知するとともにｓ重誤り訂正処理がされたデータを選択部２６６へ出力する（ステップＳ１３）。
【００３９】
制御部２３は、誤り検出部２６２−１〜２６２−４から通知される誤り検出結果に基づいて、誤りが検出されたチャネル数ＮCHを求め、ＮCHが０であるか、１であるか、または２以上であるかを判断する（ステップＳ１４）。ＮCHが０である場合（ステップＳ１４  ＮCH＝０）、制御部２３は、選択部２６６に対して、誤り検出部２６２−１〜２６２−４から出力されるデータを全て選択し、誤り訂正復号成功という付帯情報を付けて出力するよう指示し、選択部２６６は指示に従って誤り検出部２６２−１〜２６２−４から出力されるデータを出力する（ステップＳ１５）。そして、制御部２３は、読み出し対象のデータの読み出しが終了したか否かを判断し（ステップＳ２５）、読み出しが終了した場合（ステップＳ２５  Ｙｅｓ）、処理を終了し、読み出しが終了していない場合（ステップＳ２５  Ｎｏ）、ステップＳ１１へ戻る。
【００４０】
ＮCHが１である場合（ステップＳ１４  ＮCH＝１）、制御部２３は、選択部２６６に対して、誤りが検出されなかったチャネルに対応する誤り検出部２６２−１〜２６２−４から出力されるデータ（ｓ重誤り訂正復号化データ）を選択し、誤り訂正復号成功という付帯情報を付けて出力するよう指示し、選択部２６６は指示に従ってデータを出力する（ステップＳ１６）。ステップＳ１６では、さらに制御部２３は、ｔ重誤り訂正デコーダ２６４に対して、誤りが検出されたチャネルに対応するバッファ２６３−１〜２６３−４からデータを読み出して処理を実施するよう指示し、ｔ重誤り訂正デコーダ２６４は、制御部２３からの指示に基づいてｔ重誤り訂正処理を実施する（ステップＳ１６）。具体的には、ｔ重誤り訂正デコーダ２６４は、読み出しを指示されたバッファ２６３−１〜２６３−４（ｓ重誤り訂正処理後に誤りが検出されたデータを格納しているバッファ）からデータを読み出して、当該データに対してｔ重誤り訂正処理を実施し、処理後のデータを誤り検出部２６５へ出力する。
【００４１】
誤り検出部２６５は、ｔ重誤り訂正処理後のデータに基づいて誤り検出を行い、誤り検出結果を制御部２３へ通知するとともにｔ重誤り訂正処理がされたデータを選択部２６６へ出力する。制御部２３は、誤り検出部２６５から通知された誤り検出結果に基づいて誤りが無いか否かを判断し（ステップＳ１７）、誤りが無い場合は（ステップＳ１７  Ｙｅｓ）、選択部２６６に対して、誤り検出部２６５から出力されるデータを選択し、誤り訂正復号成功という付帯情報を付けて出力するよう指示し、選択部２６６は指示に基づいてデータを出力し（ステップＳ１８）、ステップＳ２５へ進む。一方、ステップＳ１７で誤りが有ると判断した場合は（ステップＳ１７  Ｎｏ）、制御部２３は、選択部２６６に治して誤りが検出されたチャネルに対応するバッファ２６３−１〜２６３−４のデータを選択し、誤り訂正復号失敗という付帯情報を付けて出力するよう指示し、選択部２６６は指示に基づいてデータを出力し（ステップＳ１９）、ステップＳ２５へ進む。
【００４２】
また、ステップＳ１４で、ＮCHが２以上である場合（ステップＳ１４  ＮCH≧２）、制御部２３は、選択部２６６へ誤りが検出されなかったチャネルに対応する誤り検出部２６２−１〜２６２−４から出力されるデータを選択し、誤り訂正復号成功という付帯情報を付けて出力するよう指示し、選択部２６６は指示に従ってデータ出力する（ステップＳ２０）。ステップＳ２０では、さらに制御部２３は、ＮCH個のチャネルのうちｔ重誤り訂正処理対象とするチャネルを決定する（ステップＳ２０）。そして、制御部２３は、決定したチャネルに対応するバッファ２６３−１〜２６３−４からデータを読み出して処理を実施するよう指示し、ｔ重誤り訂正デコーダ２６４は、制御部２３からの指示に基づいてｔ重誤り訂正処理を実施する（ステップＳ２１）。誤り検出部２６５は、ｔ重誤り訂正処理後のデータに基づいて誤り検出を行い、誤りを検出結果を制御部２３へ通知するとともにｔ重誤り訂正処理がされたデータを選択部２６６へ出力する。制御部２３は、誤り検出部２６５から通知された誤り検出結果に基づいて誤りが無いか否かを判断し（ステップＳ２２）、誤りが無い場合は（ステップＳ２２  Ｙｅｓ）、選択部２６６に対して、誤り検出部２６５から出力されるデータを選択し、誤り訂正復号成功という付帯情報を付けて出力するよう指示し、選択部２６６は指示に基づいてデータを出力する（ステップＳ２３）。
【００４３】
制御部２３は、ＮCH個のチャネルのうち全てについてｔ重誤り訂正処理が終了したか否かを判断し（ステップＳ２４）、ＮCH個のチャネルのうち全てについてｔ重誤り訂正処理が終了した場合（ステップＳ２４  Ｙｅｓ）、ステップＳ２５へ進む。ＮCH個のチャネルのうちｔ重誤り訂正処理が終了していないチャネルがある場合（ステップＳ２４  Ｎｏ）、ステップＳ２０へ戻る。なお、２回目以降のステップＳ２０では、ｔ重誤り訂正処理が終了していないチャネルのうちからｔ重誤り訂正処理対象とするチャネルを決定する。
【００４４】
ステップＳ２２で、誤りが有る場合は（ステップＳ２２  Ｎｏ）、制御部２３は、選択部２６６へ誤りが検出されたチャネルに対応するバッファ２６３−１〜２６３−４のデータを選択し、誤り訂正復号失敗という付帯情報を付けて出力するよう指示し、選択部２６６は指示に基づいてデータを出力し（ステップＳ２６）、ステップＳ２４へ進む。
【００４５】
なお、ｓ重誤り訂正デコーダ２６１−１〜２６１−４、ｔ重誤り訂正デコーダ２６４との復号方法に制約はないが、ＢＣＨ符号やＲＳ符号等を用いる場合には、ｓ重誤り訂正デコーダ２６１−１〜２６１−４とｔ重誤り訂正デコーダ２６４とは、同一ＧＦ（ガロア体）上の復号演算（すなわち、符号長を同一とした復号演算）を行うことになる。
【００４６】
また、ここでは、誤り訂正エンコーダ２５２、および、t重誤り訂正デコーダ２６４の訂正能力（ｔの値）は固定値であるとして説明したが、ホストからの制御信号に基づいて設定することが可能であるとしてもよい。
【００４７】
例えば、ＢＣＨ符号を用いる場合に、符号化に用いる原始多項式を予め定めておき、符号化ではこの原始多項式を用いて生成した生成多項式を用いて符号化処理を実施する。ｔ重訂正ＢＣＨ符号の生成多項式Ｇ（ｘ）は、以下の式（２）で表すことができる。
Ｇ（ｘ）＝Ｍ1（ｘ）・Ｍ3（ｘ）・Ｍ5（ｘ）…Ｍ(2t-1)（ｘ）        …（２）
【００４８】
Ｍ1（ｘ）は、原始元αを根とする多項式であり、原始多項式と呼ばれる。Ｍ3（ｘ）はα3を根とする多項式、Ｍ5（ｘ）はα5を根とする多項式、…、Ｍ(2t-1)（ｘ）はα(2t-1)を根とする多項式、である。Ｍ1（ｘ）を決定すると、演算によりＭ3（ｘ），Ｍ5（ｘ），…，Ｍ(2t-1)（ｘ）を順次求めていくことができる。従って、原始多項式と訂正能力（ｔの値）がわかっていれば生成多項式を求めることができる。
【００４９】
復号化処理においても同様に、原始多項式と訂正能力（ｔの値）に基づいて生成多項式を特定することで、符号化に対応した復号化処理が可能となる。
【００５０】
訂正能力が可変である誤り訂正エンコーダや誤り訂正デコーダは、訂正能力が固定値である場合に比べて回路規模が大きくなる恐れがあるが、誤り訂正エンコーダの回路規模は誤り訂正デコーダの回路規模に比べて小さいため、誤り訂正エンコーダの回路規模が大きくなっても、メモリコントローラ全体としての回路規模増加は比較的小さい。また、本発明に係るメモリコントローラでは、ｔ重誤り訂正デコーダ２６４をチャネル数より小さい個数しか備えない特徴があるため、全ての誤り訂正デコーダの訂正能力を可変とする場合と比べて、メモリコントローラ全体としての回路規模増加は小さい。
【００５１】
なお、以上の説明では、ｔ重誤り訂正デコーダ２６４を１つ備える例を説明したが、２つ以上備えていてもよい。同時に２つ以上のチャネルでｓ重誤り訂正処理後に誤りが検出された場合、ｔ重誤り訂正デコーダ２６４を１つ備える場合には、いずれか一方のチャネルのｔ重誤り訂正復号化処理は他方のｔ重誤り訂正復号化処理が終了するまで開始できないが、２つ備えていれば、同時に２つのチャネルのｔ重誤り訂正復号化処理まで対応できる。だたし、ｔ重誤り訂正デコーダ２６４の個数が増えるとハードウェア規模も増えるので、ハードウェア規模の増大量、想定される誤り数や読み出しに対する要求速度等を考慮してｔ重誤り訂正デコーダ２６４を適切に選択すればよい。
【００５２】
以上のように、本実施の形態では、誤り検出符号が付加されてｔ重誤り訂正符号化処理が施されたデータに対して、チャネルごとにｓ重誤り訂正デコーダ２６１−１〜２６１−４によるｓ重誤り訂正復号化処理を実施する。そして、誤り検出符号に基づいて誤り検出を行い、誤りが検出されたチャネルのデータにはｔ重誤り訂正デコーダ２６４によるｔ重誤り訂正復号化処理を実施し、誤りが検出されないチャネルのデータはそのままｓ重誤り訂正復号化処理を復号結果として出力するようにした。このため、符号化および復号化処理を複雑化せずに、回路規模を削減することができる。
【００５３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５４】
１  半導体記憶装置、２  メモリコントローラ、３  半導体メモリ部、２２  ＮＡＮＤＩ／Ｆ、２３  制御部、２４  符号化／復号化処理部、２５  符号化部、２６  復号化部、２５１−１〜２５１−４  誤り検出符号エンコーダ、２５２−１〜２５２−４  誤り訂正符号エンコーダ、２６１−１〜２６１−４  ｓ重誤り訂正デコーダ、２６２−１〜２６２−４，２６５  誤り検出部、２６３−１〜２６３−４  バッファ、２６４  ｔ重誤り訂正デコーダ、２６６  選択部。
【図１】
2013029882.tif 000003
【図２】
2013029882.tif 000004
【図３】
2013029882.tif 000005
【図４】
2013029882.tif 000006
【図５】
2013029882.tif 000007
【図６】
2013029882.tif 000008