(57)【特許請求の範囲】
【請求項１】
記憶部から読み出されたデータに対してエラー訂正を行い、該エラー訂正によりエラーが訂正できなかった場合に、該データに含まれるエラー数を出力するエラー訂正部と、
前記記憶部の第１のアドレスから複数の読み出し条件それぞれに従いデータを読み出し、読み出した該複数の読み出し条件それぞれに対応する各データに対して前記エラー訂正を行った結果の各エラー数のうち最も少ないエラー数に対応する読み出し条件を該複数の読み出し条件から選択し、選択した該読み出し条件により前記第１のアドレスからの複数回の読み出しを行う読み出し制御部と、
前記複数回の読み出しにより得られた複数のデータ間で多数決処理を行う多数決処理部と
を備える半導体装置。
【請求項２】
前記読み出し制御部は、
前記複数の読み出し条件のうち第１の読み出し条件で前記第１のアドレスから読み出したデータのエラーが前記エラー訂正により訂正できず、前記複数の読み出し条件のうち第２の読み出し条件で前記第１のアドレスから読み出した該データのエラーが前記エラー訂正により訂正できた場合に、該第１の読み出し条件を該第２の読み出し条件で更新し、更新された該第１の読み出し条件により前記複数回の読み出しを行う
請求項１に記載の半導体装置。
【請求項３】
前記読み出し制御部は、
前記複数の読み出し条件それぞれにより前記第１のアドレスから読み出された全てのデータのエラーが前記エラー訂正により訂正できなかった場合に、該エラー訂正を行った結果の各エラー数のうち最も少ないエラー数に対応する読み出し条件で第１の読み出し条件を更新し、更新された該第１の読み出し条件により前記複数回の読み出しを行う
請求項１または請求項２に記載の半導体装置。
【請求項４】
前記多数決処理部は、
前記複数のデータそれぞれのビット列においてビット位置が互いに対応するビット間で前記多数決処理を行い、
前記エラー訂正部は、
前記多数決処理の結果得られたデータに対してさらにエラー訂正を行う
請求項１乃至請求項３の何れか１項に記載の半導体装置。
【請求項５】
記憶部から読み出されたデータに対してエラー訂正を行い、該エラー訂正によりエラーが訂正できなかった場合に、該データに含まれるエラー数を出力するエラー訂正ステップと、
前記記憶部の第１のアドレスから複数の読み出し条件それぞれに従いデータを読み出し、読み出した該複数の読み出し条件それぞれに対応する各データに対して前記エラー訂正を行った結果の各エラー数のうち最も少ないエラー数に対応する読み出し条件を該複数の読み出し条件から選択し、選択した該読み出し条件により前記第１のアドレスからの複数回の読み出しを行う読み出し制御ステップと、
前記複数回の読み出しにより得られた複数のデータ間で多数決処理を行う多数決処理ステップと
を備える読み出し方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、半導体装置および読み出し方法に関する。
【背景技術】
【０００２】
例えばＮＡＮＤフラッシュメモリチップといった不揮発性半導体メモリは、チップ内に多数のメモリセルを備え、情報を電荷量に置き換えて、これらのメモリセルに対してデータの記録を行っている。メモリセルは、浮遊ゲートに蓄えられる電荷の量に応じて電圧が変化し、この電圧の違いに応じたデータを記憶する。メモリセルからのデータの読み出しは、この電荷に応じた電圧を検知して閾値判定することで行う。メモリセルから読み出されたデータは、例えば書き込み時に付加されたエラー訂正符号が復号されエラー訂正されて出力される。
【０００３】
不揮発性半導体メモリにおいて、書き込みおよび読み出しのサイクルを繰り返すと、メモリセルが徐々に劣化し、読み出しエラーが多発するようになる。また、読み出し時の環境（素子の温度など）によっても読み出しエラーの頻度が変化する。このようなメモリセルの劣化や読み出し時の環境に起因するエラーは、特定の傾向を持つため、閾値をシフトさせて読み出しを行うシフトリードによりリトライリードを行い救済することが可能である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−２００５５２号公報
【特許文献２】特開２００９−４３４１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、リトライリードのためのシフトリードの最適値は、一般には不明であり、予め用意したシフトテーブルに従いシフトリードの条件を切り替えながらリトライリードを繰り返し実行する必要がある。また、特に、１つのメモリセルに多値ビットによるデータを記憶する多値メモリの場合、読み出し時のノイズ低減のために多数回の読み出しを行う必要がある。さらに、このようにメモリセルに対してリトライリードにより多数回の読み出しを行うことにより、リードディスターブが発生してしまうおそれもある。
【０００６】
本発明が解決しようとする課題は、メモリセルからのデータ読み出しの際のリトライリード回数を削減可能な半導体装置および読み出し方法を提供することにある。
【課題を解決するための手段】
【０００７】
実施形態の半導体装置は、記憶部の第１のアドレスから複数の読み出し条件それぞれに従いデータを読み出し、読み出した複数の読み出し条件それぞれに対応する各データに対してエラー訂正を行った結果の各エラー数のうち最も少ないエラー数に対応する読み出し条件を複数の読み出し条件から選択し、選択した読み出し条件により第１のアドレスからの複数回の読み出しを行う。複数回の読み出しにより得られた各データ間で多数決処理を行う。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施形態に係る半導体装置の一例の構成を示すブロック図である。
【図２】図２は、実施形態に適用可能な、何れかのメモリブロックＢＬＫの構成の例を示す等価回路図である。
【図３】図３は、実施形態に適用可能な、ＮＡＮＤフラッシュメモリチップに対する多値記憶について説明するための図である。
【図４】図４は、実施形態に適用可能なリトライリードについて説明するための図である。
【図５】図５は、メモリセル分布の端部がノイズを含んでいる例を示す図である。
【図６】図６は、ビットエラー発生率の書き込み／読み出しサイクル回数に対する依存性について説明するための図である。
【図７】図７は、ビットエラー発生率の書き込み／読み出しサイクル回数に対する依存性について説明するための図である。
【図８】図８は、実施形態に適用可能な多数決処理について説明するための図である。
【図９】図９は、実施形態に係る多数決処理を行うための一例の構成を模式的に示す模式図である。
【図１０】図１０は、実施形態に係る読み出し処理を概略的に示す一例のフローチャートである。
【図１１】図１１は、実施形態に適用可能な多数決回路の例を示す回路図である。
【図１２】図１２は、実施形態に適用可能な多数決回路の例を示す回路図である。
【図１３】図１３は、実施形態に係る多数決処理の効果を説明するための図である。
【図１４】図１４は、実施形態に係る多数決処理の効果を説明するための図である。
【図１５】図１５は、実施形態に係る半導体装置の構成の例をより詳細に示すブロック図である。
【図１６】図１６は、実施形態に係る多数決処理部の一例の構成を示すブロック図である。
【図１７】図１７は、実施形態に係る読み出し処理を示す一例のフローチャートである。
【発明を実施するための形態】
【０００９】
以下、実施形態に係る半導体装置および読み出し方法について説明する。図１は、実施形態に係る半導体装置の一例の構成を示す。図１において、半導体装置１は、メモリ部２と、制御部３と、入力部４と、出力部５とを備え、外部から入力部４に入力された入力データを、制御部３の制御によりメモリ部２に記憶させることができる。また、メモリ部２に記憶されたデータは、制御部３の制御によりメモリ部２から読み出され、出力部５により出力データとして外部に出力される。すなわち、制御部３は、メモリ部２からのデータの読み出しを制御する読み出し制御部としての機能を備える。
【００１０】
制御部３は、この半導体装置１の全体の動作を制御する。メモリ部２は、不揮発性メモリを含む。より具体的には、メモリ部２は、例えば２次元構造セルを有するＮＡＮＤフラッシュメモリであって、１以上のＮＡＮＤフラッシュメモリチップを含む。
【００１１】
なお、メモリ部２に含まれる不揮発性メモリは、２次元構造セルを有するＮＡＮＤフラッシュメモリに限られない。例えば、メモリ部２に含まれる不揮発性メモリとして、３次元構造ＢｉＣＳ(Bit  Cost  Scalable)フラッシュメモリや、クロスポイント構造抵抗変化型メモリＲｅＲＡＭ(Resistance  Random  Access  Memory)、磁気抵抗メモリＭＲＡＭ(Magneto  resistive  Random  Access  Memory)などを用いてもよい。
【００１２】
入力部４は、外部から入力データが入力される。入力部４は、エラー訂正符号化部を含み、メモリ部２に記憶させるために供給された入力データ（原データとする）に対してエラー訂正符号化処理を施して出力する。実施形態では、エラー訂正符号化処理として、原データに対してブロック単位でエラー訂正符号を生成し、生成したエラー訂正符号を原データに付加する符号化処理方法を適用できる。
【００１３】
実施形態に係る半導体装置１は、エラー訂正符号として、例えばＢＣＨ(Bose-Chaudhuri-Hocquenghem)符号やＲＳ(Reed-Solomon)符号を適用可能である。実施形態に係る半導体装置１に適用可能なエラー訂正符号は、これらの例に限定されない。例えば、実施形態に係る半導体装置１に対して、原データが保存され、復号の際に原データ内のエラービットの数を取得可能なエラー訂正方法であれば、他の種類のエラー訂正符号を適用してもよい。
【００１４】
メモリ部２は、このエラー訂正符号が付加されたデータが記憶される。出力部５は、メモリ部２から読み出されたデータを出力データとして外部に出力する。出力部５は、エラー訂正部を含み、メモリ部２から読み出されたデータに付加されたエラー訂正符号を復号して当該データに対してエラー訂正処理を施す。このとき、エラー訂正部は、エラー訂正符号のエラー訂正能力を超えてデータにエラーが含まれる場合、当該データに対するエラー訂正処理を中止し、当該データに含まれるエラー数を出力する。
【００１５】
次に、ＮＡＮＤフラッシュメモリチップの構成について、概略的に説明する。ＮＡＮＤフラッシュメモリチップは、データ消去の単位である複数のメモリブロックＢＬＫから構成されている。メモリブロックＢＬＫの構成について、図２を用いて説明する。図２は、実施形態に適用可能な、何れかのメモリブロックＢＬＫの構成の例を示す等価回路図である。
【００１６】
メモリブロックＢＬＫは、Ｘ方向に沿って配置されたｍ（ｍは、１以上の整数）個のＮＡＮＤストリングを備えている。各ＮＡＮＤストリングは、選択トランジスタＳＴ１、ＳＴ２、及びｎ（ｎは、１以上の整数）個のメモリセルトランジスタＭＴを備えている。ｍ個のＮＡＮＤストリングにそれぞれ含まれる選択トランジスタＳＴ１は、ドレインがビット線ＢＬ１〜ＢＬｍに接続され、ゲートが選択ゲート線ＳＧＤに共通接続されている。また、選択トランジスタＳＴ２は、ソースがソース線ＳＬに共通接続され、ゲートが選択ゲート線ＳＧＳに共通接続されている。
【００１７】
各メモリセルトランジスタＭＴは、半導体基板上にゲート絶縁膜を介在して形成された積層ゲート構造を備えたＭＯＳＦＥＴ(Metal  Oxide  Semiconductor  Field  Effect  Transistor)である。積層ゲート構造は、ゲート絶縁膜上に形成された電荷蓄積層（浮遊ゲート電極）と、電荷蓄積層上にゲート絶縁膜を介在して形成された制御ゲート電極とを含んでいる。各ＮＡＮＤストリングにおいて、ｎ個のメモリセルトランジスタＭＴは、選択トランジスタＳＴ１のソースと選択トランジスタＳＴ２のドレインとの間に、それぞれの電流経路が直列接続されるように配置されている。すなわち、ｎ個のメモリセルトランジスタＭＴを、隣接するもの同士でソース領域若しくはドレイン領域を共有するような形でＹ方向に直列接続させる。
【００１８】
そして、最もドレイン側に位置するメモリセルトランジスタＭＴから順に、制御ゲート電極がワードラインＷＬ１〜ＷＬｎにそれぞれ接続されている。したがって、ワードラインＷＬ１に接続されたメモリセルトランジスタＭＴのドレインは選択トランジスタＳＴ１のソースに接続され、ワードラインＷＬｎに接続されたメモリセルトランジスタＭＴのソースは選択トランジスタＳＴ２のドレインに接続されている。
【００１９】
ワードラインＷＬ１〜ＷＬｎは、メモリブロックＢＬＫ内のＮＡＮＤストリング間で、メモリセルトランジスタＭＴの制御ゲート電極を共通に接続している。つまり、メモリブロックＢＬＫ内において同一行にあるメモリセルトランジスタＭＴの制御ゲート電極は、同一のワードラインＷＬに接続される。この同一のワードラインＷＬに接続される複数のメモリセルは１ページとして取り扱われ、このページ毎にデータの記録およびデータの読み出しが行われる。すなわち、ページは、ＮＡＮＤフラッシュメモリチップにおける記録および読み出しの単位となる単位ブロックである。ページは、複数を纏めて管理することができる。
【００２０】
また、ビット線ＢＬ１〜ＢＬｍは、メモリブロックＢＬＫ間で、選択トランジスタＳＴ１のドレインを共通に接続している。つまり、複数のメモリブロックＢＬＫ内において同一列にあるＮＡＮＤストリングは、同一のビット線ＢＬに接続される。
【００２１】
メモリセルトランジスタＭＴは、浮遊ゲート電極に蓄えられる電荷の量に応じて電圧が変化し、この電圧の違いに応じた情報を記憶する。メモリセルトランジスタＭＴは、１ビットの情報を記憶するように構成されていてもよいし、複数ビットの情報を記憶するように構成されていてもよい。本実施形態のＮＡＮＤフラッシュメモリチップは、２または３ビットの情報を記憶可能に構成されている。
【００２２】
ＮＡＮＤフラッシュメモリチップは、各ワードラインＷＬ１〜ＷＬｎに対して電位発生回路の出力が接続され、各ビット線ＢＬ１〜ＢＬｎにそれぞれセンスアンプが接続される。ＮＡＮＤフラッシュメモリチップにおいて、例えば、制御回路（制御部３）の制御により各ワードラインＷＬ１〜ＷＬｎから１つを選択し、電位発生回路により選択したワードラインをメモリセルトランジスタＭＴのオフ電圧、それ以外のワードラインをオン電圧とする。そして、各ビット線ＢＬ１〜ＢＬｎの電圧をそれぞれセンスアンプにより検知することで、１ページのデータを読み出すことができる。
【００２３】
図３を用いて、実施形態に適用可能な、ＮＡＮＤフラッシュメモリチップに対する多値記憶について説明する。図３（ａ）は、各メモリセルトランジスタＭＴ（以下、メモリセルと略称する）に２ビット情報を記憶させる例、図３（ｂ）は、各メモリセルに３ビット情報を記憶させる例を示す。なお、図３（ａ）および図３（ｂ）において、縦軸はメモリセルの分布、横軸はセンスアンプに検知される電圧を示す。
【００２４】
例えば図３（ａ）の場合、センスアンプに検知される電圧を、メモリセルの電荷の蓄積量に応じた４つのレベルに分類し、２ビットの情報を記憶させる。ここで、４つのレベルにそれぞれ対応する各分布１０ａ〜１０ｄは、それぞれのレベルにおいてセンスアンプが検知する電圧に対するメモリセルの分布を示す。なお、分布１０ｄは、消去状態（Ｅｒａｓｅ）の分布を示している。図３（ａ）の場合、各分布１０ａ〜１０ｄに応じて、読み出し条件として３つの閾値Ｔｈ1、Ｔｈ2およびＴｈ3を含む閾値Ｔｈの組を設定し、センスアンプが検知する電圧をこれら閾値Ｔｈ1、Ｔｈ2およびＴｈ3で分類することで、４つのレベルを検出でき、２ビットの情報を記憶することができる。
【００２５】
図３（ｂ）の例でも同様に、センスアンプに検知される電圧を、メモリセルの電荷の蓄積量に応じた８つのレベルに分類し、３ビットの情報を記憶させる。この場合、８つのレベルにそれぞれ対応する各分布１１ａ〜１１ｈに応じて、読み出し条件として７つの閾値Ｔｈ11〜Ｔｈ17を含む閾値Ｔｈの組を設定し、センスアンプが検知する電圧をこれら閾値Ｔｈ11〜Ｔｈ17で分類して、８つのレベルを検出する。なお、分布１１ｈは、消去状態（Ｅｒａｓｅ）の分布を示している。ここで、図３（ｂ）の例では、各分布１１ａ〜１１ｈのうち分布１１ａ〜１１ｇは、一端または両端が隣接する分布と重複し、分布が重複する部分に閾値Ｔｈ12〜Ｔｈ17がそれぞれ設定されている。したがって、分布の端にあるメモリセルからの読み出しは、一定の割合でエラービットとなる。
【００２６】
上述した図３（ａ）の例では、各分布１０ａ〜１０ｄの両端には隣接する分布に対するマージンが有り、各分布１０ａ〜１０ｄが重複していない。そのため、通常の状態では、エラービットが発生する確率は低い。ここで、例えば、書き込み／読み出しのサイクルに伴いメモリセルのデータ保持特性の劣化が発生した場合について考える。この場合、例えば各分布１０ａ〜１０ｄ間のマージンが徐々に狭くなり、分布の端にあるメモリセルからの読み出しにおいてエラービットが発生する確率が高くなる。
【００２７】
このようなエラービットの発生を抑止するための方法の一つとして、メモリセルからの読み出しの際の条件を変えてメモリセルからの再読み出しを行うリトライリードが知られている。図４を用いて、実施形態に適用可能なリトライリードについて説明する。図４（ａ）および図４（ｂ）は、図３（ａ）を用いて説明した２ビット記憶の場合のリトライリードの例を示す。
【００２８】
図４（ａ）は、データ・リテンションに起因するメモリセルのデータ保持特性劣化に伴うエラービットを抑制するためのリトライリードの例を示す。初期状態では、各メモリセルの各分布１０ａ〜１０ｄに対し、読み出し条件（デフォルトリード条件）として閾値Ｔｈ1、Ｔｈ2およびＴｈ3が設定されているものとする。この初期状態に対して、書き込み／読み出しのサイクル繰り返しに伴う素子の劣化や、高温環境下での蓄積電荷保持などが発生すると、各メモリセルの分布が、分布１０ａ’〜１０ｄ’のように、全体的に低電圧方向にシフトする、所謂ダウンシフトが生じる。したがって、デフォルトリード条件により各メモリセルから読み出した各ビットに対してエラー訂正を行っても、当該各ビットにエラー訂正符号のエラー訂正能力を超えてエラーが含まれる可能性が高く、エラーが救済される見込みが低い。
【００２９】
この場合、各閾値Ｔｈ1、Ｔｈ2およびＴｈ3も低電圧側にシフトさせ、読み出し条件（リトライリード条件）を閾値Ｔｈ21、Ｔｈ22およびＴｈ23とする。ダウンシフト起因のエラービットは、このダウンシフトを補償するリトライリード条件により各メモリセルからの読み出しを行うことで、読み出した各ビットに含まれるエラー数がデフォルトリード条件による読み出しの場合に対して抑制でき、エラー訂正により救済できる見込みが高くなる。
【００３０】
図４（ｂ）は、メモリセルのプログラム・ディスターブに伴うエラービットを抑制するためのリトライリードの例を示す。例えば書き込み／読み出しのサイクル繰り返しでプログラム・ディスターブによる特性劣化が生じると、各メモリセルの分布が、分布１０ａ”〜１０ｄ”のように、全体的に高電圧側にシフトする。この場合も、上述と同様にエラーが救済される見込みが低い。
【００３１】
この場合には、各閾値Ｔｈ1、Ｔｈ2およびＴｈ3も高電圧側にシフトさせ、読み出し条件を閾値Ｔｈ31、Ｔｈ32およびＴｈ33とする。このプログラム・ディスターブ起因のエラービットは、このようにデフォルトリード条件に対して高電圧側にシフトさせた閾値Ｔｈ31、Ｔｈ32およびＴｈ33を用いることで、読み出した各ビットに含まれるエラー数がデフォルトリード条件による読み出しの場合に対して抑制でき、エラー訂正により救済できる見込みが高くなる。
【００３２】
このように、メモリセルの分布のシフトに起因するエラービットの発生は、メモリセルに対する読み出し条件を、各閾値を全体的にシフトさせる条件に変更することで対処が可能である。このとき、分布のシフト量を読み出し前に知ることは極めて困難である。そのため、実際には、閾値の異なる複数の読み出し条件を予め用意しておき、各読み出し条件によるメモリセルからの読み出しを試行する必要があった。また、エラービット発生の要因は、上述したデータ・リテンションや、プログラム・ディスターブ以外にも、セル間干渉、リード・ディスターブなど、様々に存在する。
【００３３】
したがって、エラービット発生を抑制するためには、多数の読み出し条件を用意しておく必要がある。例えば、各メモリセルが２ビット記憶を行う場合には、１０件以上、３ビット記憶を行う場合には、２０件以上の読み出し条件を用意する必要があり、これら読み出し条件を記憶する記憶領域を用意する必要がある。また、メモリセルから読み出した各ビットに、エラー訂正符号のエラー訂正能力を超えてエラーが存在してエラー訂正ができない場合に、用意した読み出し条件全てについて、リトライリードを実行する必要があり、メモリセルからの読み出し速度に影響が生じるおそれがある。
【００３４】
また、図５に示されるように、分布の端部がノイズを含んでいる場合がある。すなわち、図５において、分布１０ａ”の端部（範囲１２として示す）がノイズを含んで振動様となっている。この場合には、ノイズにかかる閾値tｈ2において正しい判定を行うことができない。
【００３５】
次に、ビットエラー発生率の書き込み／読み出しサイクル回数に対する依存性について、図６および図７を用いて説明する。図６は、ビットエラー発生率の書き込み／読み出し回数に対する依存性を実測値に基づき示す。なお、図６では、書き込み／読み出しサイクルの代わりに、書き込み／消去サイクルが用いられている。図６は、メモリセルに対するＷ／Ｅ動作の１０００回目、３０００回目、５０００回目、…に、各メモリセルからの読み出し（リード）を同一読み出し条件で１１回実行して、読み出した各ビットに含まれるエラービット数を計測した実測値を示している。
【００３６】
図６において、ｘ軸は、Ｗ／Ｅ動作の回数を１０００回単位で示す。ｙ軸は、各メモリセルから読み出した各ビットについて、１１回の読み出し動作のうちリードエラーとなった回数Ｎ（Ｎ＝１〜１１）を示す。ｚ軸は、１１回の読み出し動作において発生したエラービットの合計Ｚと、各エラー回数Ｎについて発生したエラービット数Ｍ(Ｎ)との比Ｍ(Ｎ)／Ｚを、エラー率として示す。
【００３７】
図６において、リードエラー回数Ｎ＝１〜３は、偶然エラー、すなわち、メモリセルの特性バラツキや、メモリセルに係る回路（例えばセンスアンプ）の特性バラツキなどに起因するエラーを含むものと考えられる。リードエラー回数Ｎ４〜１０も、Ｗ／Ｅ動作回数に関わらず存在している。なお、リードエラー回数Ｎ＝１１におけるエラー率は、不良メモリセルに対応しているものと考えられる。
【００３８】
図７は、図６のリードエラー回数Ｎ＝１〜３を抜き出した場合に対応する図である。図７において、縦軸および横軸は、それぞれ図６のエラー率およびＷ／Ｅ回数に対応する。また、図７において、特性線２０ａがリードエラー回数Ｎ＝１、特性線２０ｂがリードエラー回数Ｎ＝２、特性線２０ｃがリードエラー回数Ｎ＝３の場合の例を示す。
【００３９】
図７から、リードエラー回数Ｎ＝１のビットのエラーが解消されると、エラーになる可能性を有するビットの数を１０％〜２０％ほど低減可能であることが分かる。また、リードエラー回数Ｎ＝２のビットのエラーが解消されると、エラーになる可能性を有するビットの数を８％ほど低減可能であることが分かる。さらに、リードエラー回数Ｎ＝３のビットのエラーが解消されると、エラーになる可能性を有するビットの数を５％ほど低減可能であることが分かる。これらより、リードエラー回数Ｎ＝１〜３のビットのエラーを全て解消すると、エラーになる可能性を有するビットの数を３０％ほど低減可能であることが分かる。
【００４０】
（実施形態に係る読み出し処理）
次に、実施形態に係る読み出し処理について説明する。実施形態では、メモリセルからのデータの読み出しに多数決処理を導入する。多数決処理は、同一のアドレスに対して複数回（ｓ＞２：ｓは整数）の読み出しを行って得られた各データを比較して、ｓが奇数の場合は読み出された回数が(ｓ−１)／２より多いデータ、ｓが偶数の場合は読み出された回数がｓ／２より多いデータを読み出しデータとして使用する。
【００４１】
実施形態に適用可能な多数決処理について、図８を用いてより具体的に説明する。ここでは、説明のため、同一アドレスからビットｂｉt−０〜ｂｉt−７の各ビットからなるビット列による８ビットのデータを、同一の読み出し条件により３回読み出す場合（ｓ＝３）について説明する。図８に示されるように、１回目に読み出したデータ３０ａのビット列の各ビットが「１０１１１００１」、２回目に読み出したデータ３０ｂのビット列の各ビットが「１００１１１０１」、３回目に読み出したデータ３０ｃのビット列の各ビットが「１０１１１００１」であるものとする。多数決処理では、これらデータ３０ａ、３０ｂおよび３０ｃそれぞれのビット列について、ビット位置が互いに一致するビット同士で比較して、当該ビット位置においてビットの値に対して多数決処理を行う。
【００４２】
図８の例では、ビットｂｉｔ−２およびビットｂｉｔ−５の各ビット位置において、データ３０ａ〜３０ｃ間で異なるビット値を含んでいる。すなわち、ビットｂｉｔ−２のビット位置では、データ３０ａ〜３０ｃにおける各ビット値は、それぞれ値「１」、値「０」および値「１」である。また、ビットｂｉｔ−５のビット位置では、データ３０ａ〜３０ｃにおける各ビット値は、それぞれ値「０」、値「１」および値「０」である。
【００４３】
ビットｂｉｔ−２のビット位置の各ビット値は、３回の読み出しのうち値「１」が２回読み出され、値「０」が１回読み出されている。したがって、値「１」が(ｓ−１)／２＝１より多い回数読み出されているため、ビットｂｉｔ−２のビット位置のビット値として値「１」を用いる。同様に、ビットｂｉｔ−５のビット位置の各ビット値は、３回の読み出しのうち値「０」が２回読み出され、値「１」が１回読み出されている。この場合には、ビットｂｉｔ−５のビット位置のビット値として値「０」を用いる。
【００４４】
また、ビットｂｉｔ−２およびビットｂｉｔ−５以外の各ビット位置の各ビット値は、データ３０ａ〜３０ｃ間で同一であり、ビットｂｉｔ−０、ビットｂｉｔ−１、ビットｂｉｔ−３、ビットｂｉｔ−４、ビットｂｉｔ−６およびビットｂｉｔ−７の各ビット位置のビット値は、それぞれ値「１」、値「０」、値「１」、値「１」、値「０」および値「１」を用いる。
【００４５】
したがって、この例の場合、多数決処理の結果、各ビット値が「１０１１１００１」であるデータ３０ｄを読み出しデータとして採用する。実施形態では、この多数決処理により採用された読み出しデータに対して、エラー訂正符号に基づくエラー訂正処理を施す。
【００４６】
図９は、実施形態に係る多数決処理を行うための一例の構成を模式的に示す模式図である。図９において、半導体装置１は、多数決処理部１４０と、読み出し回数に応じた数（この例では３回）のバッファ１４２1、１４２2および１４２3と、出力バッファ１４４と、データ記憶領域１５０と、読み出し条件記憶領域１５１とを備える。なお、図９において、バッファ１４２1、１４２2および１４２3は、それぞれバッファ（＃１）、バッファ（＃２）およびバッファ（＃３）としても示されている。
【００４７】
これらのうち、多数決処理部１４０は、例えば図１における制御部３に含まれる。バッファ１４２1、１４２2および１４２3、ならびに、出力バッファ１４４は、例えば図１５を用いて後述する入出力部６に含まれる。読み出し条件記憶領域１５１は、制御部３に含まれる。また、データ記憶領域１５０は、例えばメモリ部２に含まれる。
【００４８】
読み出し条件記憶領域１５１は、初期状態での読み出し条件であるデフォルトリード条件を含む複数のリトライリード条件を予め記憶する。半導体装置１において、図１に示した制御部３は、この読み出し条件記憶領域１５１から読み出し条件を取得して、データ記憶領域１５０からデータを読み出す際の条件（閾値など）を設定する。
【００４９】
データ記憶領域１５０は、ユーザデータが記憶される。ユーザデータは、例えば、データ本体と、データ本体に対して付加されたエラー訂正符号とが含まれる。半導体装置１は、データ記憶領域１５０から、データ本体における指定されたアドレスのデータを読み出す。このとき、半導体装置１は、同じアドレスのデータを、複数回繰り返して読み出す。この例では、半導体装置１は、同じアドレスのデータを３回繰り返して読み出すものとする。
【００５０】
図１０は、実施形態に係る読み出し処理を概略的に示す一例のフローチャートである。半導体装置１は、ステップＳ１０で、読み出し条件記憶領域１５１から読み出し条件を取得し、データ記憶領域１５０からデータを読み出す際の読み出し条件として設定する。次のステップＳ１１で、半導体装置１は、データ記憶領域１５０の同一アドレスからの所定回数（３回とする）の読み出しを実行したか否かを判定する。半導体装置１は、若し、所定回数の読み出しが完了していないと判定した場合、所定をステップＳ１２に移行させ、データ記憶領域１５０からのデータの読み出しを実行する。
【００５１】
次のステップＳ１３で、半導体装置１は、ステップＳ１２で読み出したデータを、バッファ１４２1、１４２2および１４２3のうち読み出しを実行した回数に応じたバッファに記憶させる。すなわち、半導体装置１は、ステップＳ１１〜ステップＳ１３の処理を３回繰り返し、１回目、２回目および３回目に読み出したデータを、それぞれバッファ１４２1、１４２2および１４２3に記憶させる。
【００５２】
ステップＳ１１で、半導体装置１は、所定回数の読み出しを完了したと判定した場合、処理をステップＳ１４に移行させる。ステップＳ１４で、半導体装置１は、バッファ１４２1、１４２2および１４２3から各データを読み出して多数決処理部１４０に供給する。そして、半導体装置１は、多数決処理部１４０により、各データをビット位置が対応するビット同士で比較して、各ビット位置において多数決処理を行う。
【００５３】
そして、半導体装置１は、ステップＳ１５で、多数決処理の結果で得られたデータを使用するデータに決定し、当該データを出力バッファ１４４に記憶させる。
【００５４】
図１１および図１２は、実施形態に適用可能な、多数決処理部１４０に含まれる多数決回路５０の例を示す。ここでは、同一データの繰り返し読み出し回数が３回の場合の多数決回路５０の例を示す。また、図１１および図１２に示される多数決回路５０は、１つのビット位置において多数決処理を行う。
【００５５】
図１１は、論理回路を用いて構成した多数決回路５０の例を示す。図１１に示される多数決回路５０は、それぞれ２入力のＡＮＤ回路５１ａ〜５１ｃと、ＯＲ回路５２および５３とを用いて構成されている。図１１において、入力信号ＩＮ1、ＩＮ2およびＩＮ3は、それぞれ１回目、２回目および３回目の読み出しで読み出されたビットである。入力信号ＩＮ1、ＩＮ2およびＩＮ3は、それぞれＡＮＤ回路５１ａ〜５１ｃの一方の入力端に入力される。また、入力信号ＩＮ1、ＩＮ2およびＩＮ3は、それぞれＡＮＤ回路５１ｃ、５１ａおよび５１ｂの他方の入力端に入力される。
【００５６】
ＡＮＤ回路５１ａおよび５１ｂの出力が、ＯＲ回路５２の一方および他方の入力端に入力される。また、ＡＮＤ回路５１ｃの出力と、ＯＲ回路５２の出力とがＯＲ回路５３の一方および他方の入力端に入力される。ＯＲ回路５３の出力が、この多数決回路５０の出力となる。
【００５７】
この図１１の多数決回路５０は、入力信号ＩＮ1、ＩＮ2およびＩＮ3を、下記の式（１）に従い処理する。
【数１】
0006378102.tif 000002
【００５８】
この式（１）に従えば、入力信号ＩＮ1、ＩＮ2およびＩＮ3に含まれる値「１」および「０」のうち、数の多い方の値が出力信号Ｘとして出力される。例えば、図１１の多数決回路５０は、入力信号ＩＮ1およびＩＮ2が値「１」で、入力信号ＩＮ3が値「０」であれば、値「１」が２個、値「０」が１個なので、値「１」が出力信号Ｘとして出力される。
【００５９】
図１２は、電位に応じて多数決処理を行う多数決回路５０の例を示す。図１２において、多数決回路５０は、３個のトランジスタＱ１、Ｑ２およびＱ３と、１個の抵抗Ｒを含む。図１２の多数決回路において、トランジスタＱ２のドレインがトランジスタＱ１のソースに、トランジスタＱ２のソースがトランジスタＱ３のドレインに、それぞれ接続され、トランジスタＱ１〜Ｑ３がドレイン−ソース方向に直列に接続される構成となっている。各トランジスタＱ１〜Ｑ３のゲートには、入力信号ＩＮ1、ＩＮ2およびＩＮ3がそれぞれ入力される。そして、一方の端のトランジスタＱ１のドレインに電源電圧ＶＤＤが供給され、他方の端のトランジスタＱ３のソースに、一端が接地される抵抗値Ｒrefの抵抗Ｒが接続される。トランジスタＱ３のソースと抵抗との接続点から、出力信号Ｘが取り出される。
【００６０】
このような構成において、各トランジスタＱ１〜Ｑ３のゲートに入力される各入力信号ＩＮ1、ＩＮ2およびＩＮ3は、ハイ(High)状態でビット値「１」を表し、ロー(Low)状態でビット値「０」を表すものとする。また、各トランジスタＱ１〜Ｑ３は、ドレイン−ソース間の抵抗値ＲDSが、ゲート電圧がハイ(High)状態で低抵抗となり、ゲート電圧がロー(Low)状態で高抵抗となる。
【００６１】
ここで、説明のため各トランジスタＱ１〜Ｑ３の特性が等しいものとし、ドレイン−ソース間の抵抗値ＲDSを、ゲートに入力される入力信号ＩＮxの関数として、抵抗値ＲDS(ＩＮx)として表す。この場合、電源電圧ＶＤＤの入力端（トランジスタＱ１のドレイン端子）から接地点の間の合計の抵抗値Ｒtotalは、下記の式（２）で表される。
Ｒtotal＝ＲDS(ＩＮ1)＋ＲDS(ＩＮ2)＋ＲDS(ＩＮ3)＋Ｒref    …（２）
【００６２】
出力信号Ｘの電圧を抵抗Ｒの両端で計測する場合、出力信号Ｘの電圧値は、電圧ＶＤＤを、式（２）の抵抗値Ｒtotalと、抵抗値Ｒrefとの比に従い分圧した電圧値となる。したがって、入力信号ＩＮ1〜ＩＮ3のうち、何れか１つがハイ状態で他の２つがロー状態の場合の出力信号Ｘの電圧値Ｖ1と、何れか１つがロー状態で他の２つがハイ状態の場合の出力信号Ｘの電圧値Ｖ2とを比較すると、Ｖ2＞Ｖ1となる。これにより、電圧値Ｖ2と電圧値Ｖ1との間の電圧値Ｖthを閾値として出力信号Ｘに対する判定を行うことで、多数決処理を行うことができる。
【００６３】
図１３および図１４を用いて、実施形態に係る多数決処理の効果について説明する。図１３は、ビットエラー発生率ＢＥＲ(Bit  Error  Ratio)を多数決処理により改善したＢＥＲ改善率Ｋの実測値の例を示す。図１３において、縦軸は、ＢＥＲ改善率Ｋを示し、横軸は多数決処理による読み出し回数を示す。
【００６４】
ここで、ビットエラー発生率ＢＥＲは、１ブロックのＺビットの書き込みを行い、読み出したデータのうちＹビットのデータがエラーとなった場合に、ＢＥＲ＝Ｙ／Ｚと定義する。多数決処理後にＹ’ビットのデータがエラーになったものとすると、多数決処理後のビットエラー発生率ＢＥＲ’は、ＢＥＲ’＝Ｙ’／Ｚとなる。ビットエラー改善率Ｋは、Ｋ＝(Ｙ−Ｙ’)／Ｚと定義する。
【００６５】
図１３の例では、多数決処理において、読み出し回数が３回でも２．５％程度のＢＥＲ改善率Ｋが得られ、読み出し回数が７回〜９回で、ＢＥＲ改善値Ｋが４．２％程度の最大値を取ることが示されている。一方、読み出し回数が１１回では、読み出し回数が９回の場合に対してＢＥＲ改善率Ｋが低下している。すなわち、図１３の例では、多数決処理における繰り返しの読み出し回数最適値が存在しているといえる。
【００６６】
図１４は、ビットエラー発生率ＢＥＲと、多数決処理との関係を、メモリセルに２ビット情報を記憶する場合と、３ビット情報を記憶する場合とで実測した例を示す。なお、図１４（ａ）および図１４（ｂ）において、縦軸はビットエラー発生率ＢＥＲを示し、横軸は、繰り返し読み出しの各読み出し回と、多数決処理とを示す。
【００６７】
図１４（ａ）は、メモリセルに２ビット情報を記憶する場合のビットエラー発生率ＢＥＲの例を示す。また、図１４（ａ）は、読み出しを１１回繰り返して多数決処理を行った例であり、右端の棒が多数決処理の結果行った場合のビットエラー発生率ＢＥＲの例を示す。また、他の棒は、多数決処理を行わない場合の各読み出し回におけるビットエラー発生率ＢＥＲの例を示す。
【００６８】
図１４（ａ）から分かるように、１１回の繰り返し読み出しにより多数決処理を行った場合、ビットエラー発生率ＢＥＲは、多数決処理を行わない場合の平均値に対して４％程度減少している。
【００６９】
図１４（ｂ）は、メモリセルに３ビット情報を記憶する場合のビットエラー発生率ＢＥＲの例を示す。また、図１４（ｂ）は、読み出しを５回繰り返して、読み出しの３回目と５回目とにおいて多数決処理を行った例である。図１４（ｂ）において、右端の棒が５回の読み出しにより多数決処理を行った場合のビットエラー発生率ＢＥＲの例を示し、右端の隣の棒が３回の読み出しにより多数決処理を行った場合のビットエラー発生率ＢＥＲの例を示す。また、他の棒は、多数決処理を行わない場合の各読み出し回におけるビットエラー発生率ＢＥＲの例を示す。
【００７０】
図１４（ｂ）から分かるように、ビットエラー発生率ＢＥＲは、多数決処理を行わない場合の平均値に対して、３回の繰り返し読み出しにより多数決処理を行った場合に８％程度減少し、５回の繰り返し読み出しにより多数決処理を行った場合に１０．４％程度減少している。
【００７１】
このように、多数決処理を用いることで、少ない繰り返し読み出し回数でも、ビットエラー発生率ＢＥＲを抑制することが可能である。
【００７２】
（実施形態に係る半導体装置のより詳細な構成）
次に、実施形態に係る半導体装置１について、より詳細に説明する。図１５は、実施形態に係る半導体装置１の構成の例をより詳細に示す。なお、図１５において、上述した図１と共通する部分には同一の符号を付して、詳細な説明を省略する。
【００７３】
半導体装置１は、メモリ部２と、制御部３と、入出力部６とを備える。入出力部６は、図１における入力部４の機能と出力部５の機能とを含む構成となっている。メモリ部２は、メモリ素子部１００と、ＮＡＮＤペリフェラル１０１と、ロー(Row)デコーダ１０２と、ＮＡＮＤシーケンサ１０３と、電圧供給部１０４と、ＯＳＣ（発振器）１０５とを含む。
【００７４】
メモリ素子部１００は、図２に示したように、メモリセルがマトリクス状に設けられ、複数のメモリブロックＢＬＫを含む。メモリ素子部１００は、メモリブロックＢＬＫにおいて、各ワードラインＷＬ１〜ＷＬｎから１のワードラインを選択し、各ビット線ＢＬ１〜ＢＬｍの電圧を検出することで、選択されたワードラインと各ビット線ＢＬ１〜ＢＬｍが交差する各メモリセルから情報を読み出すことができる。
【００７５】
ＮＡＮＤペリフェラル１０１は、メモリ素子部１００に含まれる各メモリブロックＢＬＫのビット線ＢＬ１〜ＢＬｍの電圧を読み出すセンスアンプを含む。また、ＮＡＮＤペリフェラル１０１は、ＮＡＮＤシーケンサ１０３の制御に従い各メモリセルにデータを書き込み、また、各メモリセルからデータを読み出すためのカラム(Column)デコーダを含む。
【００７６】
電圧供給部１０４は、ＮＡＮＤシーケンサ１０３の制御に従い、各メモリブロックＢＬＫの各ワードラインＷＬ１〜ＷＬｎから指定されたワードラインを選択するための電圧をローデコーダ１０２に供給する。ＯＳＣ１０５は、クロック信号ＣＬＫを生成し、ＮＡＮＤシーケンサ１０３に供給する。
【００７７】
ＮＡＮＤシーケンサ１０３は、ＯＳＣ１０５で生成されたクロック信号ＣＬＫに従い動作する。ＮＡＮＤシーケンサ１０３は、例えば、後述するＮＡＮＤ制御部１１０から供給される制御信号に従い、ローデコーダ１０２に対してワードラインを選択する選択信号を出力し、また、ＮＡＮＤペリフェラル１０１に対してビット線を選択する選択信号を出力する。また、ＮＡＮＤシーケンサ１０３は、ＮＡＮＤ制御部１１０から供給される制御信号に従い、ＮＡＮＤペリフェラル１０１に対して、メモリセルから情報を読み出す際の閾値Ｔｈを設定するための信号を出力する。
【００７８】
入出力部６は、データバッファ１３０と、ＥＣＣ符号化部１３１と、ＥＣＣ復号部１３２と、データバッファ１３３と、多数決処理部１４０とを含む。入出力部６は、メモリ素子部１００に対して書き込むデータの処理と、メモリ素子部１００から読み出されたデータの処理とを行う。データバッファ１３０は、メモリ素子部１００から読み出されたデータや、メモリ素子部１００に書き込むためのデータを一時的に記憶する。
【００７９】
データバッファ１３３は、後述するインターフェイス（Ｉ／Ｆ）１１１を介して半導体装置１に入力された、メモリ素子部１００に書き込むためのデータを一時的に記憶する。また、データバッファ１３３は、メモリ素子部１００から読み出され、Ｉ／Ｆ１１１を介して出力するためのデータを一時的に記憶する。
【００８０】
ＥＣＣ(Error  Correcting  Code)符号化部１３１は、供給されたデータに対してエラー訂正符号化処理を行う。例えば、ＥＣＣ符号化部１３１は、Ｉ／Ｆ１１１を介して入力されデータバッファ１３３に記憶された原データに基づきエラー訂正符号を生成する。ＥＣＣ符号化部１３１は、生成したエラー訂正符号を原データに付加して出力する。ＥＣＣ符号化部１３１から出力されたデータは、データバッファ１３０を介してＮＡＮＤペリフェラル１０１に供給され、メモリ素子部１００に書き込まれる。
【００８１】
ＥＣＣ復号部１３２は、ＥＣＣ符号化部１３１によるエラー訂正符号化に対応する復号処理を行う。より具体的には、ＥＣＣ復号部１３２は、メモリ素子部１００から読み出され、データバッファ１３０を介して供給されたデータのエラー訂正符号を復号してエラー訂正処理を行い、復号データとして出力する。ＥＣＣ復号部１３２から出力された復号データは、データバッファ１３３およびＩ／Ｆ１１１を介して、半導体装置１の外部に出力される。
【００８２】
ここで、ＥＣＣ復号部１３２は、復号を行うデータに、当該データに含まれるエラー訂正符号のエラー訂正能力を超えてエラーが存在する場合、例えばエラー訂正処理を行わずにエラービット数を示す情報を出力する。ＥＣＣ復号部１３３から出力されたエラービット数を示す情報は、ＦＢＣ管理部１２０に供給される。また、ＥＣＣ復号部１３２は、復号を行うデータに、当該データに含まれるエラー訂正符号のエラー訂正能力を超えてエラーが存在してエラー訂正処理を行わなかった場合に、その旨をＮＡＮＤ制御部１１０に通知する。
【００８３】
多数決処理部１４０は、上述した多数決処理を行う。すなわち、多数決処理部１４０は、メモリ素子部１００の同一アドレスから複数回読み出された各データを、ビット位置が対応するビット同士で比較して多数決処理を行う。多数決処理部１４０は、多数決処理により得られたデータをＥＣＣ復号部１３２に供給する。ＥＣＣ復号部１３２は、多数決処理部１４０から供給されたデータを復号してエラー訂正処理を行い、エラー訂正されたデータを出力する。
【００８４】
制御部３は、ＮＡＮＤ制御部１１０と、Ｉ／Ｆ１１１と、メモリ１１２と、ＦＢＣ(Fail  Bit  Count)管理部１２０とを含む。Ｉ／Ｆ１１１は、データの入出力状態を示す情報をＮＡＮＤ制御部１１０に渡す。メモリ１１２は、書き換え可能な不揮発性メモリであって、メモリ素子部１００からデータを読み出す際の複数の読み出し条件を予め記憶する。例えば、メモリ１１２は、メモリセルからの読み出しの際の閾値Ｔｈの組を複数格納するシフトテーブルを予め記憶する。
【００８５】
ＮＡＮＤ制御部１１０は、外部から、メモリ素子部１００に対する読み出しおよび書き込みを命令するコマンドを含む各種コマンドが供給される。読み出しおよび書き込みを命令するコマンドは、例えば、メモリ素子部１００に対して指定するアドレスを示すアドレス情報を含む。ＮＡＮＤ制御部１１０は、外部から供給されたアドレス情報と読み出し命令とに基づき、アドレス情報を含む制御信号をＮＡＮＤシーケンサ１０３に供給する。
【００８６】
また、ＮＡＮＤ制御部１１０は、ＥＣＣ復号部１３２からエラー訂正処理ができなかった旨の通知を受け取ると、リトライリードを行うための制御信号をＮＡＮＤシーケンサ１０３に供給する。ＮＡＮＤ制御部１１０は、メモリ１１２から、現在用いられている読み出し条件とは異なる読み出し条件を、リトライリード毎に読み出して取得し、ＮＡＮＤシーケンサ１０３に供給する。ＮＡＮＤシーケンサ１０３は、この読み出し条件をＮＡＮＤペリフェラル１０１に供給する。
【００８７】
ＥＣＣ復号部１３２は、リトライリードで読み出されたデータに、エラー訂正符号のエラー訂正能力を超えてエラーが存在する場合、エラービット数を示す情報をＦＢＣ管理部１２０に供給する。ＦＢＣ管理部１２０は、エラービット数を示す情報を、リトライリード毎に管理する。ＮＡＮＤ制御部１１０は、ＦＢＣ管理部１２０に管理されるリトライリード毎のエラービット数に基づき、デフォルトとして用いる読み出し条件を決定する。また、ＮＡＮＤ制御部１１０は、ＥＣＣ復号部１３２による復号結果に応じて、多数決処理部１４０による多数決処理を行うか否かを決定する。
【００８８】
図１６は、実施形態に係る多数決処理部１４０の一例の構成を示す。図１６において、データ記憶領域１５０は、メモリ素子部１００に対応する。多数決処理部１４０は、セグメント１４１と、多数決処理による読み出しを行う回数（この例では３回）に対応する数のバッファ１４２1、１４２2および１４２3と、多数決回路部１４３と、出力バッファ１４４とを備える。
【００８９】
セグメント１４１は、例えばレジスタであって、データ記憶領域１５０から読み出されたデータをビット単位で記憶するもので、ビット単位でデータを記憶するビット記憶領域を複数備える。この例では、データ記憶領域１５０からＮビットのデータが読み出されるものとし、セグメント１４１は、Ｎ個のビットデータｂｉｔ−１、ｂｉｔ−２、ｂｉｔ−３、…、ｂｉｔ−Ｎに対応するＮ個のビット記憶領域を備える。
【００９０】
バッファ１４２1、１４２2および１４２3は、セグメント１４１と同様に、それぞれＮ個のビットデータｂｉｔ−１、ｂｉｔ−２、ｂｉｔ−３、…、ｂｉｔ−Ｎに対応するＮ個のビット記憶領域を備える。セグメント１４１の各ビット記憶領域は、バッファ１４２1、１４２2および１４２3それぞれにおける、ビット位置が対応する各ビット記憶領域に接続される。
【００９１】
例えば、多数決処理において、データ記憶領域１５０から１回目の読み出しで読み出されたＮビットのビットデータは、セグメント１４１の各ビット記憶領域を介してバッファ１４２1に供給され、バッファ１４２1における、セグメント１４１の各ビット記憶領域とビット位置が対応する各記憶領域に記憶される。同様に、データ記憶領域１５０から２回目の読み出しで読み出されたＮビットのビットデータが、セグメント１４１の各ビット記憶領域を介して、バッファ１４２2における、セグメント１４１の各ビット記憶領域とビット位置が対応する各記憶領域に記憶される。データ記憶領域１５０からの３回目の読み出しについても同様にして、データ記憶領域１５０から読み出されたＮビットのビットデータが、バッファ１４２3における、セグメント１４１の各ビット記憶領域とビット位置が対応する各ビット記憶領域に記憶される。
【００９２】
多数決回路部１４３は、データ記憶領域１５０からの読み出しビット数に対応し、Ｎ個の多数決回路５０1、５０2、５０3、…、５０Nを備える。多数決回路５０1、５０2、５０3、…、５０Nは、図１１で示した論理回路を用いて多数決処理を行う構成と、図１２で示した電位に応じて多数決処理を行う構成とのうち何れの構成を用いてもよい。また、同様の処理結果が得られれば、さらに他の構成の多数決処理回路を用いてもよい。
【００９３】
各多数決回路５０1、５０2、５０3、…、５０Nは、図１１および図１２で示したように、多数決処理での読み出し回数に応じて、入力信号ＩＮ1、ＩＮ2およびＩＮ3の３つの入力信号に対して多数決処理を行う。各バッファ１４２1、１４２2および１４２3における各ビット記憶領域に記憶されたＮ個のビットデータｂｉｔ−１、ｂｉｔ−２、ｂｉｔ−３、…、ｂｉｔ−Ｎは、それぞれ多数決回路５０1、５０2、５０3、…、５０Nに、入力信号ＩＮ1、ＩＮ2およびＩＮ3としてそれぞれ供給される。
【００９４】
例えば、バッファ１４２1、１４２2および１４２3の各ビットデータｂｉｔ−１は、それぞれ多数決回路５０1に対して、入力信号ＩＮ1、ＩＮ2およびＩＮ3として入力される。同様に、バッファ１４２1、１４２2および１４２3の各ビットデータｂｉｔ−２は、それぞれ多数決回路５０2に対して、入力信号ＩＮ1、ＩＮ2およびＩＮ3として入力される。
【００９５】
出力バッファ１４４は、バッファ１４２1、１４２2および１４２3や、セグメント１４１と同様に、それぞれＮ個のビットデータｂｉｔ−１、ｂｉｔ−２、ｂｉｔ−３、…、ｂｉｔ−Ｎに対応するＮ個のビット記憶領域を備える。多数決回路５０1、５０2、５０3、…、５０Nの各出力は、出力バッファ１４４における、ビット位置が対応する各ビット記憶領域に接続される。出力バッフ１４４の各ビット記憶領域に記憶されるＮ個のビットデータｂｉｔ−１、ｂｉｔ−２、ｂｉｔ−３、…、ｂｉｔ−Ｎが、多数決処理されたデータとして多数決処理部１４０から出力される。
【００９６】
なお、上述した図１５では、多数決処理部１４０が入出力部６に含まれるように説明したが、これはこの例に限定されない。すなわち、多数決処理部１４０は、制御部３に含まれるように構成することができる。多数決処理部１４０を制御部３内の構成とすることで、制御部３内のロジック回路を利用して多数決処理部１４０を構成することができ、好ましい。
【００９７】
図１７は、実施形態に係る半導体装置１におけるメモリ部２（メモリ素子部１００）からのデータの読み出し処理を示す一例のフローチャートである。この図１７のフローチャートによる処理は、メモリ素子部１００からの読み出し単位（例えばメモリブロックＢＬＫ）毎に実行される。なお、このフローチャートによる処理に先立って、ＮＡＮＤ制御部１１０は、ＮＡＮＤシーケンサ１０３に対してデフォルトの読み出し条件を予め設定しておくものとする。
【００９８】
ＮＡＮＤ制御部１１０が外部から供給されたリードアクセス命令を受け取ることで、図１７のフローチャートによる処理が開始される。ＮＡＮＤ制御部１１０が受け取ったリードアクセス命令は、メモリ素子部１００からデータを読み出すアドレスを示すアドレス情報を含む。
【００９９】
ステップＳ１００で、ＮＡＮＤ制御部１１０は、メモリ１１２から履歴フラグを読み出すと共に、リトライフラグの値を「０」に設定する。なお、履歴フラグは、初期値が値「０」であり、リードアクセス命令によって初期化されないものとする。これに限らず、履歴フラグは、異なるメモリブロックＢＬＫに対するリードアクセス命令毎に初期化してもよいし、メモリ素子部１００に複数のメモリチップが含まれる場合には、異なるメモリチップに対するリードアクセス命令毎に初期化してもよい。
【０１００】
次のステップＳ１０１で、ＮＡＮＤ制御部１１０は、デフォルトの読み出し条件により、リードアクセス命令に示されるアドレスに従いメモリ素子部１００からのデータの読み出しを行うように、ＮＡＮＤシーケンサ１０３に命令する。ＮＡＮＤシーケンサ１０３は、この命令に従いＮＡＮＤペリフェラル１０１を制御して、メモリ素子部１００の指定されたアドレスからデータを読み出す。
【０１０１】
メモリ素子部１００から読み出されたデータは、データバッファ１３０を介してＥＣＣ復号部１３２に供給される。ＥＣＣ復号部１３２は、データバッファ１３０から供給されたデータのエラー訂正符号を復号して、エラー訂正処理を行う（ステップＳ１０２）。ＥＣＣ復号部１３２は、エラー訂正結果をＮＡＮＤ制御部１１０に通知する。
【０１０２】
次のステップＳ１０３で、ＮＡＮＤ制御部１１０は、ＥＣＣ復号部１３２から通知されたエラー訂正結果に基づき、エラー訂正できたか否かを判定する。ＮＡＮＤ制御部１１０は、読み出したデータのエラー訂正ができたと判定した場合（Ｐａｓｓ）、処理をステップＳ１１４に移行させる。ステップＳ１１４で、ＮＡＮＤ制御部１１０は、ＥＣＣ復号部１３２でエラー訂正処理されたデータを、データバッファ１３３およびＩ／Ｆ１１１を介して半導体装置１の外部に出力させる。
【０１０３】
一方、ＮＡＮＤ制御部１１０は、ステップＳ１０２のエラー訂正処理において、読み出されたデータに、エラー訂正符号のエラー訂正能力を超えた数のエラーが存在する旨の通知をＥＣＣ復号部１３２から受け取った場合、ステップＳ１０３でエラー訂正ができないと判定する（Ｆａｉｌ）。この場合、ＮＡＮＤ制御部１１０は、処理をステップＳ１０４に移行させ、履歴フラグの値をチェックする。若し、履歴フラグの値が「１」であれば、ＮＡＮＤ制御部１１０は、処理をステップＳ１２２に移行させる。
【０１０４】
一方、ＮＡＮＤ制御部１１０は、履歴フラグの値が「０」であれば、処理をステップＳ１０５に移行させ、リトライフラグの値を「１」とし、変数ｉの値を「０」に設定する。
【０１０５】
次のステップＳ１０６で、ＦＢＣ管理部１２０は、ＥＣＣ復号部１３２から出力された、データに存在するエラービット数を示す情報を、ｉ番目の読み出し処理におけるエラービット数として記憶する。また、ＮＡＮＤ制御部１１０は、変数ｉ＝ｉ＋１として、変数ｉの値を１だけインクリメントする。
【０１０６】
次のステップＳ１０７で、ＮＡＮＤ制御部１１０は、変数ｉの値が予め定められた値ｎに達したか否かを判定する。ＮＡＮＤ制御部１１０は、変数ｉが値ｎに達していないと判定した場合、処理をステップＳ１０８に移行させる。
【０１０７】
ステップＳ１０８で、ＮＡＮＤ制御部１１０は、メモリ１１２からｉ番目の読み出し条件ｉを読み出す。そして、ＮＡＮＤ制御部１１０は、読み出した読み出し条件ｉに従いメモリ素子部１００からのリトライリードを行うように、ＮＡＮＤシーケンサ１０３に命令する。ＮＡＮＤシーケンサ１０３は、この命令に従い、ステップＳ１０１で読み出しを行ったアドレスと同一のアドレスからデータを読み出しリトライリードを行う。
【０１０８】
リトライリードによりメモリ素子部１００から読み出されたデータは、データバッファ１３０を介してＥＣＣ復号部１３２に供給される。ＥＣＣ復号部１３２は、データバッファ１３０から供給されたデータのエラー訂正符号を復号して、エラー訂正処理を行う（ステップＳ１０９）。ＥＣＣ復号部１３２は、エラー訂正結果をＮＡＮＤ制御部１１０に通知する。
【０１０９】
次のステップＳ１１０で、ＮＡＮＤ制御部１１０は、ＥＣＣ復号部１３２から通知されたエラー訂正結果に基づき、エラー訂正できたか否かを判定する。ＮＡＮＤ制御部１１０は、ステップＳ１０９のエラー訂正処理において、読み出されたデータに、エラー訂正符号のエラー訂正能力を超えた数のエラーが存在する旨の通知をＥＣＣ復号部１３２から受け取った場合、ステップＳ１１０でエラー訂正ができなかったと判定する（Ｆａｉｌ）。この場合、処理がステップＳ１０６に戻され、ＦＢＣ管理部１２０によりエラービット数がｉ番目の読み出し処理におけるエラービット数として記憶される。その後、変数ｉの値が１だけインクリメントされる。
【０１１０】
一方、ＮＡＮＤ制御部１１０は、ステップＳ１１０で読み出したデータのエラー訂正ができたと判定した場合（Ｐａｓｓ）、処理をステップＳ１１１に移行させて履歴フラグを値「０」に初期化する。
【０１１１】
次のステップＳ１１２で、ＮＡＮＤ制御部１１０は、読み出し条件ｉを新たな読み出し条件とする。処理はステップＳ１１３に移行され、ＮＡＮＤ制御部１１０は、新たな読み出し条件でデフォルトの読み出し条件を更新する。そして、ＮＡＮＤ制御部１１０は、処理をステップＳ１１４に移行させて、ＥＣＣ復号部１３２でエラー訂正処理されたデータを、データバッファ１３３およびＩ／Ｆ１１１を介して半導体装置１の外部に出力させる。
【０１１２】
ＮＡＮＤ制御部１１０は、上述のステップＳ１０７で変数ｉが値ｎに達したと判定した場合、処理をステップＳ１２０に移行させる。ステップＳ１２０で、ＮＡＮＤ制御部１１０は、ステップＳ１０６〜ステップＳ１１０のループにおいて取得されたｎ個の読み出し条件にそれぞれ対応するエラービット数をＦＢＣ管理部１２０から取得する。そして、ＮＡＮＤ制御部１１０は、取得したｎ個のエラービット数のうち最も少ないエラービット数を選択し、選択されたエラービット数に対応する読み出し条件を、新たな読み出し条件に決定する。ＮＡＮＤ制御部１１０は、新たな読み出し条件を示す情報をメモリ１１２に記憶する。
【０１１３】
次のステップＳ１２１で、ＮＡＮＤ制御部１１０は、履歴フラグの値を「１」に設定する。そして、次のステップＳ１２２で、ＮＡＮＤ制御部１１０は、メモリ１１２から新たな読み出し条件を取得する。また、ＮＡＮＤ制御部１１０は、変数ｊの値を「０」に設定する。
【０１１４】
次のステップＳ１２３で、ＮＡＮＤ制御部１１０は、変数ｊ＝ｊ＋１として変数ｊを１だけインクリメントし、取得した新たな読み出し条件に従いメモリ素子部１００からのデータの読み出しを行うように、ＮＡＮＤシーケンサ１０３に命令する。ＮＡＮＤシーケンサ１０３は、この命令に従い、ステップＳ１０１で読み出しを行ったアドレスと同一のアドレスからデータを読み出し、ｊ回目の読み出しを行う。
【０１１５】
ｊ回目の読み出しでメモリ素子部１００から読み出されたデータは、データバッファ１３０を介して多数決処理部１４０に供給される。ステップＳ１２４で、多数決処理部１４０は、供給されたデータをバッファ（ｊ＝１の場合、例えばバッファ１４２1）に記憶する。
【０１１６】
次のステップＳ１２５で、ＮＡＮＤ制御部１１０は、変数ｊの値が予め定められた値ｍに達したか否かを判定する。値ｍは、多数決処理により比較するデータ数を示す値であって、ここでは、ｍ＝３であるものとする。ＮＡＮＤ制御部１１０は、変数ｊの値が値ｍに達していないと判定した場合、処理をステップＳ１２３に戻し、変数ｊを１だけインクリメントし、ｊ回目の読み出しを行う。多数決処理部１４０は、読み出されたデータを次のバッファ（ｊ＝２の場合、例えばバッファ１４２2）に記憶する。
【０１１７】
ステップＳ１２５で変数ｊが値ｍに達したと判定した場合、処理がステップＳ１２６に移行される。ステップＳ１２６で、多数決処理部１４０は、ステップＳ１２４で各バッファに記憶されたデータをビット位置が一致するビット同士で比較して、当該ビット位置においてビットの値に対して多数決処理を行う。多数決処理部１４０は、多数決処理の結果得られたデータをＥＣＣ復号部１３２に渡す。
【０１１８】
次のステップＳ１２７で、ＥＣＣ復号部１３２は、多数決処理部１４０から供給されたデータに対してエラー訂正処理を行う。このとき、ＥＣＣ復号部１３２は、ｍ回の読み出しで得た各エラー訂正符号のうち何れかを用いてエラー訂正を行うことができる。これに限らず、ステップＳ１０１の読み出しで得られたエラー訂正符号を用いてエラー訂正処理を行ってもよい。さらに、ステップＳ１２３〜ステップＳ１２６の処理において、エラー訂正符号自体に対して多数決処理を行い、その結果得られた符号を用いてエラー訂正処理を行うことも考えられる。
【０１１９】
ＥＣＣ復号部１３２は、エラー訂正結果をＮＡＮＤ制御部１１０に通知する。次のステップＳ１２８で、ＮＡＮＤ制御部１１０は、ＥＣＣ復号部１３２から通知されたエラー訂正結果に基づき、ステップＳ１２６における多数決処理の結果得られたデータに対するエラー訂正ができたか否かを判定する。ＮＡＮＤ制御部１１０は、エラー訂正処理ができたと判定した場合（Ｐａｓｓ）、処理を上述したステップＳ１１３に移行させ、ステップＳ１２０で決定された新たな読み出し条件をデフォルトの読み出し条件に設定する。
【０１２０】
一方、ＮＡＮＤ制御部１１０は、ステップＳ１２８で、エラー訂正ができなかったと判定した場合（Ｆａｉｌ）、処理をステップＳ１２９に移行させ、リトライフラグの値をチェックする。ＮＡＮＤ制御部１１０は、リトライフラグが値「０」であると判定した場合、処理をステップＳ１０５に戻す。
【０１２１】
ＮＡＮＤ制御部１１０は、ステップＳ１２９でリトライフラグが値「１」であると判定した場合、処理をステップＳ１３０に移行させる。ステップＳ１３０で、ＮＡＮＤ制御部１１０は、データを読み出したブロックが不良（Ｂａｄ）ブロックであると判定し、当該ブロックがＢａｄブロックである旨をメモリ１１２に記憶し、図１７のフローチャートの一連の処理を終了する。
【０１２２】
以上説明したように、実施形態では、メモリセルからのデータの読み出しを、リトライリードと多数決処理とを組み合わせて実行している。そのため、リトライリードのみを行う場合に比べ、リトライリード回数を削減することが可能である。また、多数決処理を用いることで、シフトリードによるリトライリードでは救済が困難だった偶然エラーにも対応することができ、素子寿命を延ばすことが可能である。さらに、環境影響などによりエラーの救済ができなくなった場合に、最初からリトライリードを行うことも可能である。
【０１２３】
なお、本実施形態は、上述したそのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上述の実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【０１２４】
１  半導体装置
２  メモリ部
３  制御部
６  入出力部
５０，５０1，５０2，５０3，５０N  多数決回路
１００  メモリ素子部
１０３  ＮＡＮＤシーケンサ
１１０  ＮＡＮＤ制御部
１１２  メモリ
１２０  ＦＢＣ管理部
１３０，１３３  データバッファ
１３１  ＥＣＣ符号化部
１３２  ＥＣＣ復号部
１４０  多数決処理部
１４１  セグメント
１４２1，１４２2，１４２3  バッファ
１４４  出力バッファ
１５０  データ記憶領域
【図１】
0006378102.tif 000003
【図２】
0006378102.tif 000004
【図３】
0006378102.tif 000005
【図４】
0006378102.tif 000006
【図５】
0006378102.tif 000007
【図６】
0006378102.tif 000008
【図７】
0006378102.tif 000009
【図８】
0006378102.tif 000010
【図９】
0006378102.tif 000011
【図１０】
0006378102.tif 000012
【図１１】
0006378102.tif 000013
【図１２】
0006378102.tif 000014
【図１３】
0006378102.tif 000015
【図１４】
0006378102.tif 000016
【図１５】
0006378102.tif 000017
【図１６】
0006378102.tif 000018
【図１７】
0006378102.tif 000019