(57)【要約】【課題】ＥＣＣ動作時におけるサイクル数及びレジスタ数の増加を抑制し高速動作を可能とした半導体記憶装置を提供する。【解決手段】パリティ／シンドロームジェネレータ３１により読み出しデータに対して、符号生成及び誤り検出を行いパリティビット及びシンドロームを生成し、パリティ／シンドロームレジスタ３９に保持する。シンドロームデコーダ３２は、シンドロームをデコードし読み出しデータ中の誤りデータを特定するためのエラー信号を出力する。誤り検出ジェネレータ３３は、パリティビットに基づいて誤り検出信号を生成する。誤り検出信号に基づいて、アドレス／コマンドジェネレータ２２により誤りデータが記憶されたメモリセルのアドレスとライトコマンドが生成され、前記アドレスはフェイルアドレスレジスタ４０に保持される。そして、エラー信号に基づいて、データ訂正回路３６により読み出しデータ中の誤りデータが訂正される。【選択図】      図６
2008165879.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶するメモリセルと、
前記メモリセルから読み出した読み出しデータに対してパリティビットを生成すると共に、誤り検出を行い、前記読み出しデータ中に誤りデータを検出したとき、前記誤りデータに基づいてシンドロームを生成するパリティ／シンドロームジェネレータと、
前記パリティ／シンドロームジェネレータにより生成された前記パリティビット及び前記シンドロームを保持するパリティ／シンドロームレジスタと、
前記パリティ／シンドロームレジスタに保持された前記シンドロームをデコードし、前記読み出しデータ中の前記誤りデータを特定するためのエラー信号を出力するシンドロームデコーダと、
前記パリティ／シンドロームジェネレータから出力された前記パリティビットに基づいて、誤り検出信号を生成する誤り検出ジェネレータと、
前記誤り検出ジェネレータにより生成された前記誤り検出信号に基づいて、前記誤りデータが記憶されたメモリセルのアドレスとライトコマンドを生成するアドレス／コマンドジェネレータと、
前記アドレス／コマンドジェネレータにより生成された前記アドレスを保持するフェイルアドレスレジスタと、
前記シンドロームデコーダから出力された前記エラー信号に基づいて、前記読み出しデータ中の前記誤りデータを訂正するデータ訂正回路と、
を具備することを特徴とする半導体記憶装置。
【請求項２】
前記メモリセルに記憶されたデータの保持動作を行うデータ保持モードに入るとき、前記パリティ／シンドロームジェネレータは、前記メモリセルから読み出した前記読み出しデータに対して前記パリティビットを生成し、前記パリティ／シンドロームレジスタは前記パリティビットを記憶する第１動作を行い、
前記データ保持モードから通常動作モードに復帰する前に、前記パリティ／シンドロームジェネレータは、前記パリティビットが付加された前記読み出しデータに対して誤り検出を行い、検出した誤りデータに応じたシンドロームを生成し、前記データ訂正回路は、前記シンドロームを用いて前記読み出しデータ中の前記誤りデータを訂正する第２動作を行い、
前記第２動作の期間中は、ページ動作で読み出し及び書き込みを行うと共に、前記読み出しデータに対する誤り検出において前記誤りデータが検出されたとき、前記シンドロームを前記パリティ／シンドロームレジスタに保持し、前記誤りデータに対応するアドレスを前記フェイルアドレスレジスタに保持し、全てのページ内のリード動作が終了した後に、前記データ訂正回路により前記誤りデータを訂正するための書き込み動作を行うことを特徴とする請求項１に記載の半導体記憶装置。
【請求項３】
前記メモリセルに記憶されたデータの保持動作を行うデータ保持モードに入るとき、前記パリティ／シンドロームジェネレータは、前記メモリセルから読み出した前記読み出しデータに対して前記パリティビットを生成し、前記パリティ／シンドロームレジスタは前記パリティビットを記憶する第１動作を行い、
前記第１動作の期間中は、ページ動作で読み出し及び書き込みを行うと共に、前記誤りデータに対応するアドレスを前記フェイルアドレスレジスタに保持し、後のクロックサイクルで前記データ訂正回路により前記パリティ／シンドロームレジスタに保持された前記パリティビットに基づいて、前記フェイルアドレスレジスタに保持されたアドレスに対応するメモリセルに書き込み動作を行うことを特徴とする請求項１に記載の半導体記憶装置。
【請求項４】
前記パリティ／シンドロームレジスタ及び前記フェイルアドレスレジスタがそれぞれ保持するレジスタの記憶容量の最大値は、ページ長分の記憶容量よりも常に小さいことを特徴とする請求項１乃至３のいずれかに記載の半導体記憶装置。
【請求項５】
前記パリティ／シンドロームレジスタ及び前記フェイルアドレスレジスタは、それぞれシフトレジスタで構成されていることを特徴とする請求項１乃至４のいずれかに記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＥＣＣ(error checking and correction)機能を用いたデータ保持モードを持つ半導体記憶装置に関するものであり、例えばダイナミック型ランダムアクセスメモリ（ＤＲＡＭ）に関するものである。
【背景技術】
【０００２】
ＥＣＣ機能を内蔵したメモリマクロでは、ＥＣＣ機能はデータ保持モードとの併用を想定しており、データ保持モードに入る直前に符号生成動作、データ保持モードから抜ける直前に誤り訂正動作を行う。その詳細は、非特許文献１に記載されている。
【０００３】
この従来の方式を用いると、誤り訂正を行う場合、リードコマンドによって出力されたデータに対して、次のサイクルでそのデータを取り込み、そのデータに対して“誤り検出”→“訂正データ生成”と、“誤り検出”→”誤りデータのあるアドレス及びライトコマンド生成”を並行して1サイクルで行わなければならず、それぞれの動作が高速な動作周波数に対応できなくなる。例えば、情報長１２８ビット、検査符号（パリティビット）長８ビット、すなわち符号長１３６ビットの場合、検査符号生成、誤り検出を行う回路や訂正データ生成回路は共に、論理段数にして６〜８段となる。したがって、従来の方式を用いたメモリマクロでは、１サイクルで最大１６段の論理段数を経ることになる。このため、トランジスタがワースト条件の場合や電源電圧が低電圧の場合、さらには信号の配線遅延なども鑑みると高速動作は困難になってくる。
【非特許文献１】Takeshi Nagai, et al., “A 65nm Low-Power Embedded DRAM with Extended Data-Retention Sleep Mode”, ISSCC Digest of Technical Papers, pp.164-165, 645, Feb., 2006.
【発明の開示】
【発明が解決しようとする課題】
【０００４】
この発明は、ＥＣＣ動作時におけるサイクル数及びレジスタ数の増加を抑制し高速動作を可能とした半導体記憶装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
この発明の第１実施形態の半導体記憶装置は、データを記憶するメモリセルと、前記メモリセルから読み出した読み出しデータに対してパリティビットを生成すると共に、誤り検出を行い、前記読み出しデータ中に誤りデータを検出したとき、前記誤りデータに基づいてシンドロームを生成するパリティ／シンドロームジェネレータと、前記パリティ／シンドロームジェネレータにより生成された前記パリティビット及び前記シンドロームを保持するパリティ／シンドロームレジスタと、前記パリティ／シンドロームレジスタに保持された前記シンドロームをデコードし、前記読み出しデータ中の前記誤りデータを特定するためのエラー信号を出力するシンドロームデコーダと、前記パリティ／シンドロームジェネレータから出力された前記パリティビットに基づいて、誤り検出信号を生成する誤り検出ジェネレータと、前記誤り検出ジェネレータにより生成された前記誤り検出信号に基づいて、前記誤りデータが記憶されたメモリセルのアドレスとライトコマンドを生成するアドレス／コマンドジェネレータと、前記アドレス／コマンドジェネレータにより生成された前記アドレスを保持するフェイルアドレスレジスタと、前記シンドロームデコーダから出力された前記エラー信号に基づいて、前記読み出しデータ中の前記誤りデータを訂正するデータ訂正回路とを具備することを特徴とする。
【０００６】
この発明の第２実施形態の半導体記憶装置は、前記第１実施形態の構成に加えて、前記メモリセルに記憶されたデータの保持動作を行うデータ保持モードに入るとき、前記パリティ／シンドロームジェネレータは、前記メモリセルから読み出した前記読み出しデータに対して前記パリティビットを生成し、前記パリティ／シンドロームレジスタは前記パリティビットを記憶する第１動作を行い、前記データ保持モードから通常動作モードに復帰する前に、前記パリティ／シンドロームジェネレータは、前記パリティビットが付加された前記読み出しデータに対して誤り検出を行い、検出した誤りデータに応じたシンドロームを生成し、前記データ訂正回路は、前記シンドロームを用いて前記読み出しデータ中の前記誤りデータを訂正する第２動作を行い、前記第２動作の期間中は、ページ動作で読み出し及び書き込みを行うと共に、前記読み出しデータに対する誤り検出において前記誤りデータが検出されたとき、前記シンドロームを前記パリティ／シンドロームレジスタに保持し、前記誤りデータに対応するアドレスを前記フェイルアドレスレジスタに保持し、全てのページ内のリード動作が終了した後に、前記データ訂正回路により前記誤りデータを訂正するための書き込み動作を行うことを特徴とする。
【０００７】
この発明の第３実施形態の半導体記憶装置は、前記第１実施形態の構成に加えて、前記メモリセルに記憶されたデータの保持動作を行うデータ保持モードに入るとき、前記パリティ／シンドロームジェネレータは、前記メモリセルから読み出した前記読み出しデータに対して前記パリティビットを生成し、前記パリティ／シンドロームレジスタは前記パリティビットを記憶する第１動作を行い、前記第１動作の期間中は、ページ動作で読み出し及び書き込みを行うと共に、前記誤りデータに対応するアドレスを前記フェイルアドレスレジスタに保持し、後のクロックサイクルで前記データ訂正回路により前記パリティ／シンドロームレジスタに保持された前記パリティビットに基づいて、前記フェイルアドレスレジスタに保持されたアドレスに対応するメモリセルに書き込み動作を行うことを特徴とする。
【発明の効果】
【０００８】
この発明によれば、ＥＣＣ動作時におけるサイクル数及びレジスタ数の増加を抑制し高速動作を可能とした半導体記憶装置を提供することが可能である。
【発明を実施するための最良の形態】
【０００９】
この発明の実施形態を説明する前に、本発明の関連技術について説明する。
【００１０】
図１は、ＥＣＣ機能を内蔵したメモリマクロ（ＤＲＡＭ）の概略図である。
【００１１】
このＥＣＣ機能はデータ保持モードとの併用を想定しており、データ保持モードに入る（ENTRY）直前に符号生成動作を行い、データ保持モードから抜ける（EXIT）直前に誤り訂正動作を行う。その詳細は、非特許文献１に記載されている。
【００１２】
このメモリマクロは、データを保持するセルアレイ１と、セルアレイ１からデータを読み出して符号生成および誤り訂正を行い、それによって生成されたデータをセルアレイ１に書き込むＥＣＣ回路２と、外部とのデータの入出力を行うＩ／Ｏ回路３と、それらをコントロールする制御回路４からなる。前記セルアレイ１は、複数のメモリセルが例えばアレイ状に配列され、各メモリセルにデータが記録保持される。
【００１３】
通常のメモリ動作としては、外部からリードコマンドとリードアドレスを入力することで、所望のアドレスからデータを読み出すことができ、またライトコマンドとアドレスとライトデータを入力することで所望のアドレスにデータを書き込むことができる。ＥＣＣ動作時には、外部からＥＣＣコマンドを入力することで、ＥＣＣ回路２はセルアレイ１からデータを読み出し、そのデータに対して符号生成もしくは誤り訂正を行い、そのデータをセルアレイ１に書き込むことができる。ＥＣＣ動作時にアクセスするセルアレイのアドレスは、外部から入力する構成の場合もあるし、メモリマクロ内部で自動的に生成する構成の場合も考えられる。以降は、メモリマクロ内で自動的にアドレスを生成する場合を例として説明する。
【００１４】
図２は、前述したＥＣＣ動作を行うために必要な回路構成を示したものである。まず、これらの回路は、セルアレイから読み出したデータを保持するデータラッチ（read data latch）１１と、ＥＣＣ動作を行うためにその読み出しデータを保持するデータラッチ（ECC latch）１２と、セルアレイに書き込むデータを保持するデータラッチ（write data latch）１３と、セルアレイに書き込むデータを指定するデータマスクラッチ（write musk latch）１４を含む。これらは、データバスのビット幅に応じて、並列に複数個で構成する。
【００１５】
さらに、ＥＣＣコマンドを保持するラッチであるコマンドラッチ（CG command latch）１５、コマンドラッチ（EC command latch）１６を含み、これらはそれぞれ、符号生成を行うコマンド、および誤り訂正を行うコマンドを保持する。また、リードコマンドを保持するコマンドラッチ（read command latch）１７と、ライトコマンドを保持するコマンドラッチ（write command latch）１８と、カラムアドレスを保持するアドレスラッチ（column address latch）１９と、ロウアドレスを保持するアドレスラッチ（row address latch）２０を含む。これらのアドレスラッチは、アドレスのビット数分だけの数で構成される。
【００１６】
さらに、符号生成および誤り訂正を行うＥＣＣ回路（ECC circuit）２１と、ＥＣＣコマンドに応じて、リードコマンド、ライトコマンド、アドレスを生成するコマンド／アドレスジェネレータ（command/address generator）２２と、前記コマンド／アドレスジェネレータ２２の動作開始を制御するＥＣＣコマンドコントローラ（ECC command controller）２３と、ＥＣＣ時と通常のライト時でデータバスを切り替えるセレクタ（ECC/normal data selector）２４と、ＥＣＣ時と通常のリードおよびライト時でそれぞれのコマンドおよびアドレスのバスを切り替えるセレクタ（command/address selector）２５を含む。また、前記の回路をクロックに同期して動作させるためのクロック信号を生成するクロックジェネレータ（command/address CLOCK generator）２６およびクロックジェネレータ（READ/WRITE/ECC CLOCK generator）２７を含む。
【００１７】
以下に、図２に示した回路における動作の概要を説明する。クロックジェネレータ２６は、外部クロック入力である信号CLKINを受けてクロックイネーブル信号ＣＫＥが“１”の時、リードライトコマンドをラッチするためのクロックCLKFCとCLKFRを生成する。クロックCLKFCは、コマンド／アドレスセレクタ２５から出力されるリードライトコマンドおよびカラムアドレスを保持するラッチ１７〜１９に入力される。ラッチ１７〜１９は、クロックCLKFCに同期してコマンドおよびアドレスをラッチする。また、符号生成のコマンドであるＣＧコマンド（CG command）と、誤り訂正のコマンドであるＥＣコマンド（EC command）も、クロックCLKFCに同期してラッチされる。
【００１８】
クロックCLKFRは、ロウアドレスを保持するラッチ２０に入力される。ラッチ２０は、クロックCLKFRに同期してロウアドレスをラッチする。また、ここでは図示していないが、クロックCLKFRは、ロウ系のコマンド、例えばバンクアクティブコマンドやバンクプリチャージコマンドを保持するラッチにも入力される。通常のライトリード操作の時はもちろん、ＥＣＣコマンド実行時にもワード線をアクティブにするコマンドやプリチャージを行うコマンドが実行されるが、ここでは詳細は省略する。
【００１９】
クロックジェネレータ２７は、コマンド／アドレスセレクタ２５から出力されたリードコマンドに応じて、内部でセルアレイからのリードデータを保持するためのラッチ１１に入力されるクロックCLKRDと、ライトコマンドに応じて、セルアレイに書き込むデータと、データを書き込むセルを選択するデータマスク信号を保持するラッチ１３、１４にそれぞれ入力されるクロックCLKWDと、前記リードデータとＣＧコマンド及びＥＣコマンドに応じて、ＥＣＣ動作を行うためにセルアレイから読み出したデータを保持するラッチ１２に入力されるクロックCLKECCとを生成する。
【００２０】
まず、クロックに同期して、ＣＧコマンド（CG command）＝“１”もしくはＥＣコマンド（EC command）＝“１”を入力することによって、信号CGCMD＝“１”もしくは信号ECCMD＝“１”が保持され、以降の動作はＥＣＣ動作として設定される。通常のリードおよびライト動作時は、ＥＣＣ／ノーマルデータセレクタ２４およびコマンド／アドレスセレクタ２５において、データおよびコマンド、アドレスに関してノーマルバスが有効になるが、これ以降は、前記のいずれかの設定がされている状態に関して説明する。
【００２１】
信号CGCMDもしくは信号ECCMDが“１”に設定された状態でクロック信号に同期してＥＣＣコマンドイネーブル（ECC command enable）＝“１”を入力することで、信号ＥＮＢにクロック信号１サイクル分が出力されて、コマンド／アドレスジェネレータ２２が動作を開始する。まず、コマンド／アドレスジェネレータ２２は、クロックに同期してリードコマンドECREADとリードアドレスERA（row）、ECA（column）を生成する。コマンド／アドレスセレクタ２５は、信号CGCMD、ECCMDの状態に応じてノーマルバスとＥＣＣバスの選択を行うが、ここではＥＣＣが選択されているので、上記信号は信号ＲＥＡＤ、ＲＡｘ、ＣＡｘとして出力される。信号ＲＥＡＤ、ＲＡｘ、ＣＡｘは、クロックCLKFCおよびCLKFRに同期してラッチ（read command latch）１７、ラッチ（column address latch）１９、ラッチ（row address latch）２０に保持され、信号ＲＣ、ＣＡ、ＲＡとして出力される。また、クロックジェネレータ２７は、信号ＲＥＡＤを受けて、リードレイテンシに応じてクロックCLKRDを生成し、その１サイクル後にクロックCLKECCを生成し、さらにその1サイクル後にクロックCLKWDを生成する。
【００２２】
前記コマンド、アドレスに応じてセルアレイから読み出されたデータは、クロックCLKRDに同期してラッチ（read data latch）１１に保持され、信号ＤＯＵＴとして出力される。信号ＤＯＵＴのデータは、クロックCLKECCに同期してＥＣＣラッチ１２に保持され、信号RDATAとして出力される。ＥＣＣ回路２１は、信号RDATAを受けて、信号CGCMD＝“１”ならば符号生成を、信号ECCMD＝“１”ならば誤り訂正を行い、その結果を信号EDINに出力する。また、書き込みデータに応じて、書き込み対象のセルを選択するデータマスク信号EMDINも出力する。ＥＣＣノーマルデータセレクタ２４は、信号CGCMD、ECCMDの状態に応じてノーマルバスとＥＣＣバスの選択を行うが、ここではＥＣＣが選択されているので、信号EDINおよびEDMINが信号DINおよびDMINとして出力される。
【００２３】
次に、コマンド／アドレスジェネレータ２２は、ライトコマンドECWRITEを生成する。このライトコマンドECWRITEはリードコマンドと同様に信号WRITEとして出力され、信号WRITEを受けたクロックジェネレータ２７はクロックCLKECCの1サイクル後にクロックCLKWDを生成する。
【００２４】
信号DIN、DMINは、クロックCLKWDに同期してラッチ（write data latch）１３およびラッチ（write musk latch）１４に保持される。保持された信号DIN、DMINは、信号ＷＤ、ＤＭとして出力され、これら信号DIN、DMINを元にセルアレイにデータが書き込まれる。
【００２５】
ところで、誤り訂正は、データに誤りがあったときのみ行うようにすることもできる。その場合は、ＥＣＣ回路２１から出力される誤り検出信号DETECTをコマンド／アドレスジェネレータ２２が受けて、ライトコマンドを発行するように構成することもできる。この場合、誤り検出信号DETECTが生成されなければライト動作は省略される。
【００２６】
非特許文献１にもあるように、通常、メモリセルにアクセスするアドレッシングとして使用されるものには、ＲＦＳ（Row First Scan）とＣＦＳ（Column First Scan）がある。ＲＦＳでは、カラムアドレスをインクリメントするたびにロウアドレスを活性化してカラムアクセスするまでの時間ｔＲＣＤや、ライトコマンドからロウプリチャージコマンドまでの時間ｔＷＲ、ロウプリチャージコマンドから次のロウアクティブコマンドまでの時間ｔＲＰが必要になり、遷移時間がとても長くなる。これに対して、ＣＦＳではそれらの時間はページ動作ごとにのみ必要になるので、遷移時間は短縮される。ただし、ＣＦＳではリフレッシュ時間の制約があり、時間ｔＲＥＦの間に全ロウがアクセスできない場合は別途リフレッシュコマンドを入れる必要がある。
【００２７】
また、救済効率の議論からして、ページ動作中、数回の誤り訂正を行えるようにしておけば、十分な救済効率が得られるということから、１ページ動作につき救済する回数をページ長以下に設定することで更なる遷移時間の短縮を実現している。
【００２８】
図３は、イグジット（EXIT）動作時のＣＦＳモードにおいて、誤りがあったアドレスに関してのみ誤り訂正を行う場合の動作波形例である。この例では、リードレイテンシ３、ページ長１２８の場合を想定しており、クロックＣＬＫｐ、ロウアドレスＲＥｃ、カラムアドレスＣＥｐ、出力データDIN/DMIN、入力データＤＯＵＴの動作のみ図示している。ロウアドレスＲＥｃが活性化された後、カラムアドレスＣＥｐが０から１２７まで連続してリードコマンドが入力されている。ここで、リードレイテンシは３なので、カラムアドレス０のリードコマンドに対するデータＱ０は３サイクル後に出力される。データＱ０に対するＥＣＣ回路２１の出力信号DIN/DMINは、その１サイクル後に出力される。もし、このカラムアドレスに誤りがあれば、誤り訂正を実行して次のサイクルにライトコマンドを生成し、正しいデータをメモリセルに書き込む。誤りがなければ、次のカラムアドレスのリード動作へと移る。図３は、カラムアドレス２と４に誤りがあった場合の例である。
【００２９】
ところで、図２に示したＥＣＣ回路を含む回路をさらに詳細に示したものが図５である。ここでは、情報長１２８ビット、検査符号（パリティビット）長８ビット、あわせて符号長１３６ビットの場合を想定している。リードコマンドによって読み出された信号ＤＯＵＴが次のサイクルでＥＣＣラッチ１２に取り込まれ、このデータに対して、パリティ／シンドロームジェネレータ３１において符号生成及び誤り検出が実行される。符号生成動作時は、ここで生成された８ビットのパリティビットWPARIをメモリセルに書き込む。誤り検出時では、信号ＤＯＵＴに誤りがある場合に出力される復号（シンドローム）であるパリティビットWPARIは全て０にならない。この場合、パリティビットWPARIの情報を用いて、シンドロームデコーダ３２により１３６ビットのデータのうち、どのビットに誤りがあるのかが特定される。その情報を元に、ＥＣＣラッチ１２に保持されたデータ中で、誤りのあるデータのみを反転させてメモリセルに書き込むことで、誤り訂正を完了させる。
【００３０】
また、パリティビットWPARIが０でない場合は、誤り検出ジェネレータ３３にて、誤りがあったことを示す誤り検出信号DETECTを生成する。誤り検出信号DETECTを受け取ったアドレス／コマンドジェネレータ２２は、誤り訂正のためにライトコマンドとライトアドレスを生成する。
【００３１】
ここで、第１遅延回路３４及び第２遅延回路３５は、誤り訂正のための信号と、ＥＣＣラッチ１２に取り込んだデータに関して、データ訂正回路３６までの論理段数をそろえるために挿入されている。
【００３２】
また、第２遅延回路３５の入力部に設置されたセレクタ３７は、符号生成時と誤り検出時で、メモリセルに書き込むデータを決定するための信号WDATAに出力されるパリティ部にあたるデータを選択するのに用いられている。符号生成時は生成されたパリティビットWPARIを信号WDATAに出力し、誤り訂正時はメモリセルから読み出されたデータのうちのパリティビットPARIを信号WDATAに出力する。セレクタ３８は、メモリセルから読み出されたデータDATAを信号WDATAに出力する際に、セレクタ３７に対して論理段数をそろえるために挿入されている。セレクタ３８の出力は、常にデータDATAである。
【００３３】
図４は、ＣＦＳモードでの符号生成時の動作波形例である。図３の場合と同様に、リードレイテンシ３、ページ長１２８の場合を想定している。ロウアドレスＲＥcが活性化された後、カラムアドレス０でリードコマンドが発効される。リードレイテンシ３により、３サイクル後にデータＱ０が読み出される。これに対するＥＣＣ回路の出力信号DIN/DMINがその１サイクル後に出力され、メモリセルアレイに書き込まれる。図４に示すように、リードコマンド（Ｒ）を４回、ライトコマンド（Ｗ）を４回繰り返し、必要なアドレスも生成することで、レジスタを追加することなく、シームレスな動作を実現している。誤り訂正時にも同様の動作で行うことができるが、遷移時間短縮のために図３に示したような動作を行っている。
【００３４】
この従来の方式を用いると、誤り訂正を行う場合、リードコマンドによって出力されたデータに対して、次のサイクルでそのデータを取り込み、そのデータに対して“誤り検出”→“訂正データ生成”と、誤り検出”→“誤りデータ”のあるアドレス及びライトコマンド生成”を並行して1サイクルで行わなければならず、それぞれの動作が高速な動作周波数に対応できなくなる。例えば、情報長１２８ビット、検査符号（パリティビット）長８ビット、すなわち符号長１３６ビットの場合、検査符号生成及び誤り検出を行う回路やデータ訂正回路は共に、論理段数にして６〜８段となる。したがって、１サイクルで最大１６段の論理段数を経ることになる。トランジスタがワースト条件の場合や電源電圧が低電圧の場合、さらには信号の配線遅延なども鑑みると高速動作は困難になってくる。
【００３５】
また、図５に示した構成で図３の動作を行った場合、リードコマンド、ライトコマンド、及びアドレスはアドレス／コマンドジェネレータ２２で自動的に生成され、符号生成時にメモリセルに書き込まれるデータはパリティビットWPARIの８ビットである。つまり、パリティ／シンドロームジェネレータ３１で生成されたパリティビットWPARIは、セレクタ３７、第２遅延回路３５、データ訂正回路３６を介してセルアレイに書き込まれる。ここで、符号生成時は信号ERRORが０に固定され、データマスクは外部でパリティ部のみ外される。以上からわかるように、符号生成時は、誤り訂正動作を行わないためその分の動作時間は必要ないはずであるが、安定な回路動作を実現するために挿入された遅延回路にて動作速度は制限される。
【００３６】
前述した問題点を解決するために、この発明の実施形態では以下の方法を提案する。
【００３７】
（１）ＣＦＳモードで行うイグジット（EXIT）動作において、誤りがあったカラムアドレスとその時のシンドロームを保持するレジスタを具備し、誤り訂正とデータ書き込み動作を別のサイクルで行うことにより、高速化を実現する。ただし、それぞれのレジスタの数はページ内で誤り訂正可能な回数と同じにすることにより、面積増加を抑える。
【００３８】
（２）ＣＦＳモードで行うエントリー（ENTRY）動作において、前記回路構成を用いて動作方式を工夫することで、必要なサイクル数は従来と変更なく、更なる高速化を実現できる。
【００３９】
以下に、図面を参照してこの発明の実施形態の半導体記憶装置について説明する。半導体記憶装置としては、メモリ装置単体であってもよいし、ロジック回路とメモリ回路とが混載されたロジック混載メモリであってもよく、またメモリ回路を含むその他の装置にも本発明を適用することができる。説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【００４０】
［第１の実施形態］
図６は、この発明の第１実施形態の半導体記憶装置の回路図であり、前記問題点を解決するための回路構成を、図５に組み込んだ例を示している。
【００４１】
第１実施形態の半導体記憶装置は、パリティ／シンドロームジェネレータ（parity/syndrome generator）３１、パリティ／シンドロームレジスタ（parity/syndrome register）３９、シンドロームデコーダ（syndrome decoder）３２、誤り検出ジェネレータ（DETECT generator）３３、アドレス／コマンドジェネレータ（command/address generator）２２、フェイルアドレスレジスタ（fail address register）４０、データ訂正回路（DATA correction circuit）３６を備える。パリティ／シンドロームジェネレータ３１は、メモリセルから読み出した読み出しデータに対して、符号生成を行いパリティビットを生成すると共に、誤り検出を行い読み出しデータ中に誤りデータを検出したとき、シンドロームを生成する。パリティ／シンドロームレジスタ３９は、パリティ／シンドロームジェネレータ３１により生成されたパリティビット及びシンドロームを保持する。シンドロームデコーダ３２は、パリティ／シンドロームレジスタ３９に保持されたシンドロームをデコードし、読み出しデータ中の誤りデータを特定するためのエラー信号を出力する。誤り検出ジェネレータ３３は、パリティ／シンドロームジェネレータ３１から出力されたパリティビットに基づいて、誤り検出信号を生成する。アドレス／コマンドジェネレータ２２は、誤り検出ジェネレータにより生成された誤り検出信号に基づいて、誤りデータが記憶されたメモリセルのアドレスとライトコマンドを生成する。フェイルアドレスレジスタ４０は、アドレス／コマンドジェネレータ２２により生成されたアドレスを保持する。データ訂正回路３６は、シンドロームデコーダ３２から出力されたエラー信号に基づいて、読み出しデータ中の誤りデータを訂正する。
【００４２】
図５に示した回路構成との違いは、まず、パリティ／シンドロームジェネレータ３１とシンドロームデコーダ３２の間にパリティ／シンドロームレジスタ３９が挿入されている。パリティ／シンドロームレジスタ３９は、パリティビットWPARIと同じビット幅である８ビットの幅を持った、Npari段のシフトレジスタである。Npariの値は、１ページ動作中にNpari回だけ誤り訂正を行うことができることに対応する。パリティ／シンドロームレジスタ３９は、誤り検出動作中に、誤りが検出された場合、すなわちシンドロームが０でない場合のみ、シンドロームの値を保持する。また、アドレス／コマンドジェネレータ２２には、フェイルアドレスレジスタ４０が接続されている。フェイルアドレスレジスタ４０は、カラムアドレスのビット幅（ここでは、７ビットを想定している）と同じビット幅を持ったNpari段のシフトレジスタであり、シンドロームの値が０でない場合のみ、その時のカラムアドレスの値を保持する。
【００４３】
図７に、図６に示した第１実施形態の半導体記憶装置におけるＣＦＳモードによる誤り訂正時の動作波形例を示す。この例では、リードレイテンシ３、ページ長１２８、１ページ内で行える誤り訂正の回数を４回とする。誤り訂正の回数は、アドレス／コマンドジェネレータ２２の設定によっていかようにも設定でき、アドレス／コマンドジェネレータ２２に設定された誤り訂正可能な回数に応じて、パリティ／シンドロームレジスタ３９とフェイルアドレスレジスタ４０の段数Npariを変更することで対応できる。この例ではNpari＝４とする。
【００４４】
まず、ページ動作中は、ロウアドレスＲＥｃが固定され、カラムアドレスＣＥｐの０から１２７までをＣＦＳ（Column First Scan）モードでリードする。この際、パリティ／シンドロームジェネレータ３１により誤り検出動作を実行し、誤りが検出された場合は、そのアドレスＦＡＤＤをフェイルアドレスレジスタ４０に保持し、シンドロームWPARIをパリティ／シンドロームレジスタ３９に保持する。あるアドレスのデータに誤りがあるという情報は、従来例と同様に、誤り検出ジェネレータ３３から出力される誤り検出信号DETECTによって特定される。ここでは、リードレイテンシ３を想定しているので、リードコマンドから３サイクル後にリードデータは確定し、その１サイクル後にシンドロームWPARI及びアドレスＦＡＤＤは確定している。
【００４５】
誤りが検出されるたびに、アドレスＦＡＤＤ及びシンドロームWPARIは、次々にフェイルアドレスレジスタ４０及びパリティ／シンドロームレジスタ３９に取り込まれる。レジスタ４０及びレジスタ３９のそれぞれのビットはシフトレジスタを構成しているので、以前に取り込まれたデータはその都度、それぞれレジスタ４０及びレジスタ３９の出力側にシフトされる。ページ内で誤りが４回検出された時点で、最初に検出された誤りに関わるアドレスＦＡＤＤとシンドロームWPARIがレジスタFADDx4とレジスタWPARIx4に出力された状態になる。図７に示した例は、カラムアドレス（２），（４），（５），（７）のデータに誤りがあった場合の例であり、それぞれのカラムアドレスＦ２，Ｆ４，Ｆ５，Ｆ７及びシンドロームＰ２，Ｐ４，Ｐ５，Ｐ７がフェイルアドレスレジスタ４０及びパリティ／シンドロームレジスタ３９にそれぞれ取り込まれる様子を示している。
【００４６】
カラムアドレス１２７へのリードコマンドのアクセスが終わり、誤り検出動作が終わった時点で、誤り訂正動作に入る。誤り訂正をすべきカラムアドレスはフェイルアドレスレジスタ４０に保持されているので、フェイルアドレスレジスタ４０に保持されたカラムアドレスを用いてカラムにアクセスを行い、誤ったデータを訂正して正しいデータを書き込む。誤ったデータの訂正は、パリティ／シンドロームレジスタ３９に保持されたシンドロームデータを用いて行う。ここで、シンドロームデコーダ３２によりシンドロームをデコードすることで得られる情報は、１３６ビットの情報のうち、どのビットが誤りであるかという情報だけであり、１または０のどちらの情報が正しいかという情報は得られない。
【００４７】
図６に示した回路構成では、パリティ／シンドロームレジスタ３９及びフェイルアドレスレジスタ４０を構成するレジスタの数を減らすために、セルアレイから読み出した情報を、シンドロームのデコードで得られた情報を用いて反転させる方法で誤り訂正を行っている。このため、リードコマンドによる読み出しが再度必要になる。これらのことを鑑みて、以下に誤り訂正動作の説明を行う。
【００４８】
今、フェイルアドレスレジスタ４０の出力側にはカラムアドレス２が出力されているので、この値を用いてリードコマンドを発効する。この際に、フェイルアドレスレジスタ４０では、１回のシフト動作が行われ、フェイルアドレスレジスタ４０の出力側にはカラムアドレス４が出力された状態になる。ここで、リードレイテンシ３なので、その３サイクル後にカラムアドレス２のデータＱ２が読み出される。その１サイクル後にそのデータはＥＣＣラッチ１２に取り込まれ、信号RDATAにＲ２として出力される。この時点で、パリティ／シンドロームレジスタ３９の出力側には、カラムアドレス２で読み出したデータＱ２のシンドロームが出力されており、さらにそのシンドロームをシンドロームデコーダ３２でデコードした結果が信号ERROR＜０：１３５＞に出力されている。信号ERROR＜０：１３５＞のうち、信号RDATA＜０：１３５＞の中で誤りのあるビットのみ、値が１となっている。
【００４９】
また、信号ERROR＜０：１３５＞は書き込み時のデータマスク信号としても用いられ、誤り訂正を行いたいビットのみ、実際に書き込み動作を行う。最終的に、次のサイクルで信号ERRORと信号WDATAを用いて、データ訂正回路３６により誤り訂正されたデータがメモリセルに書き込まれる。このとき、ライトコマンドとカラムアドレスはアドレス／コマンドジェネレータ２２にて生成される。また、パリティ／シンドロームレジスタ３９では、１回のシフト動作が行われ、パリティ／シンドロームレジスタ３９の出力側にはカラムアドレス４で読み出したデータのシンドロームが出力された状態になる。
【００５０】
これらの一連の動作を４回繰り返すことで４回の誤り訂正を行い、このページの誤り訂正動作を終了する。この一連のページ動作を繰り返すことで、セルアレイの全ビットへのアクセスを行う。なお、セレクタ４１、４４は、通常動作かＥＣＣ動作かによって出力を選択する回路である。さらに、コマンドラッチ４２はセレクタ４１から出力されるコマンドを保持し、コマンドラッチ４３はセレクタ４１から出力されるアドレスを保持する。データマスクラッチ４５はセレクタ４４から出力されるデータマスクを保持し、ライトデータラッチ４６はセレクタ４４から出力されるライトデータを保持する。
【００５１】
この第１実施形態では、最後の誤り訂正動作時にリード動作が必要であったが、誤り検出時に読み出した信号RDATAを保持するレジスタを具備すれば、誤り訂正時のリード動作は省略できる。しかし、Npari＝４の場合、さらに１３６×４＝５４４ビットのレジスタが必要になり、これらレジスタを実装すると面積が増大する。また、誤り検出動作時に、どのビットをどのデータに書き変えなければならないかという情報も検出し、それを保持するレジスタを持つという方法も考えられる。しかし、この場合、回路構成が複雑になるか、もしくは高速化を実現するという意味ではあまり意味をなさないことが考えられるので、ここでは詳細は省略する。
【００５２】
この実施形態では、以上の方式で誤り訂正を行うことにより、誤り訂正動作の高速化が図れる。ただし、従来方式に比べて本実施形態によって生じる面積増加やサイクル数の増加についてまとめると、以下のようになる。
【００５３】
（１）面積増加
従来に比べて、（(７＋８)×４＝６０ビットのレジスタ＋制御回路）分の実装面積が増加する。すなわち、本実施形態は、従来に比べて（(１５× Npari)ビットのレジスタ＋制御回路）分の実装面積の増加だけで済む。
【００５４】
（２）サイクル数増加
従来では、１２８(リードサイクル)＋４（リードレイテンシによる追加分）＋４（ライトサイクル）である。一方、本実施形態では、１２８(リードサイクル)＋４（リードレイテンシによる追加分）＋４（ライトサイクル）＋４(誤り訂正時のリードサイクル)である。したがって、Npari回のリードサイクル分の増加だけで済む。ただし、今回の方式を用いることで、第１遅延回路３４による遅延は必要なくなるので、この分は面積が削減できる。
【００５５】
［第２の実施形態］
次に、この発明の第２実施形態の半導体記憶装置について説明する。前記第１実施形態における構成と同様の部分には同じ符号を付してその説明は省略する。
【００５６】
図８に、図６に示した回路構成において、ＣＦＳモードで符号生成動作を行った場合の動作波形例を示す。ここで、リードレイテンシ３、ページ長１２８、パリティ／シンドロームレジスタ３９とフェイルアドレスレジスタ４０が共にNpari（＝４）段のシフトレジスタを持つものとする。
【００５７】
図４に示した動作波形例の場合と同様に、カラムアドレス０で発効されたリードコマンドによるデータＱ０が３サイクル後に出力され、このデータＱ０に対して符号生成を行ったデータ（パリティ）がパリティビットWPARIにＰ０として出力される。この値は、パリティ／シンドロームレジスタ３９に保持される。また、このときのカラムアドレス０は、フェイルアドレスレジスタ４０に保持される。同様にしてカラムアドレス７までリードコマンドを発効すると、その時点でパリティ／シンドロームレジスタ３９とフェイルアドレスレジスタ４０には、カラムアドレス０〜３までのパリティとカラムアドレスが保持されている。
【００５８】
その直後に、カラムアドレス０〜３に関して、パリティ／シンドロームレジスタ３９とフェイルアドレスレジスタ４０の情報を用いて、パリティの書き込み動作を行う。レジスタFADDx4には、カラムアドレス０が出力されているので、そのアドレスを用いてライトコマンドを発行する。その時、レジスタWPARIx4にはカラムアドレス０で読み出したデータのシンドロームが出力されている状態なので、その８ビットのデータはセレクタ３７及び第２遅延回路３５、エラー訂正回路３６を介して、メモリセルに書き込まれる。この時点で、フェイルアドレスレジスタ４０及びパリティ／シンドロームレジスタ３９では１回のシフト動作が行われるが、カラムアドレス４で発効されたリードコマンドの３サイクル後なので、それらの入力側からはそれぞれカラムアドレス４及びそのデータのパリティ値が入力される。
【００５９】
同様にして、カラムアドレス１〜３のライトコマンドが実行された時点では、フェイルアドレスレジスタ４０とパリティ／シンドロームレジスタ３９には、それぞれカラムアドレス４〜７及びカラムアドレス４〜７で読み出されたデータのパリティの値が保持されている。これらのデータを用いて、引き続きカラムアドレス０〜７のライトコマンドを実行し、パリティ／シンドロームレジスタ３９に保持された４つのパリティをメモリセルに書き込む。符号生成の場合は、生成されたパリティビットをそのまま書き込むだけなので、誤り訂正の場合のように、再度リードコマンドを発効する必要はない。
【００６０】
すなわち、以上の動作方式により、ＣＦＳモードにおいて符号生成を行う場合には、リードコマンド８回、ライトコマンド８回を繰り返し行い、ページ長１２８全てのカラムアドレスをアクセスするまで繰り返す。
【００６１】
この方式を用いることにより、符号生成にかかる時間と（遅延回路の遅延時間＋書き込み時間）を別のサイクルで行うことができるので、更なる動作周波数の高速化が期待できる。
【００６２】
以上の方式で符号生成動作を行った場合、回路構成は図６に示した回路と同じであるため、面積増加分は第１実施形態と同様であり、サイクル数に関しては従来例と比較して増減はない。
【００６３】
この発明の実施形態では、データ保持モードにおいてＥＣＣを機能させ、エントリー時に符号発生、イグジット時に誤り訂正を行うことにより、データ保持期間中のリフレッシュ間隔を通常動作時より伸ばし、データ保持期間中の消費電力を小さくするＤＲＡＭにおいて、カラムアドレス優先のページアクセスを用いて誤りがあったセルに対してのみ誤り訂正を行う場合に、エラー訂正時に生成するシンドロームと誤りがあったアドレスを保持する２種類のレジスタを設けて、誤り検出と誤り訂正を行うサイクルを別サイクルとし、かつページ内の誤り訂正回数をページ長以下に抑えられることを利用した動作方式を用いることで、サイクル数及びレジスタ数の増加を抑えつつ高速動作を可能にすることができる。
【００６４】
本発明の実施形態によれば、リフレッシュ動作を用いるメモリ、例えばＤＲＡＭにおいて、以下のような効果が達成できる。
【００６５】
低消費電力を実現するデータ保持モードとこれと共に用いられるＥＣＣ機能を持っており、データ保持モードに入る際に、メモリセルからデータを読み出し、符号生成を行い、その符号をメモリセルに書き込む動作を全メモリセルに対して行い、データ保持モードから抜ける際には、メモリから符号を読み出し、誤りを訂正し、メモリセルに書き戻す動作を全メモリセルに対して行うことにより、リテンション特性を改善できる。
【００６６】
さらに、データ保持モードでのリテンション時間を長くすることにより、低消費電力を実現する場合に、誤り訂正時に行う、誤り検出、誤り訂正、訂正データ書き込みの動作や、誤り検出、ライトコマンド・アドレス生成の動作、及び符号生成時に行う、符号生成、符号データ書き込みの動作を、それぞれの場合で複数のサイクルに分けて行い、かつ回路構成や動作方式を工夫することにより、面積増加及びサイクル数増加を最小限に抑え、動作周波数の高速化を実現することができる。
【００６７】
また、前述した各実施形態はそれぞれ、単独で実施できるばかりでなく、適宜組み合わせて実施することも可能である。さらに、前述した各実施形態には種々の段階の発明が含まれており、各実施形態において開示した複数の構成要件の適宜な組み合わせにより、種々の段階の発明を抽出することも可能である。
【図面の簡単な説明】
【００６８】
【図１】ＥＣＣ機能を内蔵したメモリマクロ（ＤＲＡＭ）の概略図である。
【図２】ＥＣＣ機能を実現するために必要な回路構成を示すブロック図である。
【図３】イグジット（EXIT）動作時のＣＦＳモードにおいて、誤りがあったアドレスに関して誤り訂正を行う場合の動作波形図である。
【図４】ＣＦＳモードでの符号生成時の動作波形図である。
【図５】図２に示したＥＣＣ回路を含む回路をさらに詳細に示した図である。
【図６】この発明の実施形態の半導体記憶装置の構成を示す回路図である。
【図７】この発明の第１実施形態の半導体記憶装置におけるＣＦＳモードによる誤り訂正動作時の動作波形図である。
【図８】この発明の第２実施形態の半導体記憶装置におけるＣＦＳモードによる符号生成動作時の動作波形図である。
【符号の説明】
【００６９】
１…セルアレイ、２…ＥＣＣ回路、３…Ｉ／Ｏ回路、４…制御回路、１１…データラッチ（read data latch）、１２…データラッチ（ECC latch）、１３…データラッチ（write data latch）、１４…データマスクラッチ（write musk latch）、１５…コマンドラッチ（CG command latch）、１６…コマンドラッチ（EC command latch）、１７…コマンドラッチ（read command latch）、１８…コマンドラッチ（write command latch）、１９…アドレスラッチ（column address latch）、２０…アドレスラッチ（row address latch）、２１…ＥＣＣ回路（ECC circuit）、２２…アドレス／コマンドジェネレータ（command/address generator）、２３…ＥＣＣコマンドコントローラ（ECC command controller）、２４…セレクタ（ECC/normal data selector）、２５…セレクタ（command/address selector）、２６…クロックジェネレータ（command/address CLOCK generator）、２７…クロックジェネレータ（READ/WRITE/ECC CLOCK generator）、３１…パリティ／シンドロームジェネレータ（parity/syndrome generator）、３２…シンドロームデコーダ（syndrome decoder）、３３…誤り検出ジェネレータ（DETECT generator）、３４…第１遅延回路（delay circuit_1）、３５…第２遅延回路（delay circuit_2）、３６…データ訂正回路（DATA correction circuit）、３７…セレクタ、３８…セレクタ、３９…パリティ／シンドロームレジスタ（parity/syndrome register）、４０…フェイルアドレスレジスタ（fail address register）。
【図１】
2008165879.tif 000003
【図２】
2008165879.tif 000004
【図３】
2008165879.tif 000005
【図４】
2008165879.tif 000006
【図５】
2008165879.tif 000007
【図６】
2008165879.tif 000008
【図７】
2008165879.tif 000009
【図８】
2008165879.tif 000010