(57)【要約】【課題】  高精度かつ高速に誤り訂正を行うことができ、かつ、消費電力を低く抑えることができる不揮発性半導体記憶システムを提供することにある。【解決手段】  不揮発性半導体記憶システムにおいては、ＬＤＰＣ符号化された１以上のデータフレームを保持する半導体メモリ１０１と、データフレームに対して、第１繰り返し復号アルゴリズムに従って誤り訂正を行う第１誤り訂正部１０５と、第１誤り訂正部１０５による訂正が失敗したデータフレームに対して、第１繰り返し復号アルゴリズムより量子化ビット数が多いメッセージを使用する第２繰り返し復号アルゴリズムに従って誤り訂正を行う第２誤り訂正部１０６と、を具備する。【選択図】    図１
2011180911.tif 000002
【特許請求の範囲】
【請求項１】
ＬＤＰＣ符号化されたデータフレームを保持する半導体メモリと、
前記データフレームに対して、第１繰り返し復号アルゴリズムに従って誤り訂正を行う第１誤り訂正部と、
前記第1誤り訂正部による訂正が失敗したデータフレームに対して、前記第１繰り返し復号アルゴリズムより量子化ビット数が多いメッセージを使用する第２繰り返し復号アルゴリズムに従って誤り訂正を行う第２誤り訂正部と、
を具備することを特徴とする不揮発性半導体記憶システム。
【請求項２】
前記第２誤り訂正部の数が前記第１誤り訂正部の数以下であることを特徴とする請求項１に記載の不揮発性半導体記憶システム。
【請求項３】
前記半導体メモリは、前記データフレームに含まれるビット毎に対応する軟判定値を保持し、
前記軟判定値を使用して、前記第２誤り訂正部による訂正が失敗したデータフレームに対して、前記第２繰り返し復号アルゴリズムが使用する前記メッセージの量子化ビット数以上の量子化ビット数を持つメッセージを使用する第３繰り返し復号アルゴリズムに従って、誤り訂正を行う第３誤り訂正部と、
前記データフレーム、並びに、前記第２誤り訂正部による訂正が失敗した前記データフレームに対応する軟判定値を、前記半導体メモリから読み出すメモリインタフェースと、を具備することを特徴とする請求項２に記載の不揮発性半導体記憶システム。
【請求項４】
前記第１誤り訂正部は、パリティ検査により得られるビット列に含まれる１の数を示すシンドローム重みを算出し、
前記データフレームは、前記シンドローム重みが第１閾値より小さい場合には、前記第１誤り訂正部に入力され、前記シンドローム重みが前記第１閾値以上、かつ、第２閾値より小さい場合には、前記第２誤り訂正部に入力され、前記シンドローム重みが前記第２閾値以上である場合には、前記第３誤り訂正部に入力されることを特徴とする請求項３に記載の不揮発性半導体記憶システム。
【請求項５】
ＬＤＰＣ符号化されたデータフレームと、前記データフレームに含まれるビットごとに対応する軟判定値とを保持する半導体メモリと、
前記データフレームに対して、第１繰り返し復号アルゴリズムに従って誤り訂正を行う第１誤り訂正部と、
前記軟判定値を使用して、前記第１誤り訂正部による訂正が失敗したデータフレームに対して、前記第１繰り返し復号アルゴリズムより量子化ビット数が多いメッセージを使用する第２繰り返し復号アルゴリズムに従って誤り訂正を行う第２誤り訂正部であって、当該第２誤り訂正部の数が前記第１誤り訂正部の数以下である第２誤り訂正部と、
を具備することを特徴とする不揮発性半導体記憶システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、低密度パリティチェック（ＬＤＰＣ：Low Density Parity Check）符号を使用して誤り訂正を行う誤り訂正装置を備えた不揮発性半導体記憶システムに関する。
【背景技術】
【０００２】
ＮＡＮＤフラッシュメモリに代表される不揮発性半導体メモリを備えた不揮発性半導体記憶システムでは、読み出し時に生じるデータ誤りを訂正するために、誤り訂正符号（ＥＣＣ：Error Correcting Code）が利用される。誤り訂正符号としては、例えば、確率に基づく反復計算による誤り訂正方式であるＬＤＰＣ符号がある。このような不揮発性半導体記憶システムにおいては、半導体メモリに格納されているデータを高速に出力するために、誤り訂正符号を使用して誤りを訂正する誤り訂正回路が並列に複数配置されている。
【０００３】
また、近年では、誤り訂正符号とともに、メモリセルの閾値電圧を詳細に判定した軟判定値を使用して、データ誤りを検出して訂正する復号アルゴリズムに注目が集まっている（例えば、特許文献１参照）。特許文献１に開示されるような誤り訂正符号及び軟判定値を使用した半導体記憶システムにおいては、データ誤りを高精度に検出して訂正することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１６０９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に開示されるような軟判定値を使用する誤り訂正回路は、回路規模が大きいために、このような誤り訂正回路が並列に複数配置されると、回路規模が増大され、その結果、消費電力が増大される問題がある。
【０００６】
本発明は、上記問題点を解決するためになされたものであり、高精度かつ高速に誤り訂正を行うことができ、かつ、消費電力を低く抑えることができる不揮発性半導体記憶システムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一態様に係る不揮発性半導体記憶システムは、
ＬＤＰＣ符号化されたデータフレームを保持する半導体メモリと、
前記データフレームに対して、第１繰り返し復号アルゴリズムに従って誤り訂正を行う第１誤り訂正部と、
前記第1誤り訂正部による訂正が失敗したデータフレームに対して、前記第１繰り返し復号アルゴリズムより量子化ビット数が多いメッセージを使用する第２繰り返し復号アルゴリズムに従って誤り訂正を行う第２誤り訂正部と、
を具備することを特徴とする。
【０００８】
本発明の他の態様に係る不揮発性半導体記憶システムは、
ＬＤＰＣ符号化されたデータフレームと、前記データフレームに含まれるビットごとに対応する軟判定値とを保持する半導体メモリと、
前記データフレームに対して、第１繰り返し復号アルゴリズムに従って誤り訂正を行う第１誤り訂正部と、
前記軟判定値を使用して、前記第１誤り訂正部による訂正が失敗したデータフレームに対して、前記第１繰り返し復号アルゴリズムより量子化ビット数が多いメッセージを使用する第２繰り返し復号アルゴリズムに従って誤り訂正を行う第２誤り訂正部であって、当該第２誤り訂正部の数が前記第１誤り訂正部の数以下である第２誤り訂正部と、
を具備することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、消費電力を低く抑え、高精度かつ高速に誤り訂正を行うことができる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施の形態に係る不揮発性半導体記憶システムの構成を概略的に示すブロック図である。
【図２】実施の形態に係るページデータの構成の一例を示す概略図である。
【図３】図１に示した第１及び第２誤り訂正部が備えるパリティ検査行列の一例を示す図である。
【図４】実施の形態に係る複数のページデータの特定部分に誤りが発生した状態を示す概略図である。
【図５】第２の実施の形態に係る不揮発性半導体記憶システムの構成を概略的に示すブロック図である。
【図６】第３の実施の形態に係る不揮発性半導体記憶システムの構成を概略的に示すブロック図である。
【図７】図６に示したフラッシュメモリから読み出される軟判定値及び硬判定値を説明するための説明図である。
【図８】図６に示した不揮発性半導体記憶システムの動作の一例を示すフローチャートである。
【図９】第４の実施の形態に係る不揮発性半導体記憶システムの構成を概略的に示すブロック図である。
【図１０】図９に示した不揮発性半導体記憶システムの動作の一例を示すフローチャートである。
【図１１】図９に示した不揮発性半導体記憶システムの動作の他の例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、必要に応じて図面を参照しながら、本発明の実施の形態に係る不揮発性半導体記憶システムを説明する。  
実施の形態に係る不揮発性半導体記憶システムは、不揮発性半導体メモリを備え、この不揮発性半導体メモリに格納されている符号化ビット列を読み出す際に符号化ビット列に生じた誤りを、誤り訂正符号（ＥＣＣ：Error Correcting Code）としての低密度パリティチェック（ＬＤＰＣ：Low Density Parity Check）符号を使用して、訂正することができる。実施の形態では、不揮発性半導体記憶システムが備える不揮発性半導体メモリがＮＡＮＤ型フラッシュメモリ（以下、フラッシュメモリと略称する。）である場合を例にとって説明する。また、実施の形態では、「誤り訂正」及び「復号」の２つの用語は、同じ意味で使用され、符号化ビット列に生じた誤りを検出し、正しい符号化ビット列を推定することを意味する。
【００１２】
（第１の実施の形態）  
図１は、第１の実施の形態に係る不揮発性半導体記憶システム１００の構成を概略的に示している。この不揮発性半導体記憶システム１００は、図１に示されるように、フラッシュメモリ１０１、メモリインタフェース１０２、リードバッファ１０３、制御部１０４、第１誤り訂正部１０５、第２誤り訂正部１０６、及びホストバス１０７を備えている。図１において、誤り訂正装置１５０は、リードバッファ１０３、制御部１０４、第１誤り訂正部１０５、及び第２誤り訂正部１０６を含む。
【００１３】
図１には、不揮発性半導体記憶システム１００の復号処理に関連する構成のみが示されているが、不揮発性半導体記憶システム１００は、符号化処理に関連する構成をさらに備えている。例えば、不揮発性半導体記憶システム１００は、外部から入力した情報データをＬＤＰＣ符号化し、フレームデータであるＥＣＣフレームを作成する符号化装置、及び生成されたＥＣＣフレームをフラッシュメモリ１０１に記録するプログラム装置を備える。ここで、ＥＣＣフレームは、符号化及び復号を行うデータの単位を示し、所定ビット数の情報データ、及び所定ビット数のパリティデータを含む。
【００１４】
符号化装置は、予め設定された生成行列Ｇを使用して、外部から入力した情報データに応じたＬＤＰＣ符号のパリティデータを生成し、情報データに生成したパリティデータを付加することでＥＣＣフレームを作成する。生成行列Ｇは、後述するパリティ検査行列Ｈに対して、ＧＨＴ＝０を満たす行列として定められる。ここで、上付きのＴは転置を表わし、０はゼロベクトルを表わす。ＬＤＰＣ符号化は、情報データを情報ビット列Ｖとすると、ＶＧ＝Ｃとなる符号化ビット列Ｃを求めることに一致する。この符号化ビット列ＣがＥＣＣフレームを示す。
【００１５】
図１のフラッシュメモリ１０１は、複数のメモリセルがＮＡＮＤ型に接続されたアレイ構造を有する。このようなＮＡＮＤ型フラッシュメモリ１０１では、複数のメモリセルは、複数のワード線、及びこれらワード線に交差する複数のビット線に沿ってマトリックス状に配置されている。データの書き込み及び読み出しは、一本のワード線に接続される複数のメモリセルの集合毎に行われる。この複数のメモリセルの集合をページと呼ぶ。換言すると、データの書き込み及び読み出しは、ページ単位で行われる。また、データの消去は、複数のページを含むメモリブロック単位で行われる。ページの大きさは、フラッシュメモリの構成に応じて決定されるが、通常は数ＫＢ程度に設定される。実施の形態では、読み出し動作のみを説明し、書き込み動作についての説明を省略する。
【００１６】
各メモリセルには、２つ以上の判定閾値電圧レベルが設定され、１ビット以上のデータが保持される。フラッシュメモリ１０１は、メモリセル毎に保持することができるデータのビット数を制限されない。１つのメモリセルに２ビットのデータを記録するフラッシュメモリでは、メモリセルに４つの判定閾値電圧レベルが設定され、各判定閾値電圧レベルに２ビットのパターン、即ち、“１１”、“１０”、“０１”、“００”が割り当てられる。このような４値のデータを保持するフラッシュメモリでは、一例として、“１１”データを保持するメモリセルの閾値電圧Ｖｔｈは、Ｖｔｈ＜０Ｖであり、“０１”データを保持するメモリセルの閾値電圧Ｖｔｈは、０Ｖ＜Ｖｔｈ＜Ｖｔｈ１であり、“００”データを保持するメモリセルの閾値電圧Ｖｔｈは、Ｖｔｈ１＜Ｖｔｈ＜Ｖｔｈ２であり、また、“１０”データを保持するメモリセルの閾値電圧Ｖｔｈは、Ｖｔｈ２＜Ｖｔｈ＜Ｖｔｈ３である。
【００１７】
メモリインタフェース１０２は、制御部１０４の指示に従って、フラッシュメモリ１０１からページデータを読み出す。具体的には、メモリインタフェース１０２は、ワード線に読み出し電圧を印加することで、制御部１０４により指示されたページ内の各メモリセルの閾値電圧Ｖｔｈを判定し、ページ内の各メモリセルが保持しているデータをページデータとして読み出す。メモリインタフェース１０２によって読み出されたページデータは、リードバッファ１０３に順次出力される。
【００１８】
図２には、本実施の形態に係るページデータ２００の構成が概略的に示されている。ページデータ２００は、図２に示されるように、Ｆ個（Ｆは自然数である。）のＥＣＣフレーム２０１〜２０Ｆを含む。ＥＣＣフレーム２０１〜２０Ｆは、夫々情報データ２０１Ａ〜２０ＦＡ及びパリティデータ２０１Ｂ〜２０ＦＢを含む。説明を簡単にするために、図２には、情報データにＬＤＰＣ符号のパリティデータが付加されている例が示されるが、ＥＣＣフレーム２０１〜２０Ｆは、他の誤り訂正符号のパリティデータをさらに含んでもよい。
【００１９】
図１のリードバッファ１０３は、メモリインタフェース１０２から受け取ったページデータを一時的に保持する。そして、リードバッファ１０３は、制御部１０４の指示に従って、保持しているページデータに含まれるＥＣＣフレームを第１誤り訂正部１０５又は第２誤り訂正部１０６に適切なタイミングで出力する。リードバッファ１０３では、ページデータは、そのページデータ内の全てのＥＣＣフレームの誤り訂正が完了するまでの間だけ保持される。或いは、リードバッファ１０３は、メモリインタフェース１０２から入力したページデータをＥＣＣフレームに分割して保持し、ＥＣＣフレームの誤り訂正が完了した後にそのＥＣＣフレームを消去してもよい。
【００２０】
制御部１０４は、不揮発性半導体記憶システム１００全体を制御している。例えば、制御部１０４は、リードバッファ１０３に空き容量があることを確認した後に、フラッシュメモリ１０１からページデータを読み出し、かつ、読み出したページデータをリードバッファ１０３に出力するようにメモリインタフェース１０２に指示する。また、制御部１０４は、リードバッファ１０３に格納されているページデータ内のＥＣＣフレームを第１誤り訂正部１０５又は第２誤り訂正部１０６に出力するように、リードバッファ１０３に指示する。さらに、制御部１０４は、以下に説明するように、第１誤り訂正部１０５による訂正が失敗したＥＣＣフレームに対して、第２誤り訂正部１０６で誤り訂正を行うように、誤り訂正装置１５０を制御する。
【００２１】
第１誤り訂正部１０５は、例えば２ビットのメッセージを使用する第１繰り返し復号アルゴリズムに従って、リードバッファ１０３から入力したＥＣＣフレームに対して誤り訂正を行う。第１誤り訂正部１０５の復号処理については、後に説明する。第１誤り訂正部１０５は、入力したＥＣＣフレームに対する誤り訂正を完了すると、訂正されたＥＣＣフレームからパリティデータを取り除き、ＥＣＣフレーム内の情報データをホストバス１０７に出力する。誤り訂正が完了すると、第１誤り訂正部１０５は、次のＥＣＣフレームをリードバッファ１０３から受け取り、新たに受け取ったＥＣＣフレームに対して誤り訂正を行う。
【００２２】
第２誤り訂正部１０６は、第１誤り訂正部１０５より量子化ビット数が多いメッセージを使用する第２繰り返し復号アルゴリズムに従って、リードバッファ１０３から入力したＥＣＣフレームに対して誤り訂正を行う。第２誤り訂正部１０６は、第１誤り訂正部１０５より量子化ビット数が多いメッセージを使用して誤り訂正を行うことから、第１誤り訂正部１０５より高い訂正能力を有する。しかしながら、第２誤り訂正部１０６は、第１誤り訂正部１０５より回路規模が大きく、即ち、電力消費が大きい。第２誤り訂正部１０６の復号処理については、後に説明する。
【００２３】
第２誤り訂正部１０６は、入力したＥＣＣフレームに対する誤り訂正を完了すると、訂正したＥＣＣフレームからパリティデータを取り除き、ＥＣＣフレーム内の情報データをホストバス１０７に出力する。
【００２４】
ホストバス１０７は、訂正された情報データを、第１誤り訂正部１０５又は第２誤り訂正部１０６から受け取り、一時的に保持する。ホストバス１０７が保持している情報データは、制御部１０４の指示に従って、適切なフォーマットに変換され、後段の信号処理部（図示せず）へ適切なタイミングで出力される。
【００２５】
このように、第１誤り訂正部１０５によりＥＣＣフレームに対する誤り訂正が完了した場合には、第２誤り訂正部１０６による誤り訂正を介することなく、訂正された情報データがホストバス１０７へ与えられる。従って、通常は第１誤り訂正部１０５で誤り訂正を行い、第１誤り訂正部１０５が誤り訂正に失敗した場合にのみ、第１誤り訂正部１０５と比較して回路規模が大きい、即ち、消費電力が大きい第２誤り訂正部１０６を使用することで、高い訂正能力を維持し、かつ、消費電流（即ち、消費電力）を低減することができる。
【００２６】
第１誤り訂正部１０５における復号処理を説明する。  
第１誤り訂正部１０５にＥＣＣフレームが入力されると、まず、パリティ検査が実行される。パリティ検査とは、ＥＣＣフレームである符号化ビット列Ｃに左からパリティ検査行列Ｈを乗算してデータ列を得て、得られたデータ列の要素に１を含むか否かを判定することを示す。以下では、パリティ検査で得られたデータ列をシンドロームと呼ぶ。パリティ検査では、全ての要素がゼロのシンドロームが得られる場合には、ＥＣＣフレーム内に誤りが存在しないことを示す。シンドロームの１以上の要素に１を含む場合には、誤りが存在することを示す。
【００２７】
第１誤り訂正部１０５は、例えば図３に示されるような、パリティ検査行列Ｈを予め保持している。このパリティ検査行列Ｈの各行をパリティ検査式と呼ぶ。図３の例では、パリティ検査行列は、３行７列であり、３つのパリティ検査式を有する。
【００２８】
パリティ検査によってＥＣＣフレーム内に誤りが存在すると判定された場合、次のように復号処理がなされる。  
第１誤り訂正部１０５は、所定の第１繰り返し復号アルゴリズムに従って、例えば、１ビットから２ビットといった少ない量子化ビット数のメッセージによる繰り返し復号アルゴリズムに従って、リードバッファ１０３から入力したＥＣＣフレームに対して誤り訂正を行う。
【００２９】
本実施の形態では、第１繰り返し復号アルゴリズムの一例として、２ビットメッセージによる繰り返し復号アルゴリズム（以下、２ビット復号アルゴリズムと呼ぶ。）を説明する。２ビット復号アルゴリズムでは、Ｍ行Ｎ列のパリティ検査行列Ｈに対応して、検査行列Ｈ中の要素が１である要素の数だけのメッセージ、例えば、下記数式２、９、１０及び１２に示されるメッセージの各々が使用される。このとき、ＥＣＣフレームは、Ｎビットの符号化ビット列である。下記数式２に示されるメッセージは、下記数式１のように、下記数式３で示される上位ビットと下記数式４で示される下位ビットとの集合として表わされる。ここで、添え字ｉは、行処理及び列処理を実行した回数（繰り返し回数）を示し、繰り返し回数毎に各メッセージが異なる値を持ち得ることを示している。また、ｍは、パリティ検査行列の行番号を表し、ｍ＝｛１,２,…,Ｍ｝であり、ｎは、パリティ検査行列の列番号を表し、ｎ＝｛１,２,…,Ｎ｝である。
【００３０】
【数１】
2011180911.tif 000003
【００３１】
【数２】
2011180911.tif 000004
【００３２】
第１誤り訂正部１０５に復号処理の対象となるＥＣＣフレームが入力されると、初めに、全てのメッセージは、下記数式５のように、計算される。即ち、下記数式６に示される初期メッセージの上位ビットにはＥＣＣフレーム中の第ｎビットの値（読み出し判定ビット値）ｂｎが割り当てられ、下位ビットには０が割り当てられる。下位ビットは、上位ビットの信頼度（確かさ）を示す。下位ビットが０の場合、上位ビットの信頼度が低いことを示し、下位ビットが１の場合、上位ビットの信頼度が高いことを示す。
【００３３】
【数３】
2011180911.tif 000005
【００３４】
【数４】
2011180911.tif 000006
【００３５】
ＬＤＰＣ符号を用いた復号処理では、パリティ検査行列Ｈに対して行方向の処理（行処理）を行った後、列方向の処理（列処理）を行い、これら行処理及び列処理を繰り返し行うことで復号が行われる。
【００３６】
２ビット復号アルゴリズムにおけるｉ回目の繰り返し処理（行処理及び列処理）を説明する。行処理は、上位ビット及び下位ビット毎に下記数式７及び８に従って行われ、数式９及び１０に示されるメッセージが求められる。以下の各数式では、全てのｍ又はｎに対して計算が実行される。例えば、数式７は、全てのｍ及びｎに関して実行され、検査行列Ｈにおいて１である各要素に対応するメッセージが求められる。
【００３７】
【数５】
2011180911.tif 000007
【００３８】
【数６】
2011180911.tif 000008
【００３９】
【数７】
2011180911.tif 000009
【００４０】
ここで、Ｎ（ｍ）は、パリティ検査行列Ｈの第ｍ行である第ｍパリティ検査式の成分が１である列番号の集合を表し、Ｎ(ｍ)＼ｎは、集合Ｎ（ｍ）のうちの第ｎ列を除いた列番号の部分集合を表す。図３に示されるパリティ検査行列Ｈの例では、Ｎ（２）＝｛１,３,４,６｝であり、Ｎ（２）＼３＝｛１,４,６｝である。
【００４１】
行処理は、上位ビット及び下位ビット毎に、ビット単位の演算で行われるため、数式５及び数式６は、夫々排他的論理和及び論理積によって容易に計算することができる。
【００４２】
行処理が完了した後に、列処理が実行される。列処理は、下記数式１１に従って行われ、下記数式１２に示されるメッセージが求められる。
【００４３】
【数８】
2011180911.tif 000010
【００４４】
【数９】
2011180911.tif 000011
【００４５】
ここで、Ｍ（ｎ）は、パリティ検査行列Ｈの第ｎ列において、その成分が１である行番号の集合を表し、Ｍ(ｎ)＼ｍは、集合Ｍ（ｎ）のうちの第ｍ行を除いた行番号の部分集合を表す。図３に示されるパリティ検査行列Ｈの例では、Ｍ（３）＝｛２,３｝であり、Ｍ（２）＼２＝｛３｝である。
【００４６】
また、ｗｉは、読み出し判定ビット値ｂｎに対する重みづけであり、繰り返し回数毎に変える場合、固定される場合に比べて復号特性を向上させることができる。例えば、重みｗｉは、ｉ＜５では２とし、ｉ≧５では１とすることで、固定的に２とした場合よりエラーフロア特性を向上させることができる。重みｗｉは、システムの要求性能を満たすように、実験的に定められる。
【００４７】
続いて、数式１２のメッセージを使用して、下記数式１５に示されるメッセージが下記数式１３及び１４に従って求められる。
【００４８】
【数１０】
2011180911.tif 000012
【００４９】
【数１１】
2011180911.tif 000013
【００５０】
【数１２】
2011180911.tif 000014
【００５１】
ＬＤＰＣ符号を用いた繰り返し復号処理では、行処理及び列処理を順に実行して得られた数式１５のメッセージを用いて行処理及び列処理を再び実行することで、メッセージが次々に更新される。
【００５２】
また、下記数式１６に示される復号ビットが下記数式１７及び１８に従って求められる。求められたＮ個の復号ビットは、ＥＣＣフレームに含まれる各ビットに対応する。このＮ個の復号ビットから、訂正されたＥＣＣフレームが生成される。１回の行処理及び列処理が終わるたびに、数式１６の復号ビットから生成されたＥＣＣフレームに対して、パリティ検査が実行される。
【００５３】
【数１３】
2011180911.tif 000015
【００５４】
【数１４】
2011180911.tif 000016
【００５５】
【数１５】
2011180911.tif 000017
【００５６】
行処理及び列処理は、パリティ検査を満たす、即ち、シンドロームの要素が全てゼロとなるか、或いは、予め設定された回数に到達するまで繰り返し実行される。即ち、ｉ回目の行処理及び列処理後に実行されるパリティ検査を満たさない場合、ｉ＋１回目の行処理及び列処理が実行される。予め設定された回数に到達するまで繰り返し実行されてもパリティ検査を満たさない場合、誤り訂正が失敗したと判定する。
【００５７】
なお、第１誤り訂正部１０５が実行する第１繰り返し復号アルゴリズムとしては、上述した２ビット復号アルゴリズムの例に限定されず、１ビットメッセージで復号を行うビットフリップ復号アルゴリズム、又はギャラガーアルゴリズムが使用されてもよい。
【００５８】
次に、第２誤り訂正部１０６における復号処理を説明する。  
第２誤り訂正部１０６は、第１誤り訂正部１０５が訂正することができなかったＥＣＣフレームに対し、第１誤り訂正部１０５より多くの量子化ビット数を持つメッセージによる第２繰り返し復号アルゴリズムによる誤り訂正処理を行う。第２誤り訂正部１０６は、第１誤り訂正部１０５と同じパリティ検査行列Ｈを予め保持している。
【００５９】
ここでは、第２誤り訂正部１０６が実行する第２繰り返し復号アルゴリズムの一例として、Ｍｉｎ−Ｓｕｍアルゴリズムによる繰り返し復号アルゴリズム（以下、Ｍｉｎ−Ｓｕｍアルゴリズムと呼ぶ。）を説明する。Ｍｉｎ−Ｓｕｍアルゴリズムでは、通常３ビット以上のメッセージを使用して繰り返し復号が行われる。初期メッセージとなる対数尤度比（ＬＬＲ：log likelihood ratio）は、下記数式１９により、ＥＣＣフレーム内の各ビットに応じて求められる。即ち、ＬＬＲは、ＥＣＣフレーム内のｎ番目の読み出し判定ビットが０である確率Ｐｒ（ｂｎ＝０）と、ＥＣＣフレーム内のｎ番目の読み出し判定ビットが１である確率Ｐｒ（ｂｎ＝１）との比の対数値として求められる。
【００６０】
【数１６】
2011180911.tif 000018
【００６１】
ここで、ｌｎは、底がネイピア数である自然対数関数を示す。本実施の形態においては、第２の誤り訂正部１０６には、ＥＣＣフレームに含まれるビット毎に、１ビットのデータ（即ち、０又は１）が入力される。データ“０”が入力された場合の確率Ｐｒ（ｂｎ＝０）の値、及びデータ“１”が入力された場合のＰｒ（ｂｎ＝１）の値は、予め設定される。
【００６２】
Ｍｉｎ−Ｓｕｍアルゴリズムにおけるｉ回目の行処理及び列処理を説明する。繰り返し処理では、初めに行処理が実行される。第２誤り訂正部１０６の行処理は、下記数式２０により実行される。
【００６３】
【数１７】
2011180911.tif 000019
【００６４】
ここで、ｓｉｇｎ（ｚｍｎ´）は、ｚｍｎ´の符号（「＋１」又は「−１」）を取り出す関数であり、ｍｉｎ（ｚｍｎ´）は、Ｎ（ｍ）＼ｎで特定される列番号の部分集合の中から最小の|ｚｍｎ´|を選択して、その値を取り出す関数である。
【００６５】
行処理が完了した後に列処理が実行される。行処理では、メッセージは、下記数式２１により求められる。
【００６６】
【数１８】
2011180911.tif 000020
【００６７】
また、第２誤り訂正部１０６は、数式１７及び下記数式２２に従って、数式１６に示される復号ビットを求める。続いて、ｉ回目の行処理及び列処理で得られた復号ビットからＥＣＣフレームが生成され、生成されたＥＣＣフレームに対して、パリティ検査が実行される。パリティ検査でＥＣＣフレームに誤りが存在しないと判定されると、復号処理が完了したと判断され、ＥＣＣフレームの情報データ部分がホストバス１０７へ出力される。パリティ検査でＥＣＣフレームに誤りが存在すると判定されると、ｉ＋１回目の行処理及び列処理が実行される。
【００６８】
【数１９】
2011180911.tif 000021
【００６９】
なお、第２誤り訂正部１０６が実行する復号アルゴリズムは、上述したＭｉｎ−Ｓｕｍアルゴリズムに限定されず、第１誤り訂正部１０５で使用されるメッセージの量子化ビット数よりビット数が多いメッセージを使用する復号アルゴリズムであればよく、行処理で得られたメッセージに係数をかける改良Ｍｉｎ−Ｓｕｍアルゴリズム、又は正確に確率計算を行うＳｕｍ−Ｐｒｏｄｕｃｔアルゴリズム等が使用されてもよい。
【００７０】
再び図１を参照して、誤り訂正装置１５０がＥＣＣフレームに対して誤り訂正を行う動作の一例を説明する。  
まず、複数のＥＣＣフレームを含むページデータは、制御部の指示に従って、メモリインタフェース１０２によってフラッシュメモリ１０２から読み出される。メモリインタフェース１０２によってフラッシュメモリ１０１から読み出されたページデータは、リードバッファ１０３へ出力され、このリードバッファ１０３に格納される。リードバッファ１０３に格納されているＥＣＣフレームは、制御部１０４によって通知されたタイミングで第１誤り訂正部１０５に出力される。
【００７１】
第１誤り訂正部１０５では、ＥＣＣフレームは、上述したような復号アルゴリズムに従って訂正される。ＥＣＣフレームが訂正されると、第１誤り訂正部１０５によってＥＣＣフレームからパリティデータが取り除かれ、ＥＣＣフレーム内の情報データがホストバス１０７へ出力される。この際、第１誤り訂正部１０５は、入力したＥＣＣフレームに対する誤り訂正が完了したことを制御部１０４に通知する。制御部１０４は、第１誤り訂正部１０５から誤り訂正が完了したことを通知されることによって、第１誤り訂正部１０５が処理待ち状態であることを認識する。第１誤り訂正部１０５が処理待ち状態であることを認識すると、制御部１０４は、次のＥＣＣフレームを第１誤り訂正部１０５に出力するようにリードバッファ１０３に指示する。さらに、制御部１０４は、誤り訂正が完了したＥＣＣフレームに対応するＥＣＣフレームを破棄するようにリードバッファ１０３に指示する。
【００７２】
入力したＥＣＣフレームに対する誤り訂正が失敗した場合、第１誤り訂正部１０５は、このＥＣＣフレームを破棄し、誤り訂正が失敗したことを制御部１０４に通知する。制御部１０４は、ＥＣＣフレームに対する誤り訂正が失敗したことを通知されると、それに対応するＥＣＣフレームを第２誤り訂正部１０６に出力するように、かつ、次のＥＣＣフレームを第１誤り訂正部１０５に出力するようにリードバッファ１０３に指示する。
【００７３】
第１誤り訂正部１０５が訂正に失敗した場合、第１誤り訂正部１０５は、誤り訂正が失敗したことを制御部１０４に通知する。第１誤り訂正部１０５で訂正に失敗したＥＣＣフレームに対応するＥＣＣフレームは、リードバッファ１０３から第２誤り訂正部１０６に送られ、第２誤り訂正部１０６によって、上述したような所定の第２繰り返し復号アルゴリズムに従って訂正される。ＥＣＣフレームが訂正されると、第２誤り訂正部１０６によってＥＣＣフレームからパリティデータが取り除かれ、ＥＣＣフレーム内の情報データがホストバス１０７に出力される。この際、第２誤り訂正部１０６は、入力したＥＣＣフレームに対する誤り訂正が完了したことを制御部１０４に通知する。
【００７４】
制御部１０４は、誤り訂正が完了したことを通知されると、誤り訂正が完了したＥＣＣフレームに対応するＥＣＣフレームを破棄するようにリードバッファ１０３に指示する。また、制御部１０４は、第２誤り訂正部１０６によって誤り訂正が完了したことを通知されることで、第２誤り訂正部１０６が処理待ち状態であることを認識する。
【００７５】
ホストバス１０７に保持されている復号された情報データは、制御部１０４の指示に従って、後段の信号処理部のタイミングに合わせて出力される。
【００７６】
以上のように、第１の実施の形態に係る不揮発性半導体記憶システム１００においては、異なる量子化ビット数のメッセージを使用して復号する複数の誤り訂正部１０５、１０６を備え、第１誤り訂正部１０５による訂正が失敗したＥＣＣフレームを、第１誤り訂正部１０５より量子化ビット数が多いメッセージを使用する第２誤り訂正部１０６が復号することで、量子化ビット数が多い復号アルゴリズムの訂正能力を維持しながら、訂正処理に必要な平均消費電力を低減することができる。
【００７７】
なお、本実施の形態では、第１誤り訂正部１０５と第２誤り訂正部１０６とを別個の構成として説明したが、第１誤り訂正部１０５及び第２誤り訂正部１０６で使用されるメッセージの記憶に必要な回路を共有してもよい。この場合、第１誤り訂正部１０５で使用されるメッセージが第２誤り訂正部１０６で使用されるメッセージよりもビット数が少ないことを利用して、第１誤り訂正部１０５で使用されるメッセージは、第２誤り訂正部１０６で使用されるメッセージの下位又は上位ビットで表現される。
【００７８】
第１の誤り訂正部１０５による訂正が失敗したＥＣＣフレームは、次回の読み出し時にも、第１の誤り訂正部１０５による訂正が失敗し、第２誤り訂正部１０６において訂正されることになる。そのため、第１の誤り訂正部１０５による訂正処理が失敗したＥＣＣフレームに関連するページデータ及びフレーム番号を制御部１０４で記憶しておき、制御部１０４は、そのＥＣＣフレームの２回目以降の読み出し時には、第１誤り訂正部１０５に入力することなしに、初めからそのＥＣＣフレームを第２誤り訂正部１０６に入力するようにリードバッファ１０３を制御してもよい。このように、第１の誤り訂正部１０５による訂正が失敗したＥＣＣフレームに対しては、次回から第１誤り訂正部１０５を経ることなく第２誤り訂正部１０６で誤り訂正を行うで、効率よく誤り訂正を行うことができる。
【００７９】
また、フラッシュメモリ１０１では、ブロック又はプレーン内で不良に偏りが生じる傾向があり、同一ブロック内で共通のフレーム番号に誤りが集中する場合がある。そのため、ブロック内のページデータをシーケンシャルに読み出す際には、ページデータ内のあるＥＣＣフレームに対して第１誤り訂正１０５による誤り訂正が失敗した場合、続くページデータ内の対応するＥＣＣフレームは、第１誤り訂正部１０５で誤り訂正を行わずに、第２誤り訂正部１０６で誤り訂正を行うように制御してもよい。このような制御によって、効率よく訂正処理を行うことができる。例えば、図４に示されるように、同一ブロック内のページデータ４００〜４Ｗ０を連続して読み出す場合を想定する。図４の例では、初めに入力されたページデータ４００内の一番目のＥＣＣフレーム４０１に対して第１誤り訂正部１０５による誤り訂正が失敗した場合、続くページデータ４１０〜４Ｗ０内の初めのＥＣＣフレーム４１１〜４Ｗ１においては、第１誤り訂正部１０５で誤り訂正を行わずに、初めから第２誤り訂正部１０６で誤り訂正を行う。
【００８０】
（第２の実施の形態）  
次に、図５を参照して、第２の実施の形態に係る不揮発性半導体記憶システムを説明する。  
図５は、第２の実施の形態に係る不揮発性半導体記憶システム５００の構成を概略的に示している。図５において、図１に示した符号と同様の符号を同一部分、同一箇所に付してその説明を省略する。第２の実施の形態に係る誤り訂正装置５５０には、第１の実施の形態の誤り訂正装置１５０と異なり、複数の第１誤り訂正部５０５Ａ、５０５Ｂ、５０５Ｃが並列に設けられている。図５に示される第１誤り訂正部５０５Ａ、５０５Ｂ、５０５Ｃは、各々、図１に示される第１誤り訂正部１０５と同等のものであり、第１誤り訂正部１０５と同様に動作する。図５には、３つの第１誤り訂正部５０５Ａ、５０５Ｂ、５０５Ｃ、及び１つの第２誤り訂正部１０６が設けられる例が示されているが、これに限定されず、第２誤り訂正部の数が第１誤り訂正部の数以下であればよく、第１及び第２誤り訂正部の数は、システムに要求される仕様に応じて任意に決めることができる。
【００８１】
複数の第１誤り訂正部５０５Ａ、５０５Ｂ、５０５Ｃを備える第２の実施の形態では、制御部１０４は、処理待ちとなっている第１誤り訂正部５０５Ａ、５０５Ｂ、５０５ＣのいずれかにＥＣＣフレームを送信するようにリードバッファ１０３に次々に指示する。従って、第２の実施の形態では、複数のＥＣＣフレームは、第１誤り訂正部５０５Ａ、５０５Ｂ、５０５Ｃによって並列に誤り訂正を行われる。第１誤り訂正部５０５Ａ、５０５Ｂ、５０５Ｃによる訂正に失敗したＥＣＣフレームは、第１の実施の形態と同様の手続きで、第２の誤り訂正部１０５によって誤り訂正を行われる。
【００８２】
高速にデータを読み出すことが求められる不揮発性半導体記憶システムでは、一般に、誤り訂正部及びフラッシュメモリを並列化することで高速性を実現している。このような不揮発性半導体記憶システムでは、回路規模が増大され、その結果、消費電力が増大される。本実施の形態に係る不揮発性半導体記憶システム５００では、回路規模が小さく、かつ、使用頻度が多い第１誤り訂正部５０５Ａ、５０５Ｂ、５０５Ｃを、回路規模が大きく、かつ、使用頻度が少ない第２誤り訂正部１０６より多く備えることで、高い訂正能力を維持したまま、ＥＣＣフレームを訂正するのに必要な平均消費電力を低減することができる。
【００８３】
（第３の実施の形態）  
図６は、第３の実施の形態に係る不揮発性半導体記憶システム６００の構成を概略的に示している。図６において、図１及び図５に示した符号と同様の符号を同一部分、同一箇所に付してその説明を省略する。
【００８４】
不揮発性半導体記憶システム６００は、図６に示されるように、第１リードバッファ１０３、制御部１０４、第１誤り訂正部５０５Ａ、５０５Ｂ、５０５Ｃ、第２リードバッファ６０８、尤度変換部６０９、及び第３誤り訂正部６１０を含む誤り訂正装置６５０を備える。第３の実施の形態では、第１及び第２の実施の形態で示された第２誤り訂正部１０６に代えて、第３繰り返し復号アルゴリズムに従って誤り訂正を行う第３誤り訂正部６１０が設けられている。第３繰り返し復号アルゴリズムでは、メモリセルから取得される軟判定値（ソフトビット）が使用される。ここで、軟判定値は、以下に説明されるように、ＥＣＣフレームに含まれる各ビットに対応するメモリセルの閾値電圧を詳細に判定して得られるデータビットである。
【００８５】
フラッシュメモリ１０１においては、１つのメモリセルが保持することができるデータのビット数がｐである場合、即ち、２ｐ個の判定閾値電圧レベルが設定されている場合、２ｐ−１回閾値電圧Ｖｔｈを判定することで、メモリセルが保持しているデータを読み出すことができる。このように、１つのメモリセルに記憶されているｐビットのデータを取り出すために、２ｐ−１回閾値電圧Ｖｔｈの判定を行うことを硬判定と呼ぶ。また、２ｐ回以上の閾値電圧Ｖｔｈの判定を行い、メモリセルの詳細な閾値電圧を取得することを軟判定と呼ぶ。さらに、メモリセルが保持しているｐビットのデータ、即ち、硬判定で読み出されたビットを、ハードビット（ＨＢ）又は硬判定値と呼び、軟判定で読み出されたビットをソフトビット（ＳＢ）又は軟判定値と呼ぶ。軟判定値は、硬判定値の信頼度を示し得るものとして使用される。本実施の形態では、ＥＣＣフレームを読み出すことは、硬判定値を読み出すことを示す。軟判定値を判定するための判定閾値電圧レベルは、硬判定値を判定するための判定閾値電圧レベルよりも細分化して設定される。
【００８６】
図７にメモリセルが１ビットのデータを保持することができる場合の閾値電圧分布の一例を示す。図７に示される例では、メモリセルは、その閾値電圧ＶｔｈがＶＢ未満である場合データ“１”を保持し、その閾値電圧ＶｔｈがＶＢを超える場合データ“０”を保持している。硬判定では、閾値電圧ＶｔｈがＶＢ未満か否かが判定され、メモリセルが保持しているデータ（“１”又は“０”）が硬判定値として読み出される。また硬判定の後に軟判定を行うことで、メモリセルがデータ“１”を保持している場合、閾値電圧がＶＡ未満であるか、或いは、ＶＡより大きくＶＢ未満であるかが判定される。閾値電圧がＶＡ未満である場合、データ“１”が軟判定値として取得され、閾値電圧がＶＡより大きくＶＢ未満である場合、データ“０”が軟判定値として取得される。メモリセルがデータ“０”を保持している場合、閾値電圧がＶＢより大きくＶＣ未満であるであるか、或いは、ＶＣより大きいかが判定される。閾値電圧がＶＢより大きくＶＣ未満である場合、データ“０”が軟判定値として取得され、閾値電圧がＶＣより大きい場合、データ“１”が軟判定値として取得される。図７の例では、軟判定値が１の場合、硬判定値の確信度が高く、軟判定値が０の場合、硬判定値の確信度が低いことを示す。
【００８７】
１つのメモリセルに記憶されるビット数が大きい場合、判定閾値電圧レベルの幅が相対的に小さくされるため、メモリセルへのデータ書き込みの際、及びメモリセルからのデータ読み出しの際に、誤りの発生率が増大される。本実施の形態では、軟判定値をメモリセルから読み出したビットの信頼度を示すＬＬＲの計算に使用することで、ＥＣＣフレームに発生した誤りを高精度に訂正することができる。
【００８８】
本実施の形態では、第１誤り訂正部５０５Ａ、５０５Ｂ又は５０５ＣがＥＣＣフレームの誤り訂正に失敗した場合、メモリインタフェース１０２は、制御部１０４の指示に従って、このＥＣＣフレームに含まれるビット毎に対応する軟判定値をメモリセルから読み出す。メモリインタフェース１０２によって読み出された軟判定値は、第２リードバッファ６０８に出力され、第２リードバッファ６０８に一時的に格納される。第２リードバッファ６０８に格納されている軟判定値は、制御部１０４の指示に従って、尤度変換部６０９に出力される。また、第１誤り訂正部５０５Ａ、５０５Ｂ又は５０５Ｃが誤り訂正に失敗したＥＣＣフレームに対応する第１リードバッファ１０３内のＥＣＣフレームは、制御部１０４の指示に従って、尤度変換部６０９へ出力される。従って、尤度変換部６０９は、ＥＣＣフレームを第１リードバッファ１０３から受け取るとともに、このＥＣＣフレームに関連する軟判定値を第２リードバッファ６０８から受け取る。
【００８９】
なお、図６の例では、軟判定値のみを第２リードバッファ６０８に格納し、第１リードバッファ１０３に格納されている硬判定値と合わせて尤度変換部に用いる構成について述べたが、これに限定されず、軟判定値取得時に硬判定を再び行い、軟判定データを硬判定データとともに第２リードバッファ６０８へ格納し、尤度変換部６０９は、第１リードバッファ１０３からの入力はなしに、第２リードバッファ６０８から硬判定値及び軟判定値を受け取る構成としてもよい。
【００９０】
尤度変換部６０９は、受信したＥＣＣフレーム及びこのＥＣＣフレームに関連する軟判定値を対数尤度比（ＬＬＲ）に変換する。例えば、尤度変換部６０９は、受信したＥＣＣフレーム及びこのＥＣＣフレームに関連する軟判定値から、数式１９を使用して、ＥＣＣフレームの各ビットに対応するＬＬＲを求める。尤度変換部６０９で算出されたＬＬＲは、第３誤り訂正部６１０へ出力される。第３誤り訂正部６１０は、第１誤り訂正部５０５Ａ、５０５Ｂ、５０５Ｃより量子化ビット数が多いメッセージを使用する復号アルゴリズムに従って、ＥＣＣフレームに対して誤り訂正を行う。例えば、図６の第３誤り訂正部６１０は、図１の第２誤り訂正部１０６に関連して上述したような第２繰り返し復号アルゴリズムに従って誤り訂正を行う。ただし、図６の第３誤り訂正部６１０では、尤度変換部６０９から受け取ったＬＬＲを初期メッセージとして使用することから、数式１９に示されるＬＬＲの計算が省略される。
【００９１】
なお、図６には、３つの第１誤り訂正部５０５Ａ、５０５Ｂ、５０５Ｃ、及び１つの第３誤り訂正部６１０が設けられる例が示されているが、これに限定されず、第３誤り訂正部の数が第１誤り訂正部の数以下であればよく、第１及び第３誤り訂正部の数は、システムに要求される仕様に応じて任意に決めることができる。
【００９２】
図８は、誤り訂正装置６５０がＥＣＣフレームに対して誤り訂正を行う動作の一例を概略的に示している。図８のステップＳ８０１では、１以上のＥＣＣフレームを含むページデータは、メモリインタフェース１０２によってフラッシュメモリ１０１から読み出される。このとき、メモリインタフェース１０２は、メモリセルに記憶されているＥＣＣフレームを硬判定によって読み出し、ページデータを取得する。
【００９３】
ステップＳ８０２では、メモリインタフェース１０２によって読み出されたＥＣＣフレームは、制御部１０４の指示に従って、第１誤り訂正部５０５Ａ、５０５Ｂ又は５０５Ｃに送られ、第１誤り訂正部５０５Ａ、５０５Ｂ又は５０５Ｃによってパリティ検査が実行され、ＥＣＣフレームが誤りを含む場合に誤りが訂正される。ステップＳ８０３では、第１誤り訂正部５０５Ａ、５０５Ｂ、又は５０５Ｃによる誤り訂正が完了したか否かが判定される。第１誤り訂正部５０５Ａ、５０５Ｂ、又は５０５Ｃによる誤り訂正が成功した場合、ステップＳ８０４に進み、ステップＳ８０４では、第１誤り訂正部５０５Ａ、５０５Ｂ又は５０５Ｃによって、ＥＣＣフレーム内のパリティデータが取り除かれ、ＥＣＣフレーム内の情報データがホストバス１０７に出力される。また、第１誤り訂正部５０５Ａ、５０５Ｂ又は５０５Ｃは、入力したＥＣＣフレームに対する誤り訂正が完了したことを制御部１０４に通知する。訂正された情報データがホストバス１０７に出力されると、復号処理が終了となる。
【００９４】
ステップＳ８０３で第１誤り訂正部５０５Ａ、５０５Ｂ、又は５０５Ｃによる誤り訂正が失敗した場合、ステップＳ８０５に進み、ステップＳ８０５において、メモリインタフェース１０２によって、ＥＣＣフレームを保持しているメモリセルからソフトビットが読み出される。ステップＳ８０６では、誤り訂正に失敗したＥＣＣフレーム及びソフトビットからＬＬＲが尤度変換部６０９によって算出される。
【００９５】
ステップＳ８０７では、第３誤り訂正部６１０は、ステップＳ８０６で算出されたＬＬＲを使用して、ＥＣＣフレームに対して誤り訂正を行う。ＥＣＣフレームが訂正されると、ステップＳ８０８において、第３誤り訂正部６１０によって、ＥＣＣフレーム内のパリティデータが取り除かれ、ＥＣＣフレーム内の情報データがホストバス１０７に出力される。また、第３誤り訂正部６１０は、入力したＥＣＣフレームに対する誤り訂正が完了したことを制御部１０４に通知する。制御部１０４は、誤り訂正が完了したＥＣＣフレームに対応するＥＣＣフレームに関連するデータを破棄するように、第１リードバッファ１０３、第２リードバッファ６０８及び尤度変換部６０９に指示する。訂正された情報データがホストバス１０７に出力されると、復号処理が終了となる。
【００９６】
以上のように、第３の実施の形態に係る不揮発性半導体記憶システム６００においては、ＬＤＰＣ符号とともに、フラッシュメモリ１０１のメモリセルから取得した軟判定値を使用して誤り訂正を行うことで、ＥＣＣフレームに生じた誤りをより精度良く訂正することができる。
【００９７】
なお、第１誤り訂正部５０５Ａ、５０５Ｂ又は５０５ＣがＥＣＣフレームに対してパリティ検査を実行した際に、シンドロームに含まれる“１”の数（シンドローム重みと呼ぶ。）が所定数より大きい場合、制御部１０４は、第１誤り訂正部５０５Ａ、５０５Ｂ又は５０５Ｃで誤り訂正を行わずに、第３誤り訂正部６１０で誤り訂正を行うように、誤り訂正装置６５０を制御してもよい。
【００９８】
（第４の実施の形態）  
図９は、第４の実施の形態に係る不揮発性半導体記憶システム９００の構成を概略的に示している。図９において、図１、図５及び図６に示した符号と同様の符号を同一部分、同一箇所に付してその説明を省略する。図９に示される誤り訂正装置９５０は、図６に示される誤り訂正装置６５０に、図１及び図５に示される第２誤り訂正部１０６がさらに追加されている。
【００９９】
誤り訂正装置９５０において、第２誤り訂正部１０６は、第１誤り訂正部５０５Ａ、５０５Ｂ、５０５Ｃが復号処理に使用するメッセージの量子化ビット数より量子化ビット数が多いメッセージを使用する復号アルゴリズムに従って誤り訂正を行う。また、第３誤り訂正部６１０は、軟判定値を用いて、第２誤り訂正部１０６が復号処理に使用するメッセージと同じ量子化ビット数のメッセージ、或いは、第２誤り訂正部１０６が復号処理に使用するメッセージより量子化ビット数が多いメッセージを使用する復号アルゴリズムに従って誤り訂正を行う。図６には、３つの第１誤り訂正部５０５Ａ、５０５Ｂ、５０５Ｃ、１つの第２誤り訂正部１０６、及び１つの第３誤り訂正部６１０が設けられる例が示されているが、これに限定されず、第２誤り訂正部の数が第１誤り訂正部の数以下であり、第３誤り訂正部の数が第２誤り訂正部の数以下であればよく、第１、第２及び第３誤り訂正部の数は、システムに要求される仕様に応じて任意に決めることができる。
【０１００】
図１０は、誤り訂正装置９５０がＥＣＣフレームに対して誤り訂正を行う動作の一例を概略的に示している。図１０において、図８に示した符号と同一の符号を付した部分は同様の動作を行うものとして、重複する説明を省略する。
【０１０１】
図１０のステップＳ８０３において第１誤り訂正部５０５Ａ、５０５Ｂ、又は５０５Ｃによる誤り訂正が失敗した場合、ステップＳ１００９に進む。ステップＳ１００９では、第１誤り訂正部５０５Ａ、５０５Ｂ、又は５０５Ｃによる誤り訂正が失敗したＥＣＣフレームに対応するＥＣＣフレームが第１リードバッファから第２誤り訂正部１０６に入力され、入力されたＥＣＣフレームが第２誤り訂正部１０６によって誤りを訂正される。
【０１０２】
ステップＳ１０１０では、第２誤り訂正部１０６による誤り訂正が完了したか否かが判定される。第２誤り訂正部１０６による誤り訂正が成功した場合、ステップＳ１０１１に進み、ステップＳ１０１１では、第２誤り訂正部１０６によって、ＥＣＣフレーム中のパリティデータが取り除かれ、ＥＣＣフレーム中の情報データがホストバス１０７に出力される。また、第２誤り訂正部１０６は、入力したＥＣＣフレームに対する誤り訂正が完了したことを制御部１０４に通知する。訂正された情報データがホストバス１０７に出力されると、復号処理が終了となる。
【０１０３】
ステップＳ１０１０で第２誤り訂正部１０６による誤り訂正が失敗した場合、ステップＳ８０５に進む。ステップＳ８０５以降のステップは、図８を参照して上述した動作と同じため説明を省略する。
【０１０４】
なお、第４の実施の形態では、制御部１０４は、シンドローム重みを使用して、ＥＣＣフレームに対して誤り訂正を行う誤り訂正部を選択してもよい。図１１を参照して、シンドローム重みを使用した誤り訂正動作の一例を説明する。
【０１０５】
図１１は、誤り訂正装置９５０がＥＣＣフレームに対して誤り訂正を行う動作の他の例を概略的に示している。図１１のステップＳ１１０１では、ＥＣＣフレームが第１誤り訂正部５０５Ａ、５０５Ｂ又は５０５Ｃに入力され、第１誤り訂正部５０５Ａ、５０５Ｂ又は５０５Ｃは、入力したＥＣＣフレームに対してパリティ検査を実行して、シンドローム重みを算出する。ステップＳ１１０１では、第１誤り訂正部５０５Ａ、５０５Ｂ又は５０５Ｃは、算出したシンドローム重みがゼロか否かを判断する。算出されたシンドローム重みがゼロである場合、ＥＣＣフレームが誤りを含まない判定され、ステップＳ１１１０において復号処理が終了となる。
【０１０６】
ステップＳ１１０２で算出されたシンドローム重みがゼロでなかった場合、ＥＣＣフレームが誤りを含むと判定され、ステップＳ１１０３に進み、ステップＳ１１０３において、第１誤り訂正部５０５Ａ、５０５Ｂ又は５０５Ｃは、このシンドローム重みが予め設定される第１閾値ｗｔ１より小さいか否かを判断する。シンドローム重みが第１閾値ｗｔ１より小さい場合、ステップＳ１１０４に進み、ステップＳ１１０４において、第１誤り訂正部５０５Ａ、５０５Ｂ又は５０５Ｃは、入力したＥＣＣフレームに対して誤り訂正を行う。ステップＳ１１０５では、第１誤り訂正部５０５Ａ、５０５Ｂ又は５０５Ｃは、パリティ検査によってＥＣＣフレームの誤り訂正が完了したか否かを判断する。誤り訂正が完了した場合、ステップＳ１１１０において復号処理が終了となる。
【０１０７】
ステップＳ１１０５で第１誤り訂正部５０５Ａ、５０５Ｂ又は５０５Ｃが予め設定される回数訂正処理を繰り返しても誤りを訂正することができない場合、即ち、誤り訂正に失敗した場合、ステップＳ１１０６に進む。ステップＳ１１０６において、ＥＣＣフレームが第２誤り訂正部１０６に入力され、第２誤り訂正部１０６は、入力したＥＣＣフレームに対して誤り訂正を行う。ステップＳ１１０７では、第２誤り訂正部１０６は、パリティ検査によってＥＣＣフレームの誤り訂正が完了したか否かを判断する。誤り訂正が完了した場合、ステップＳ１１１０において復号処理が終了となる。
【０１０８】
ステップＳ１１０７で第２誤り訂正部１０６が誤り訂正に失敗した場合、誤り訂正に失敗したＥＣＣフレームに関連する軟判定値がフラッシュメモリ１０１から読み出され、尤度変換部６０９においてＬＬＲが算出され、ステップＳ１１０９に進む。ステップＳ１１０９において、尤度変換部６０９で算出されたＬＬＲが第３誤り訂正部６１０に入力され、第３誤り訂正部６１０は、入力したＬＬＲを使用して、入力したＥＣＣフレームに対して誤り訂正を行い、ステップＳ１１１０において復号処理が終了となる。
【０１０９】
ステップＳ１１０３でシンドローム重みが第１閾値ｗｔ１以上であった場合、ステップＳ１１０８に進み、ステップＳ１１０８において、第１誤り訂正部５０５Ａ、５０５Ｂ又は５０５Ｃは、算出したシンドローム重みが予め設定される第２閾値ｗｔ２より小さいか否かを判断する。シンドローム重みが第２閾値ｗｔ２より小さい場合、ステップＳ１１０６に進み、ＥＣＣフレームが第２誤り訂正部１０６により訂正される。また、シンドローム重みが第２閾値ｗｔ２以上である場合、ステップＳ１１０９に進み、ＥＣＣフレームが第３誤り訂正部６１０により訂正される。
【０１１０】
このように、図１１に示される手順では、パリティ検査によりシンドローム重みが算出され、シンドローム重みが第１閾値ｗｔ１より小さい場合には、第１誤り訂正部５０５Ａ、５０５Ｂ又は５０５Ｃで誤り訂正を行い、シンドローム重みが第１閾値ｗｔ１以上かつ第２閾値ｗｔ２より小さい場合には、第２誤り訂正部１０６で誤り訂正を行い、シンドローム重みが第２閾値ｗｔ２以上である場合、第３誤り訂正部６１０で誤り訂正を行う。シンドローム重みに応じて使用する誤り訂正部を選択することで、効率よく復号処理を行うことができる。
【０１１１】
なお、ステップＳ１１０１において、第１誤り訂正部５０５Ａ、５０５Ｂ又は５０５Ｃに代えて、制御部１０４が、第１リードバッファ１０３に格納されているＥＣＣフレームに対してパリティ検査を行って、シンドローム重みを算出してもよい。
【０１１２】
以上のように、第４の実施の形態不揮発性半導体記憶システム９００においては、回路規模が小さく、かつ、使用頻度が多い第１誤り訂正部を、回路規模が大きく、かつ、使用頻度が少ない第２及び第３誤り訂正部と同じ又はそれより多く備えることで、高い訂正能力を維持しながら、ＥＣＣフレームを訂正するのに必要な平均消費電力を低減し、データを高速に読み出すことができる。
【０１１３】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【０１１４】
１０１…フラッシュメモリ、１０２…メモリインタフェース、１０３…リードバッファ、１０４…制御部、１０５,５０５Ａ,５０５Ｂ,５０５Ｃ…第１誤り訂正部、１０６…第２誤り訂正部、１０７…データバス、６０８…第２リードバッファ、６０９…尤度変換部、６１０…第３誤り訂正部。
【図１】
2011180911.tif 000022
【図２】
2011180911.tif 000023
【図３】
2011180911.tif 000024
【図４】
2011180911.tif 000025
【図５】
2011180911.tif 000026
【図６】
2011180911.tif 000027
【図７】
2011180911.tif 000028
【図８】
2011180911.tif 000029
【図９】
2011180911.tif 000030
【図１０】
2011180911.tif 000031
【図１１】
2011180911.tif 000032