(57)【特許請求の範囲】
【請求項１】
複数の第１データを受け、かつ前記複数の第１データを行列状に格納する一時記憶回路と、
前記複数の第１データの誤りをそれぞれ検出するための複数の検出符号を生成する検出符号生成部と、
前記一時記憶回路において列方向に配列された複数の第１データから第１単位データが構成され、列数に対応する複数の第１単位データの誤りをそれぞれ訂正するための複数の第１訂正符号を生成する第１訂正符号生成部と、
前記一時記憶回路において行方向に配列された複数の第１データから第２単位データが構成され、行数に対応する複数の第２単位データの誤りをそれぞれ訂正するための複数の第２訂正符号を生成する第２訂正符号生成部と、
前記複数の第１データ、前記複数の検出符号、前記複数の第１訂正符号、及び前記複数の第２訂正符号を不揮発に記憶する半導体メモリと、
を具備することを特徴とする半導体記憶装置。
【請求項２】
前記複数の第１訂正符号を用いて、前記複数の第１単位データの誤りをそれぞれ訂正する第１訂正部と、
前記複数の検出符号を用いて、前記第１訂正部により訂正された訂正済データの誤りを検出する検出部と、
前記複数の第２訂正符号を用いて、前記検出部により検出された第１データの誤りを訂正する第２訂正部と、
をさらに具備することを特徴とする請求項１に記載の半導体記憶装置。
【請求項３】
前記第１単位データは、前記列方向に配列された複数の第１データに対応して生成された複数の検出符号を含むことを特徴とする請求項１又は２に記載の半導体記憶装置。
【請求項４】
前記検出符号生成部は、前記複数の第２訂正符号の誤りをそれぞれ検出するための複数の検出符号を生成することを特徴とする請求項１乃至３のいずれかに記載の半導体記憶装置。
【請求項５】
前記第１訂正符号生成部は、前記複数の第２訂正符号からなる第３単位データの誤りを訂正するための第１訂正符号を生成することを特徴とする請求項４に記載の半導体記憶装置。
【請求項６】
前記第３単位データは、前記複数の第２訂正符号に対応して生成された複数の検出符号を含むことを特徴とする請求項５に記載の半導体記憶装置。
【請求項７】
前記第１訂正部と前記第２訂正部とは、それぞれの訂正動作を交互に繰り返すことを特徴とする請求項２に記載の半導体記憶装置。
【請求項８】
前記一時記憶回路は、前記訂正済データを更新することを特徴とする請求項７に記載の半導体記憶装置。
【請求項９】
前記検出部は、誤りが検出された第１データを特定する誤り情報を生成し、
前記第２訂正部は、前記誤り情報に基づいて、誤り訂正を行うことを特徴とする請求項２、７、及び８のいずれかに記載の半導体記憶装置。
【請求項１０】
前記半導体メモリは、第１サイズを最小単位としてデータの読み出し、及び書き込みを行い、
前記第１単位データのサイズは、前記第１サイズと等しいことを特徴とする請求項１乃至９のいずれかに記載の半導体記憶装置。
【請求項１１】
前記半導体メモリは、ＮＡＮＤ型フラッシュメモリであることを特徴とする請求項１乃至１０のいずれかに記載の半導体記憶装置。
【請求項１２】
複数の第１データを受けて、この複数の第１データを一時記憶回路に行列状に格納する工程と、
前記複数の第１データの誤りをそれぞれ検出するための複数の検出符号を生成する工程と、
前記一時記憶回路において列方向に配列された複数の第１データから第１単位データが構成され、列数に対応する複数の第１単位データの誤りをそれぞれ訂正するための複数の第１訂正符号を生成する工程と、
前記一時記憶回路において行方向に配列された複数の第１データから第２単位データが構成され、行数に対応する複数の第２単位データの誤りをそれぞれ訂正するための複数の第２訂正符号を生成する工程と、
前記複数の第１データ、前記複数の検出符号、前記複数の第１訂正符号、及び前記複数の第２訂正符号を、半導体メモリに不揮発に記憶する工程と、
を具備することを特徴とする半導体記憶装置の制御方法。
【請求項１３】
前記複数の第１訂正符号を用いて、前記複数の第１単位データの誤りをそれぞれ訂正する工程と、
前記複数の検出符号を用いて、前記第１訂正符号を用いて訂正された訂正済データの誤りを検出する工程と、
前記複数の第２訂正符号を用いて、誤りが検出された第１データの誤りを訂正する工程と、
をさらに具備することを特徴とする請求項１２に記載の半導体記憶装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体記憶装置、及びその制御方法に係り、例えば、不揮発に情報を記憶する半導体メモリの誤りを訂正する訂正回路を備えた半導体記憶装置、及びその制御方法に関する。
【背景技術】
【０００２】
不揮発性の記憶装置の種類によっては、時間の経過とともに、データの記憶を担っている物理量の状態が変化する。時間の経過が、ある一定の長さに達すると、データが失われることもある。このような特徴を有する記憶装置には、様々なものが含まれる。そのような記憶装置の１つとして、例えば、いわゆる積層ゲート構造を有するトランジスタをメモリセルとして用いた不揮発性半導体記憶装置がある。
【０００３】
積層ゲート構造は、基板上に順に積層されたトンネル絶縁膜、浮遊ゲート電極、ゲート間絶縁膜、制御ゲート電極を有する。メモリセルに情報を記憶させるには、トンネル絶縁膜を介して浮遊ゲート電極に基板から電子を注入する。そして、浮遊ゲート電極に蓄積された電荷によって情報が保持される。浮遊ゲート電極に蓄積された電荷は、時間の経過とともに、トンネル絶縁膜を介して基板へと漏れ出す。このため、時間の経過とともに、メモリセルが保持する情報が失われ得る（情報に誤りが生じ得る）。
【０００４】
情報を格納した時点からの時間の経過が短ければ、情報に誤りが生じている可能性は低い。一方、情報を格納した時点からの時間の経過が長ければ、情報に誤りが生じている可能性は高い。このようなメモリセルを複数個有する記憶装置では、誤った情報を正しく復元するための誤り訂正機構が設けられていることがある。
【０００５】
一般に、複数のビットからなるデータに、情報の記録から時間が経過したこと等を理由として誤りが多く含まれている場合でも誤りを訂正するには、高い誤り訂正能力を有する訂正機構が必要である。高い誤り訂正能力を有する訂正機構は、回路規模が大きく、消費電力が大きく、処理に時間を要する。通常、情報の記憶から長時間が経過した後でも正しい情報を復元できることを保証しておくために、高い誤り訂正能力を有する訂正機構が設けられている。そして、情報の記憶からの時間の経過の長短によらずに、一律に、高性能の誤り訂正機構が適用される。
【０００６】
このため、記憶から短い時間しか経過していない情報を読み出す際にも、このような高性能の誤り訂正機構が用いられる。すると、それほど多くの誤りが含まれていない情報の読み出しであるにも係らず、無駄に、高性能の誤り訂正機構が用いられる。このことは、記憶装置の消費電力が無駄に消費されることにつながる。
【０００７】
さらに、一般に、誤り訂正能力を高めるには、誤り訂正の対象となる情報を大きくすることが求められる。例えば、５１２バイトのデータに対して誤り訂正符号が生成される代わりに、複数個の５１２バイトのデータが連結された例えば４ｋバイトのデータを１つの単位として用いて誤り訂正符号が生成される。こうすることにより、誤り訂正能力を高めることができる。しかしながら、この手法は、例えば、５１２バイトのデータを読み出したいにも係らず、４ｋバイトのデータを読み出さなければならないことにつながる。このことによっても、記憶装置は、無駄な電力を消費することを強いられる。
【０００８】
この出願の発明に関連する先行技術文献情報としては次のものがある。
【特許文献１】特開昭６３−２７５２２５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明は、誤り訂正能力を損なうことなく消費電力及び回路規模を低減することが可能な半導体記憶装置、及び半導体記憶装置の制御方法を提供する。
【課題を解決するための手段】
【００１０】
本発明の一態様に係る半導体記憶装置は、複数の第１データを受け、かつ前記複数の第１データを行列状に格納する一時記憶回路と、前記複数の第１データの誤りをそれぞれ検出するための複数の検出符号を生成する検出符号生成部と、前記一時記憶回路において列方向に配列された複数の第１データから第１単位データが構成され、列数に対応する複数の第１単位データの誤りをそれぞれ訂正するための複数の第１訂正符号を生成する第１訂正符号生成部と、前記一時記憶回路において行方向に配列された複数の第１データから第２単位データが構成され、行数に対応する複数の第２単位データの誤りをそれぞれ訂正するための複数の第２訂正符号を生成する第２訂正符号生成部と、前記複数の第１データ、前記複数の検出符号、前記複数の第１訂正符号、及び前記複数の第２訂正符号を不揮発に記憶する半導体メモリとを具備する。
【００１１】
本発明の一態様に係る半導体記憶装置の制御方法は、複数の第１データを受けて、この複数の第１データを一時記憶回路に行列状に格納する工程と、前記複数の第１データの誤りをそれぞれ検出するための複数の検出符号を生成する工程と、前記一時記憶回路において列方向に配列された複数の第１データから第１単位データが構成され、列数に対応する複数の第１単位データの誤りをそれぞれ訂正するための複数の第１訂正符号を生成する工程と、前記一時記憶回路において行方向に配列された複数の第１データから第２単位データが構成され、行数に対応する複数の第２単位データの誤りをそれぞれ訂正するための複数の第２訂正符号を生成する工程と、前記複数の第１データ、前記複数の検出符号、前記複数の第１訂正符号、及び前記複数の第２訂正符号を、半導体メモリに不揮発に記憶する工程とを具備する。
【発明の効果】
【００１２】
本発明によれば、誤り訂正能力を損なうことなく消費電力及び回路規模を低減することが可能な半導体記憶装置、及び半導体記憶装置の制御方法を提供することができる。
【発明を実施するための最良の形態】
【００１３】
以下に本発明の実施形態について図面を参照して説明する。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【００１４】
また、以下に示す各実施形態は、この発明の技術的思想を具体化するための装置や方法を例示するものであって、この発明の技術的思想は、構成部品の材質、形状、構造、配置等を下記のものに特定するものでない。この発明の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【００１５】
また、本発明の各実施形態における各機能ブロックは、ハードウェア、コンピュータソフトウェア、のいずれかまたは両者の組み合わせとして実現することができる。このため、各ブロックは、これらのいずれでもあることが明確となるように、概してそれらの機能の観点から以下に説明される。このような機能が、ハードウェアとして実行されるか、またはソフトウェアとして実行されるかは、具体的な実施態様またはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、様々な方法でこれらの機能を実現し得るが、そのような実現を決定することは本発明の範疇に含まれるものである。
【００１６】
図１は、本発明の実施形態に係る半導体記憶装置１０を概略的に示すブロック図である。半導体記憶装置１０は、誤り訂正回路１１と半導体メモリ１２とを備えている。誤り訂正回路１１と半導体メモリ１２とは、例えば、１つの半導体集積回路として１つの半導体チップ上に設けられる。半導体メモリ１２は、情報を不揮発に記憶し、時間の経過に伴って記憶されているデータに変化が生じ得る特徴を有すれば、どのような記憶装置であっても構わない。そのような半導体メモリ１２として、例えば、ＮＡＮＤ型フラッシュメモリが挙げられる。本実施形態では、半導体メモリ１２として、ＮＡＮＤ型フラッシュメモリを一例として説明する。
【００１７】
ＮＡＮＤ型フラッシュメモリは、データ消去の単位である複数のメモリブロックＢＬＫから構成されている。メモリブロックＢＬＫの構成について、図２を用いて説明する。図２は、いずれかのメモリブロックＢＬＫの構成を示す等価回路図である。
【００１８】
メモリブロックＢＬＫは、Ｘ方向に沿って配置されたｍ（ｍは、１以上の整数）個のＮＡＮＤストリングを備えている。各ＮＡＮＤストリングは、選択トランジスタＳＴ１、ＳＴ２、及びｎ（ｎは、１以上の整数）個のメモリセルトランジスタＭＴを備えている。ｍ個のＮＡＮＤストリングにそれぞれ含まれる選択トランジスタＳＴ１は、ドレインがビット線ＢＬ１〜ＢＬｍに接続され、ゲートが選択ゲート線ＳＧＤに共通接続されている。また、選択トランジスタＳＴ２は、ソースがソース線ＳＬに共通接続され、ゲートが選択ゲート線ＳＧＳに共通接続されている。
【００１９】
各メモリセルトランジスタＭＴは、半導体基板上にゲート絶縁膜を介在して形成された積層ゲート構造を備えたＭＯＳＦＥＴ（metal oxide semiconductor field effect transistor）である。積層ゲート構造は、ゲート絶縁膜上に形成された電荷蓄積層（浮遊ゲート電極）と、電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲート電極とを含んでいる。各ＮＡＮＤストリングにおいて、ｎ個のメモリセルトランジスタＭＴは、選択トランジスタＳＴ１のソースと選択トランジスタＳＴ２のドレインとの間に、それぞれの電流経路が直列接続されるように配置されている。すなわち、ｎ個のメモリセルトランジスタＭＴを、隣接するもの同士でソース領域若しくはドレイン領域を共有するような形でＹ方向に直列接続させる。
【００２０】
そして、最もドレイン側に位置するメモリセルトランジスタＭＴから順に、制御ゲート電極がワード線ＷＬ１〜ＷＬｎにそれぞれ接続されている。従って、ワード線ＷＬ１に接続されたメモリセルトランジスタＭＴのドレインは選択トランジスタＳＴ１のソースに接続され、ワード線ＷＬｎに接続されたメモリセルトランジスタＭＴのソースは選択トランジスタＳＴ２のドレインに接続されている。
【００２１】
ワード線ＷＬ１〜ＷＬｎは、メモリブロックＢＬＫ内のＮＡＮＤストリング間で、メモリセルトランジスタＭＴの制御ゲート電極を共通に接続している。つまり、メモリブロックＢＬＫ内において同一行にあるメモリセルトランジスタＭＴの制御ゲート電極は、同一のワード線ＷＬに接続される。この同一のワード線ＷＬに接続される複数のメモリセルは１ページとして取り扱われ、このページごとにデータの書き込み及びデータの読み出しが行われる。
【００２２】
また、ビット線ＢＬ１〜ＢＬｎは、メモリブロックＢＬＫ間で、選択トランジスタＳＴ１のドレインを共通に接続している。つまり、複数のメモリブロックＢＬＫ内において同一列にあるＮＡＮＤストリングは、同一のビット線ＢＬに接続される。
【００２３】
メモリセルトランジスタＭＴは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じた情報を記憶する。メモリセルトランジスタＭＴは、１ビットの情報を記憶するように構成されていてもよいし、複数ビットの情報を記憶するように構成されていてもよい。そして、半導体メモリ１２内のセンスアンプ、及び電位発生回路等を含む制御回路（図示せず）は、半導体メモリ１２に供給されたデータをメモリセルトランジスタＭＴに書き込み、メモリセルトランジスタＭＴに記憶されているデータを半導体メモリ１２の外部に出力することが可能な構成を有している。
【００２４】
半導体記憶装置１０には、外部から半導体メモリ１２への書き込みを要求されているデータ（書き込みデータ）が供給される。誤り訂正回路１１は、書き込みデータに誤り訂正符号及び誤り検出符号を付加して、半導体メモリ１２に供給する。半導体メモリ１２は、誤り訂正符号及び誤り検出符号を付加された書き込みデータを不揮発に記憶する。
【００２５】
また、半導体メモリ１２は、外部から半導体記憶装置１０に供給される制御信号に応答して、読み出しを要求されているデータ（読み出しデータ）と、これに付加された誤り訂正符号及び誤り検出符号を誤り訂正回路１１に供給する。誤り訂正回路１１は、読み出しデータの誤りを検出する。そして、誤りが存在した場合にこれを訂正し、誤り訂正符号及び誤り検出符号を除去し、読み出しデータを外部へ出力する。以下に、誤り訂正回路１１の具体的な回路構成について説明する。
【００２６】
［書き込み系回路の構成］
図３は、誤り訂正回路１１のデータ書き込みに関する主要部を示すブロック図である。図４は、誤り訂正回路１１から半導体メモリ１２へ転送されるデータのフォーマットを示す図である。
【００２７】
誤り訂正回路１１は、所定サイズの書き込みデータＤを１つの単位として、誤り検出符号を生成する。各書き込みデータＤのサイズは、例えば５１２バイトである。また、誤り訂正回路１１は、列方向に配列された複数の書き込みデータ（誤り検出符号を含む）を１つの単位として、第１の誤り訂正符号を生成する。さらに、誤り訂正回路１１は、行方向に配列された複数の書き込みデータを１つの単位として、第２の誤り訂正符号を生成する。誤り訂正符号を生成する単位となる書き込みデータの数は、達成することが望まれる誤り訂正能力及び採用される誤り訂正符号に応じて決定される。
【００２８】
誤り検出符号としては、ＣＲＣ（cyclic redundancy checksum）３２、ＣＲＣ１６等を用いることができる。従って、本実施形態では、誤り検出符号生成部２１は、ＣＲＣ生成部２１から構成される。ＣＲＣ生成部２１の詳細な構成は、当業者にとって既知であり、ここでは説明を省略する。ＣＲＣ生成部２１は、書き込みデータＤ（５１２バイト）ごとに、ＣＲＣを生成する。本実施形態では、ＣＲＣのサイズは、４バイトである。
【００２９】
第１の誤り訂正符号としては、１ビット或いは複数ビットの誤りを訂正できる誤り訂正符号（ＥＣＣ：error correcting code）が用いられる。具体的には、ＢＣＨ符号（bose-chaudhuri hocquenghem code）、或いはＬＤＰＣ符号（low density parity check code）等を用いることができる。本実施形態では、第１の誤り訂正符号生成部２２は、ＥＣＣ生成部２２と表記するものとする。ＥＣＣ生成部２２の詳細な構成は、当業者にとって既知であり、ここでは説明を省略する。ＥＣＣ生成部２２は、例えば８個の書き込みデータＤと、これらに対応する８個のＣＲＣとからなる第１単位データＵＤａごとに、ＥＣＣを生成する。この場合、ＥＣＣのサイズは、２４バイトである。
【００３０】
第２誤り訂正符号としては、例えば、複数ビット単位で誤り訂正ができる、第１誤り訂正符号を用いた誤り訂正よりも高い能力の誤り訂正を可能とするものが用いられる。具体的には、第２誤り訂正符号としては、リード・ソロモン符号（ＲＳ：reed-solomon code）等を用いることができる。従って、本実施形態では、第２の誤り訂正符号生成部２３は、ＲＳ生成部２３から構成される。ＲＳ生成部２３の詳細な構成は、当業者にとって既知であり、ここでは説明を省略する。ＲＳ生成部２３は、例えば１０２４個の書き込みデータＤからなる第２単位データＵＤｂごとに、ＲＳを生成する。
【００３１】
また、ＲＳ生成部２３は、５１２バイトの書き込みデータＤを復元するようにして、この書き込みデータＤ内の誤りを訂正する。この場合、ＲＳのサイズは、書き込みデータＤと同じ５１２バイトである。そして、ＲＳ生成部２３は、１個の第２単位データＵＤｂに対して、例えば４個のＲＳを生成する。従って、ＲＳ生成部２３は、１個の第２単位データＵＤｂを構成する１０２４個の書き込みデータＤのうち４個の書き込みデータの誤りを訂正することができる。
【００３２】
誤り訂正回路１１は、一時記憶回路２０を備えている。一時記憶回路２０は、例えば揮発性の記憶回路からなり、例えばＤＲＡＭ（dynamic random access memory）とすることができる。誤り訂正回路１１は、複数の書き込みデータＤ（１，１）〜Ｄ（８，１０２４）を外部から受ける。一時記憶回路２０は、複数の書き込みデータＤ（１，１）〜Ｄ（８，１０２４）を行列状に一時的に格納する。図５は、書き込み時における一時記憶回路２０内のデータ構造を示す図である。
【００３３】
図５に示すように、一時記憶回路２０は、ＥＣＣ生成部２２の処理単位である８個の書き込みデータＤ（１，ｐ）〜Ｄ（８，ｐ）を列方向に格納し、ＲＳ生成部２３の処理単位である１０２４個の書き込みデータＤ（ｑ，１）〜Ｄ（ｑ，１０２４）を行方向に格納する。ｐは１〜１０２４のうちの任意の数、ｑは１〜８のうちの任意の数である。
【００３４】
ＣＲＣ生成部２１は、列方向に配列された８個の書き込みデータＤ（１，ｐ）〜Ｄ（８，ｐ）に対応して、８個のＣＲＣ生成部２１−１〜２１−８を備えている。８個のＣＲＣ生成部２１−１〜２１−８はそれぞれ、８個の書き込みデータＤ（１，ｐ）〜Ｄ（８，ｐ）に対して、８個のＣＲＣを生成する。この８個のＣＲＣはそれぞれ、これらに対応する８個の書き込みデータＤ（１，ｐ）〜Ｄ（８，ｐ）の誤りを検出するために用いられる。この８個のＣＲＣは、ＥＣＣ生成部２２に送られる。
【００３５】
ＥＣＣ生成部２２は、８個の書き込みデータＤ（１，ｐ）〜Ｄ（８，ｐ）とこれらに対応する８個のＣＲＣとからなる第１単位データＵＤａｐごとに、１個のＥＣＣを生成する。このＥＣＣは、第１単位データＵＤａｐ内の誤りを訂正するために用いられる。本実施形態では、第１単位データＵＤａｐとＥＣＣとからなるデータのサイズ、１ページ分のサイズに対応する（図４を参照）。
【００３６】
また、本実施形態では、ＲＳ生成部２３は、行方向に配列された１０２４個の書き込みデータＤ（ｑ，１）〜Ｄ（ｑ，１０２４）からなる第２単位データＵＤｂごとに、１個のＲＳを生成する。ＲＳ生成部２３は、一時記憶回路２０に格納される書き込みデータの行に対応する８個のＲＳ生成部２３−１〜２３−８を備えている。ＲＳ生成部２３−１は、データＤ（１，１）〜Ｄ（１，１０２４）からなる第２単位データＵＤｂ１に対して、４個のＲＳ（１，１）〜ＲＳ（１，４）を生成する。２〜８行にそれぞれ対応するＲＳ生成部２３−２〜２３−８についても同様である。
【００３７】
なお、ＣＲＣ生成部２１−１〜２１−８はそれぞれ、列方向に配列された８個のＲＳ（１，ｒ）〜ＲＳ（８，ｒ）に対しても、ＣＲＣを生成する。ｒは、１〜４のうちの任意の数である。同様に、ＥＣＣ生成部２２は、８個のＲＳ（１，ｒ）〜ＲＳ（８，ｒ）と、これらの対応する８個のＣＲＣとからなる第３単位データＵＤｃに対して、ＥＣＣを生成する。第３単位データＵＤｃのサイズは、第１単位データＵＤａのそれと同じである。
【００３８】
書き込みデータＤ、ＣＲＣ、ＥＣＣ、及びＲＳは、図４に示したページごとに、誤り訂正回路１１から半導体メモリ１２に送られる。半導体メモリ１２は、これらのデータを、ページ順に格納する。例えば、１つのメモリブロックＢＬＫが１０２８ページで構成されている場合、図４に示したデータは、半導体メモリ１２内の１つのメモリブロックＢＬＫに格納される。
【００３９】
［データ書き込み動作］
次に、データ書き込み動作における誤り訂正回路１１の誤り検出符号生成動作及び誤り訂正符号生成動作について、図６乃至図８を参照して説明する。
【００４０】
まず、図６に示すように、半導体メモリ１２への書き込み対象となる８個の書き込みデータＤ（１，１）〜Ｄ（８，１）が誤り訂正回路１１に供給される。書き込みデータＤ（１，１）〜Ｄ（８，１）は、一時記憶回路２０に格納される。
【００４１】
続いて、図７に示すように、８個の書き込みデータＤ（１，１）〜Ｄ（８，１）はそれぞれ、ＣＲＣ生成部２１−１〜２１−８に送られる。ＣＲＣ生成部２１−１〜２１−８はそれぞれ、８個の書き込みデータＤ（１，１）〜Ｄ（８，１）に対して、８個の誤り検出符合（ＣＲＣ）を生成する。この８個のＣＲＣが、これらに対応する書き込みデータＤの後ろにそれぞれ繋げられて、１個の第１単位データＵＤａ１が構成される。本実施形態では、ＣＲＣ生成部２１−１〜２１−８は、検出符号生成動作を並行して行っている。このように、ＣＲＣ生成部２１−１〜２１−８を並行して動作させることによって、処理時間を短縮させることができる。
【００４２】
続いて、図８に示すように、第１単位データＵＤａ１は、ＥＣＣ生成部２２に送られる。ＥＣＣ生成部２２は、第１単位データＵＤａ１を用いて、この第１単位データＵＤａ１内の誤りを訂正するための第１の誤り訂正符合（ＥＣＣ）を生成する。このＥＣＣが、第１単位データＵＤａ１の後ろに繋げられて、ページ１が構成される。このページ１は、半導体メモリ１２に送られ、半導体メモリ１２に格納される。
【００４３】
ページ２〜ページ１０２４についても、上記同様の生成動作により、図４に示すデータが生成される。そして、ページ２〜ページ１０２４は、半導体メモリ１２に送られ、半導体メモリ１２に格納される。
【００４４】
次に、ＲＳ生成部２３により、第２の誤り訂正符号（ＲＳ）が生成される。なお、現時点において、一時記憶回路２０には、図５に示すように行列状に、書き込みデータＤ（１，１）〜Ｄ（８，１０２４）が格納されている。
【００４５】
まず、図９に示すように、列方向に配列された１０２４個の書き込みデータＤ（１，１）〜Ｄ（１，１０２４）から第２単位データＵＤｂ１が構成され、この第２単位データＵＤｂ１が、一時記憶回路２０からＲＳ生成部２３−１に送られる。同様に、第２単位データＵＤｂ２〜ＵＤｂ８は、一時記憶回路２０からＲＳ生成部２３−２〜２３−８に送られる。
【００４６】
続いて、図１０に示すように、ＲＳ生成部２３−１は、第２単位データＵＤｂ１を用いて、４個のＲＳ（１，１）〜ＲＳ（１，４）を生成する。ＲＳ生成部２３−２〜２３−８によるＲＳ生成動作についても、ＲＳ生成部２３−１と同様である。本実施形態では、ＲＳ生成部２３−１〜２３−８は、訂正符号生成動作を並行して行っている。このように、ＲＳ生成部２３−１〜２３−８を並行して動作させることによって、処理時間を短縮させることができる。
【００４７】
誤り訂正符合としてリード・ソロモン符号を用いた場合、通常は、４個の冗長符号を用いて２個の誤り位置情報と２個の誤り訂正情報を得るため、２個の誤りの訂正が可能である。しかし、本実施形態では、書き込みデータＤの誤り位置を特性するために、別途ＣＲＣを用いている。従って、本実施形態では、４個の冗長符号を用いて４個の誤りを訂正することが可能となる。すなわち、１０２４個の書き込みデータＤ（１，１）〜Ｄ（１，１０２４）のうち４個の誤りを訂正することが可能となる。
【００４８】
続いて、書き込みデータＤの場合と同様に、ＣＲＣ生成部２１−１〜２１−８はそれぞれ、列方向に配列された８個のＲＳ（１，１）〜ＲＳ（８，１）に対して、８個のＣＲＣを生成する。この８個のＣＲＣが、これらに対応するＲＳの後ろにそれぞれ繋げられて、１個の第３単位データＵＤｃ１が構成される。ＥＣＣ生成部２２は、この第３単位データＵＤｃ１を用いて、第３単位データＵＤｃ１内の誤りを訂正するためのＥＣＣを生成する。このＥＣＣが、第３単位データＵＤｃ１の後ろに繋げられて、ページ１０２５が構成される。このページ１０２５は、半導体メモリ１２に送られ、半導体メモリ１２に格納される。
【００４９】
ページ１０２６〜ページ１０２８についても、上記同様の生成動作により、図４に示すデータが生成される。そして、ページ１０２６〜ページ１０２８は、半導体メモリ１２に送られ、半導体メモリ１２に格納される。
【００５０】
［読み出し系回路の構成］
図１１は、誤り訂正回路１１のデータ読み出しに関する主要部を示すブロック図である。
【００５１】
データ読み出しの際には、半導体メモリ１２内の１つのメモリブロックＢＬＫに格納されたブロックデータ（図４に示すデータ）が、一時記憶回路２０に送られる。そして、一時記憶回路２０は、図４に示すブロックデータを格納する。
【００５２】
誤り訂正回路１１は、ＥＣＣ訂正部３１を備えている。ＥＣＣ訂正部３１は、ページごとに生成された誤り訂正符号（ＥＣＣ）を用いて、８個の読み出しデータ（１，ｐ）〜Ｄ（８，ｐ）と、これらに対応する８個のＣＲＣとからなる第１単位データＵＤａｐ内の誤りを訂正する。ＥＣＣ訂正部３１により訂正された第１の訂正済データＤＣ１は、一時記憶回路２０に送られる。一時記憶回路２０は、格納されたデータのうち、第１の訂正済データＤＣ１に対応するデータを更新する。
【００５３】
また、誤り訂正回路１１は、ＣＲＣ検出部３２を備えている。ＣＲＣ検出部３２は、列方向に配列された８個の読み出しデータＤ（１，ｐ）〜Ｄ（８，ｐ）（すなわち、行数）に対応して、８個のＣＲＣ検出部３２−１〜３２−８を備えている。８個のＣＲＣ検出部３２−１〜３２−８はそれぞれ、８個の読み出しデータＤ（１，ｐ）〜Ｄ（８，ｐ）に対して生成された８個のＣＲＣを用いて、読み出しデータＤ（１，ｐ）〜Ｄ（８，ｐ）内の誤りを検出する。ＣＲＣ検出部３２の詳細な構成は、当業者にとって既知であり、ここでは説明を省略する。
【００５４】
さらに、誤り訂正回路１１は、ＲＳ訂正部３３を備えている。ＲＳ訂正部３３は、列方向に配列された８個の読み出しデータＤ（１，ｐ）〜Ｄ（８，ｐ）に対応して、８個のＲＳ訂正部３３−１〜３３−８を備えている。ＲＳ訂正部３３−１は、４個のＲＳ（１，１）〜ＲＳ（１，４）を用いて、行方向に配列された１０２４個の読み出しデータＤ（１，１）〜Ｄ（１，１０２４）からなる第２単位データＵＤｂ１内の誤りを訂正する。ＲＳ訂正部３３の詳細な構成は、当業者にとって既知であり、ここでは説明を省略する。
【００５５】
本実施形態では、第２の誤り訂正符合としてリード・ソロモン符号（ＲＳ）を用い、かつ４個のＲＳ（１，１）〜ＲＳ（１，４）は全て誤り訂正に用いられる。従って、ＲＳ訂正部３３−１は、１０２４個の読み出しデータＤ（１，１）〜Ｄ（１，１０２４）のうち４個の読み出しデータを復元することができる。２〜８行にそれぞれ対応するＲＳ訂正部３３−２〜３３−８についても同様である。ＲＳ訂正部３３−１〜３３−８により訂正された第２の訂正済データＤＣ２は、一時記憶回路２０に送られる。一時記憶回路２０は、格納されたデータのうち、第２の訂正済データＤＣ２に対応するデータを更新する。
【００５６】
ＥＣＣ訂正部３１、及びＲＳ訂正部３３−１〜３３−８により訂正された読み出しデータＤ（１，１）〜Ｄ（８，１０２４）は、誤り訂正回路１１から外部に出力される。
【００５７】
［データ読み出し動作］
次に、データ読み出し動作における誤り訂正回路１１の誤り検出動作及び誤り訂正動作について、図１２乃至図１５を参照して説明する。
【００５８】
誤り訂正動作に先立って、半導体メモリ１２内の１個のメモリブロックＢＬＫに格納されたブロックデータ（図４に示すデータ）が、一時記憶回路２０に送られる。一時記憶回路２０は、図４に示すブロックデータを格納する。
【００５９】
まず、ＥＣＣ訂正部３１による１回目の誤り訂正動作が行われる。すなわち、ページ１のデータが、一時記憶回路２０からＥＣＣ訂正部３１に送られる。ＥＣＣ訂正部３１は、ページ１に含まれる誤り訂正符号（ＥＣＣ）を用いて、同じくページ１に含まれる第１単位データＵＤａ１内の誤りを訂正する。同様に、ＥＣＣ訂正部３１は、ページ２〜ページ１０２８にそれぞれ含まれる第１単位データＵＤａ１〜ＵＤａ１０２８内の誤りを訂正する。ＥＣＣ訂正部３１により訂正された第１の訂正済データＤＣ１は、一時記憶回路２０に送られる。一時記憶回路２０は、格納されたデータのうち、第１の訂正済データＤＣ１に対応するデータを更新する。
【００６０】
続いて、ＣＲＣ検出部３２による１回目の誤り検出動作が行われる。すなわち、ＣＲＣ検出部３２−１〜３２−８にはそれぞれ、８個の読み出しデータＤ（１，１）〜Ｄ（８，１）と、これらに対応して生成された８個のＣＲＣとが、一時記憶回路２０から送られる。ＣＲＣ検出部３２−１〜３２−８はそれぞれ、８個のＣＲＣを用いて、読み出しデータＤ（１，１）〜Ｄ（８，１）内の誤りを検出する。そして、ＣＲＣ検出部３２−１〜３２−８はそれぞれ、誤り検出の結果、どの読み出しデータＤに誤りが存在するかを示す誤り情報Ｓ１〜Ｓ８を生成する。この誤り情報Ｓ１〜Ｓ８はそれぞれ、ＲＳ訂正部３３−１〜３３−８に送られる。同様に、ＣＲＣ検出部３２−１〜３２−８は、ページ２〜ページ１０２８についても、誤りを検出する。本実施形態では、ＣＲＣ検出部３２−１〜３２−８は、誤り検出動作を並行して行っている。このように、ＣＲＣ検出部３２−１〜３２−８を並行して動作させることによって、処理時間を短縮させることができる。
【００６１】
図１２は、ＥＣＣ訂正部３１による１回目の誤り訂正後のブロックデータの一例を示す図である。斜線は、ＥＣＣ訂正部３１による１回目の誤り訂正によっても訂正不能であるため、ＣＲＣ検出部３２−１〜３２−８により誤りが検出されたデータを示している。
【００６２】
なお、ＥＣＣ訂正部３１による１回目の誤り訂正の結果、全ての読み出しデータに誤りが存在しない場合は、誤り訂正動作はここで終了する。すなわち、後述するＲＳ訂正部３３による誤り訂正は行われない。例えば、ＲＳ訂正部３３は電源回路（図示せず）からの電源供給の停止、或いはクロック回路（図示せず）からのクロック信号の供給の停止等によって、誤り訂正動作を停止する。これにより、誤りが少ない場合のデータ読み出し時間を短縮することができる。また、ＲＳ訂正部３３による誤り訂正動作が行われないため、消費電力を低減することができる。
【００６３】
続いて、ＲＳ訂正部３３による１回目の誤り訂正動作が行われる。すなわち、行方向に配列された１０２４個の読み出しデータＤ（１，１）〜Ｄ（１，１０２４）からなる第２単位データＵＤｂ１と、これらに対応して生成された４個のＲＳ（１，１）〜ＲＳ（１，４）とが、一時記憶回路２０からＲＳ訂正部３３−１に送られる。ＲＳ訂正部３３−１は、ＲＳ（１，１）〜ＲＳ（１，４）を用いて、読み出しデータＤ（１，１）〜Ｄ（１，１０２４）内の誤りを訂正する。２〜８行にそれぞれ対応するＲＳ訂正部３３−２〜３３−８についても同様である。
【００６４】
本実施形態では、ＲＳ訂正部３３−１〜３３−８は、訂正動作を並行して行っている。このように、ＲＳ訂正部３３−１〜３３−８を並行して動作させることによって、処理時間を短縮させることができる。ＲＳ訂正部３３−１〜３３−８により訂正された第２の訂正済データＤＣ２は、一時記憶回路２０に送られる。一時記憶回路２０は、格納されたデータのうち、第２の訂正済データＤＣ２に対応するデータを更新する。
【００６５】
図１３は、ＲＳ訂正部３３による１回目の誤り訂正後のブロックデータの一例を示す図である。図１３に示すように、読み出しデータＤ（１，２）及び（１，６）内の誤りが、ＲＳ訂正部３３−１により訂正されている。また、読み出しデータＤ（８，１）及び（８，１０２２）内の誤りが、ＲＳ訂正部３３−８により訂正されている。
【００６６】
なお、前述したように、ＲＳ訂正部３３による誤り訂正に先立って、ＣＲＣ検出部３２を用いて誤りが存在する読み出しデータの位置を特定している。よって、ＲＳ訂正部３３は、誤りが検出された読み出しデータのみに対して誤り訂正を行えばよい。これにより、ＲＳ訂正部３３による訂正時間を短縮することができ、また消費電力を低減することができる。
【００６７】
続いて、ページ１〜ページ１０２８に対して、ＥＣＣ訂正部３１による２回目の誤り訂正が行われる。この誤り訂正動作は、前述したＥＣＣ訂正部３１による１回目の誤り訂正と同じである。図１４は、ＥＣＣ訂正部３１による２回目の誤り訂正後のブロックデータの一例を示す図である。図１４に示すように、読み出しデータＤ（２，１）、（３，２）、及び（２，１０２２）内の誤りが、ＥＣＣ訂正部３１により訂正されている。
【００６８】
続いて、ＣＲＣ検出部３２−１〜３２−８は、全ての読み出しデータＤ及び誤り訂正符号（ＲＳ）の誤りを検出する。この検出動作は、前述したＣＲＣ検出部３２−１〜３２−８による１回目の誤り検出動作と同じである。続いて、第２単位データＵＤｂ１〜ＵＤｂ８に対してそれぞれ、ＲＳ訂正部３３−１〜３３−８による２回目の誤り訂正が行われる。この誤り訂正動作は、前述したＲＳ訂正部３３−１〜３３−８による１回目の誤り訂正と同じである。
【００６９】
図１５は、ＲＳ訂正部３３による２回目の誤り訂正後のブロックデータの一例を示す図である。図１５に示すように、読み出しデータＤ（２，５）内の誤りが、ＲＳ訂正部３３−２により訂正されている。また、読み出しデータＤ（３，４）、（３，７）、及び（３，１０２３）内の誤りが、ＲＳ訂正部３３−３により訂正されている。これにより、読み出しデータＤ（１，１）〜Ｄ（８，１０２４）の誤りが全て訂正されたことになる。
【００７０】
その後、誤りが全て訂正された読み出しデータＤ（１，１）〜Ｄ（８，１０２４）が、一時記憶回路２０から外部に出力される。
【００７１】
図１６は、半導体メモリ１２にデータを書き込んでからの経過時間と、必要訂正能力との関係を示す図である。図１６に示すように、経過時間が長くなると、半導体メモリ１２に書き込まれたデータのうち誤りの数が増加する。そこで、誤りの数の増加に合わせて誤り訂正能力を変化させる。そして、過剰または不十分な誤り訂正能力が使用されないように、第１の誤り訂正部（ＥＣＣ訂正部）３１及び第２の誤り訂正部（ＲＳ訂正部）３３の誤り訂正能力が決定される。具体的には、経過時間が短い間は、第１の誤り訂正部３１のみによって誤り訂正ができるとともに、経過時間が所定時間（誤り数が急激に増加する時間）を過ぎた後は第１の誤り訂正部３１及び第２の誤り訂正部３３によって誤りが訂正できるように、第１の誤り訂正部３１及び第２の誤り訂正部３３の誤り訂正能力が決定される。
【００７２】
以上詳述したように本実施形態によれば、まず、第１の誤り訂正符合（ＥＣＣ）を用いて誤り訂正をし、この訂正結果を、第２の誤り訂正符号（ＲＳ）を用いてさらに誤り訂正することができる。従って、第１の誤り訂正符合及び第２の誤り訂正符号の訂正能力を低くした場合でも、所望の訂正能力を確保することができ、また、回路規模を低減することができる。
【００７３】
また、ＥＣＣ訂正部３１による１回目の誤り訂正の結果、全ての読み出しデータに誤りが存在しない場合は、ＲＳ訂正部３３による誤り訂正は行われない。これにより、誤りが少ない場合のデータ読み出し時間を短縮することができる。すなわち、誤りが少ない場合のデータ読み出し時間を短縮と、誤りが多い場合の高い訂正能力との両立が可能となる。さらに、ＲＳ訂正部３３の動作を停止することにより、消費電力を低減することができる。
【００７４】
また、第１の誤り訂正符合（ＥＣＣ）を用いて列方向のデータの誤りを訂正し、一方、第２の誤り訂正符号（ＲＳ）を用いて行方向のデータの誤りを訂正している。よって、半導体メモリ１２としてＮＡＮＤ型フラッシュメモリを用いた場合には、メモリブロック内の全ページに跨る誤り訂正が可能となる。さらに、記憶されるデータの位置に起因して誤り発生確率が大きく異なるような半導体メモリに対しては、誤り発生確率が大きい領域を何度も誤り訂正することができるため、本実施形態は特に有効である。
【００７５】
また、ＣＲＣ検出部３２を用いて誤りが存在する読み出しデータの位置を特定できるため、ＲＳ訂正部３３は、誤りが検出された読み出しデータの誤り訂正を行えばよい。これにより、ＲＳ訂正部３３による処理時間を短縮することができる。
【００７６】
また、誤り検出符号（ＣＲＣ）により誤りが存在するデータＤの位置が検出できるため、ＲＳ訂正部３３は、誤り検出を行う必要がない。これにより、全てのＲＳ（本実施形態では、４個のＲＳ）を誤り訂正に使用することができる。
【００７７】
その他、本発明の思想の範疇において、当業者であれば、各種の変更例及び修正例に想到し得るものであり、それら変更例及び修正例についても本発明の範囲に属するものと了解される。
【図面の簡単な説明】
【００７８】
【図１】本発明の実施形態に係る半導体記憶装置１０を概略的に示すブロック図。
【図２】ＮＡＮＤ型フラッシュメモリに含まれるメモリブロックＢＬＫの構成を示す等価回路図。
【図３】誤り訂正回路１１のデータ書き込みに関する主要部を示すブロック図。
【図４】誤り訂正回路１１から半導体メモリ１２へ転送されるデータのフォーマットを示す図。
【図５】書き込み時における一時記憶回路２０内のデータ構造を示す図。
【図６】誤り訂正回路１１の誤り検出符号生成動作及び誤り訂正符号生成動作を説明する図。
【図７】図６に続く、誤り検出符号生成動作及び誤り訂正符号生成動作を説明する図。
【図８】図７に続く、誤り検出符号生成動作及び誤り訂正符号生成動作を説明する図。
【図９】図８に続く、誤り検出符号生成動作及び誤り訂正符号生成動作を説明する図。
【図１０】図９に続く、誤り検出符号生成動作及び誤り訂正符号生成動作を説明する図。
【図１１】誤り訂正回路１１のデータ読み出しに関する主要部を示すブロック図。
【図１２】ＥＣＣ訂正部３１による１回目の誤り訂正後のブロックデータを示す図。
【図１３】ＲＳ訂正部３３による１回目の誤り訂正後のブロックデータを示す図。
【図１４】ＥＣＣ訂正部３１による２回目の誤り訂正後のブロックデータを示す図。
【図１５】ＲＳ訂正部３３による２回目の誤り訂正後のブロックデータを示す図。
【図１６】書き込みからの経過時間と必要訂正能力との関係を示す図。
【符号の説明】
【００７９】
ＭＴ…メモリセルトランジスタ、ＳＴ１，ＳＴ２…選択トランジスタ、ＳＧＤ，ＳＧＳ…選択ゲート線、ＳＬ…ソース線、ＷＬ…ワード線、ＢＬ…ビット線、１０…半導体記憶装置、１１…誤り訂正回路、１２…半導体メモリ、２０…一時記憶回路、２１…誤り検出符号生成部（ＣＲＣ生成部）、２２…第１の誤り訂正符号生成部（ＥＣＣ生成部）、２３…第２の誤り訂正符号生成部（ＲＳ生成部）、３１…第１の誤り訂正部（ＥＣＣ訂正部）、３２…誤り検出部（ＣＲＣ検出部）、３３…第２の誤り訂正部（ＲＳ訂正部）。
【図１】
0004538034.tif 000002
【図２】
0004538034.tif 000003
【図３】
0004538034.tif 000004
【図４】
0004538034.tif 000005
【図５】
0004538034.tif 000006
【図６】
0004538034.tif 000007
【図７】
0004538034.tif 000008
【図８】
0004538034.tif 000009
【図９】
0004538034.tif 000010
【図１０】
0004538034.tif 000011
【図１１】
0004538034.tif 000012
【図１２】
0004538034.tif 000013
【図１３】
0004538034.tif 000014
【図１４】
0004538034.tif 000015
【図１５】
0004538034.tif 000016
【図１６】
0004538034.tif 000017