(57)【要約】【課題】本発明は、ＥＣＣ機能を搭載した集積回路装置において、面積の増加を抑えつつ、多数のメモリマクロに対して一括したＥＣＣ処理を施すことができるようにする。【解決手段】たとえば、１６ｋｂのメモリ容量を有する複数のメモリマクロ３１１にそれぞれ対応させて、部分ＥＣＣコード生成回路３１３を設ける。各部分ＥＣＣコード生成回路３１３は、休止状態にあるメモリマクロ３１１へのＮＯＰ割り込みにより、それぞれ、対応するメモリマクロ３１１のアドレスｎの保持データを部分ハミングコード行列式の規則にしたがってコード化する。各部分ＥＣＣコード生成回路３１３でコード化された部分ＥＣＣコードを、信号線ＳＬおよび加算器３１９を介して転送させることにより、全保持データに対応する１０ビットのＥＣＣコードデータを生成し、コード記憶メモリ３２１のアドレスｎに格納するようになっている。【選択図】      図２
2008090419.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶する複数のメモリ回路と、
前記複数のメモリ回路にそれぞれ対応して設けられ、前記複数のメモリ回路に記憶された各データのエラービットを訂正するためのエラー訂正コードを生成する複数のコード生成回路と、
前記複数のメモリ回路に共通に設けられ、前記複数のコード生成回路によってそれぞれ生成される前記エラー訂正コードより求められるコードデータを格納する、少なくとも１つのコード記憶メモリと、
前記複数のメモリ回路にそれぞれ対応して設けられ、前記少なくとも１つのコード記憶メモリに格納された前記コードデータをもとに、前記複数のメモリ回路に記憶された各データのエラービットを検出する複数のデコード回路と、
前記複数のメモリ回路にそれぞれ対応して設けられ、外部命令に応じて前記複数のメモリ回路をそれぞれ休止状態に制御するための複数のメモリ休止状態制御回路と、
前記複数のメモリ休止状態制御回路を制御し、休止状態にあるメモリ回路への割り込みを指示する１つのステートコントローラと、
前記複数のメモリ回路にそれぞれ対応して設けられ、前記１つのステートコントローラの指示による、前記休止状態にあるメモリ回路への割り込みにより、前記複数のデコード回路によってそれぞれ検出された、前記複数のメモリ回路に記憶された各データのエラービットを訂正する複数の訂正回路と
を具備したことを特徴とする集積回路装置。
【請求項２】
前記複数のメモリ回路は、各メモリ構成に応じて、所定のビット幅を有する一連のデータ列より分割された、前記データをそれぞれ格納するものであり、
前記複数のコード生成回路は、それぞれ、前記休止状態にあるメモリ回路への割り込み時に、前記複数のメモリ回路のビット幅の合計を行とし、前記少なくとも１つのコード記憶メモリに格納する前記コードデータのビット幅を列とするハミング行列のうち、前記複数のメモリ回路のそれぞれのビット幅を行とし、前記コードデータのビット幅を列とする行列成分に応じた規則にしたがって前記エラー訂正コードを生成するものであり、
前記複数のデコード回路は、それぞれ、前記休止状態にあるメモリ回路への割り込み時に、前記複数のメモリ回路のビット幅の合計を行とし、前記少なくとも１つのコード記憶メモリに格納する前記コードデータのビット幅を列とするハミング行列のうち、前記複数のメモリ回路のそれぞれのビット幅を行とし、前記コードデータのビット幅を列とする行列成分に応じた規則にしたがって前記コードデータをデコードするものである
ことを特徴とする請求項１に記載の集積回路装置。
【請求項３】
前記複数のコード生成回路のうち、同じメモリ構成を有する少なくとも一部のメモリ回路に対応する各コード生成回路は、それぞれ、同じ行列成分に応じた規則にしたがって前記エラー訂正コードを生成するものであることを特徴とする請求項１または２に記載の集積回路装置。
【請求項４】
前記複数のコード生成回路より出力される前記エラー訂正コードの排他的論理和算値をそれぞれ算出する複数の排他的論理和算器をさらに具備し、
前記複数の排他的論理和算器より出力される最終の排他的論理和算値を前記コードデータとするものであることを特徴とする請求項１に記載の集積回路装置。
【請求項５】
前記複数のメモリ回路は、それぞれ、１ビットもしくは複数ビットからなり、休止状態にあるメモリ回路への割り込み時に、対応するコード生成回路によるエラー訂正コードの生成を指示するためのフラグ情報を、各アドレスに対応させて記憶するフラグ記憶部をさらに具備し、
前記フラグ記憶部の対応するアドレスには、それぞれ、対応するメモリ回路へのデータの書き込みにともなって前記フラグ情報が設定されることを特徴とする請求項１に記載の集積回路装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路装置に関し、特に、単一チップ内または同一の印刷回路基板上にＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋｉｎｇ  ａｎｄ  Ｃｏｒｒｅｃｔｉｎｇ）機能を搭載した半導体集積回路もしくは集積回路システムに関する。
【背景技術】
【０００２】
近年、半導体回路部品（半導体チップ）においては、半導体回路部品の微細化が進むにつれて、パッケージ内の同位体から放出されるα線や宇宙から飛来する中性子によって引き起こされるソフトエラーが問題となってきている。特に、メモリ回路内のデータを破壊する現象が散見されるようになり、問題となっている。将来は、半導体回路部品の微細化によるセルノードの電気容量の減少にともない、さらにソフトエラーの発生の頻度が増えるものと考えられている。
【０００３】
従来では、回路的なソフトエラー対策の１つとして、ＥＣＣ回路システムが用いられている。このＥＣＣ回路システムを採用する場合、半導体集積回路（半導体チップ）内に、データ格納用のメモリ回路（半導体回路部品）とは別に、ＥＣＣ用の周辺回路とＥＣＣコード記憶メモリとを搭載する必要がある。ところが、記憶容量が小さい小容量のメモリ回路（小規模メモリ）を搭載する半導体集積回路においては、この小規模メモリに対して、ＥＣＣコード記憶メモリの占める面積割合が大きく、ＥＣＣ用の周辺回路も同様に多くの面積を占める。そのため、ＥＣＣ回路システムの搭載が、半導体集積回路でのコストアップの大きな要因となっていた。
【０００４】
一方で、ＳｏＣ（Ｓｉｌｉｃｏｎ  ｏｎ  Ｃｈｉｐ）のような大規模な集積回路システムを実現することが可能になった現在、たとえば、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を主とする小容量ＲＡＭのメモリマクロ容量は、システム総計で数メガビット（以下、Ｍｂ）という膨大な容量になってきている。このような大規模な集積回路システムにおいては、メモリ回路それ自体が高い面積割合を占めるようになってきている。したがって、このような大規模な集積回路システムに従来のＥＣＣ回路システムを適用すると、ＥＣＣ回路システムの搭載による面積の増加がそのまま実装基板面積の増加につながり、これが集積回路システムのコストアップの要因となってしまうという問題がある。
【０００５】
なお、この実装基板面積の増加を抑制するための関連技術として、半導体メモリの２つ以上のメモリユニット間に一定数のＥＣＣビットを分配することにより、メモリのオーバーヘッドを低減させる技術がすでに提案されている（たとえば、特許文献１参照）。
【特許文献１】特開２００１−２４９８５４
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、メモリ回路の通常動作にほとんど影響を与えることなしに多数のメモリ回路に対して一括したＥＣＣ処理を施すことができ、面積の増加を従来に比べて飛躍的に抑えることが可能な集積回路装置を提供することを目的としている。
【課題を解決するための手段】
【０００７】
本願発明の一態様によれば、データを記憶する複数のメモリ回路と、前記複数のメモリ回路にそれぞれ対応して設けられ、前記複数のメモリ回路に記憶された各データのエラービットを訂正するためのエラー訂正コードを生成する複数のコード生成回路と、前記複数のメモリ回路に共通に設けられ、前記複数のコード生成回路によってそれぞれ生成される前記エラー訂正コードより求められるコードデータを格納する、少なくとも１つのコード記憶メモリと、前記複数のメモリ回路にそれぞれ対応して設けられ、前記少なくとも１つのコード記憶メモリに格納された前記コードデータをもとに、前記複数のメモリ回路に記憶された各データのエラービットを検出する複数のデコード回路と、前記複数のメモリ回路にそれぞれ対応して設けられ、外部命令に応じて前記複数のメモリ回路をそれぞれ休止状態に制御するための複数のメモリ休止状態制御回路と、前記複数のメモリ休止状態制御回路を制御し、休止状態にあるメモリ回路への割り込みを指示する１つのステートコントローラと、前記複数のメモリ回路にそれぞれ対応して設けられ、前記１つのステートコントローラの指示による、前記休止状態にあるメモリ回路への割り込みにより、前記複数のデコード回路によってそれぞれ検出された、前記複数のメモリ回路に記憶された各データのエラービットを訂正する複数の訂正回路とを具備したことを特徴とする集積回路装置が提供される。
【発明の効果】
【０００８】
上記の構成により、メモリ回路の通常動作にほとんど影響を与えることなしに多数のメモリ回路に対して一括したＥＣＣ処理を施すことができ、面積の増加を従来に比べて飛躍的に抑えることが可能な集積回路装置を提供できる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明の実施の形態について図面を参照して説明する。ただし、図面は模式的なものであり、寸法の比率などは現実のものとは異なることに留意すべきである。また、図面の相互間においても、互いの寸法の関係や比率が異なる部分が含まれていることは勿論である。
【００１０】
［第１の実施形態］
図１は、この発明の第１の実施形態にしたがった集積回路装置の基本構成を示すものである。なお、ここでは、１チップ（単一チップ）上に複数の半導体回路部品を集積した半導体集積回路（半導体チップ）において、たとえば、小容量のメモリ回路（メモリマクロ）ごとにＥＣＣ用の部分コード生成／デコード回路（周辺回路）を設け、各メモリマクロ内のビットエラーをデータの読み出し時に一括訂正して出力するように構成した場合を例に説明する。また、この実施形態では、各メモリマクロのサイズ（容量またはアドレス数（ワード数×ビット幅）に応じたメモリ構成）を同一とした場合について説明する。
【００１１】
すなわち、本実施形態の半導体集積回路は、たとえば図１に示すように、半導体基板１００上に、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２００、および、ＥＣＣ回路システムを含むＥＣＣメモリ回路３００など、複数の半導体回路部品が集積されてなる構成とされている。ＥＣＣメモリ回路３００は、たとえば、上記ＣＰＵ２００に共通に接続された、複数のメモリ回路部３１０ｎと１つのＥＣＣコード記憶部３２０とによって構成されている。複数のメモリ回路部３１０ｎは、それぞれ、データ格納用のメモリマクロ（たとえば、ＳＲＡＭマクロ）３１１、および、部分ＥＣＣコード生成／デコード回路３１２などを有して構成されている。
【００１２】
因みに、この半導体集積回路の場合、メモリマクロ３１１の待機状態であるＮＯＰ（Ｎｏ  ＯＰｅｒａｔｉｏｎ）ウェイティング動作を利用し、ＮＯＰウェイティング状態にあるメモリマクロ３１１に対して割り込みをかけることによって、たとえば、複数のメモリマクロ３１１にそれぞれ分割されて記憶されたデータの一括したＥＣＣ処理が可能となっている。
【００１３】
図２は、上記したＥＣＣメモリ回路３００の基本構成を示すものである。なお、ここでは、各メモリ回路部３１０ｎにおけるメモリマクロ３１１の容量を、それぞれ、３２ｂｉｔ×５１２ｗｏｒｄ＝１６キロビット（以下、ｋｂ）とし、このようなメモリ構成とされたメモリマクロ３１１をそれぞれ含むメモリ回路部３１０ｎが全部で８つ（ｎ＝１〜８）配置されているものとして説明する（３２ｂｉｔ×８＝２５６ｂｉｔ）。
【００１４】
すなわち、各メモリ回路部３１０- 1 ，３１０- 2 ，３１０- 3 ，・・・，３１０- 8 には、たとえば図２に示すように、メモリマクロ３１１の周辺部に、それぞれ、上記部分ＥＣＣコード生成／デコード回路３１２を構成する、部分ＥＣＣコード生成回路（Ｃｏｄｅ＿ｇｅｎ）３１３および部分ＥＣＣデコード回路（シンドロームデコーダ／Ｓ＿ｄｅｃ）３１４が設けられている。また、これらの制御回路用として、メモリ休止状態制御回路であるＮＯＰコントローラ（ＮＯＰ  ｃｏｎｔ．）３１５、および、アドレスコンパレータ（ＡＤＤＲ  ｃｏｍｐ．）３１６が設けられている。さらに、上記メモリマクロ３１１の周辺部には、それぞれ、データセレクタとしてのマルチプレクサ３１７ａ，３１７ｂ，３１７ｃ、および、フリップフロップ（Ｆ／Ｆ）３１８が配置されている。
【００１５】
なお、初段のメモリ回路部３１０- 1 を除く、他のメモリ回路部３１０- 2 ，３１０- 3 ，・・・，３１０- 8 には、それぞれ、加算器（排他的論理和算器）３１９が設けられている。加算器３１９のそれぞれは、部分ＥＣＣコード生成回路３１３の各出力（エラー訂正コード）をＸＯＲ（順不同）し、最終出力として、２５６ビットの全保持データに対応する１０ビットのＥＣＣコードデータ（排他的論理和算値の最終値）を生成するもので、たとえば１２ビットのバス幅を有する信号線（メモリ間バス）ＳＬを介して相互に接続されている。本実施形態の場合、上記信号線ＳＬは、コード生成終了信号（１ビット）およびフラグ情報（１ビット）のための、２ビットのバス幅を有する信号線（ｆｏｒ  ＥＣＣ  ｃｏｎｔｏｒｏｌ）を含んでいる。
【００１６】
一方、ＥＣＣコード記憶部３２０には、コード記憶メモリ（Ｃｏｄｅ  ｍｅｍ）３２１に加えて、アドレスカウンタ（Ａｄｄｒｅｓｓ  ｃｏｕｎｔｅｒ）３２２、ステートコントローラ（Ｓｔａｔｅ  ｃｏｎｔ．）３２３、コードレジスタ（バッファ）３２４、および、加算器３２５ａ，３２５ｂが設けられている。
【００１７】
上記メモリ回路部３１０- 1 ，３１０- 2 ，３１０- 3 ，・・・，３１０- 8 において、各メモリマクロ３１１は、たとえば、容量（ワード数×ビット幅）が１６ｋｂとされた小規模メモリであって、そのビット幅に応じて、入力データ（書き込むべき所定のビット幅を有する一連のデータ列Ｄａｔａ／Ｉｎ）を等分割して記憶（プログラム）するようになっている。メモリマクロ３１１の各アドレスには、フラグ記憶部であるフラグ格納用ビット３１１ａまたはセルが、１ビット（または、複数ビット）ずつ追加されている。フラグ格納用ビット３１１ａは、対応するメモリマクロ３１１に記憶されているデータの書き換えが行われたか否かを示す、アドレスごとのライト更新履歴管理を可能にするためのフラグ情報（Ｆｌａｇ  ｂｉｔ）を記憶するものである。このフラグ情報は、信号線ＳＬより各加算器３１９を介して、ステートコントローラ３２３に送られる。これにより、上記フラグ情報は、休止状態にあるメモリマクロ３１１への割り込み時に、対応する部分ＥＣＣコード生成回路３１３によるエラー訂正コードの生成を指示する制御信号となる。
【００１８】
各部分ＥＣＣコード生成回路３１３は、ＮＯＰ割り込みサイクル（コード生成モードまたはデータ比較／訂正モード）時に、対応するＮＯＰコントローラ３１５からの制御信号にもとづいて、対応するメモリマクロ３１１より出力される保持データ（出力データＤａｔａ／Ｏｕｔともいう）を行列成分である部分ハミングコード行列式の規則にしたがってコード化することによって、上記保持データに対応する部分ＥＣＣコード（エラー訂正コード）をそれぞれ生成するものである。すなわち、部分ＥＣＣコード生成回路３１３は、それぞれ、全Ｉ／Ｏ（この例の場合、２５６ビットＩ／Ｏ）に対応する長大なハミングコード行列のうち、各メモリマクロ３１１のＩ／Ｏ（この例の場合、３２ビットＩ／Ｏ）に対応する部分ハミングコード行列式を用いて、保持データをコード化するものである。部分ハミングコード行列式の詳細については後述する。
【００１９】
生成された部分ＥＣＣコードは、それぞれ、信号線ＳＬより各加算器３１９，３２５ａを介して、加算器３２５ｂ、および、コードレジスタ３２４に送られる。なお、この部分ＥＣＣコード生成回路３１３は、データの書き込み時およびＮＯＰ割り込みサイクル時以外は、常に、“０”を出力するようになっている。
【００２０】
また、上記各部分ＥＣＣコード生成回路３１３は、部分ＥＣＣコードの生成が終了すると、コード生成終了信号（１ビット）を出力するように構成されている。このコード生成終了信号は、信号線ＳＬより各加算器３１９を介して、ステートコントローラ３２３に送られる。コード生成終了信号は、次ステップの、上記ＮＯＰコントローラ３１５からのリセット信号によりリセットされる。
【００２１】
各部分ＥＣＣデコード回路３１４は、ＮＯＰ割り込みサイクル時に、対応するＮＯＰコントローラ３１５からの制御信号にもとづいて、シンドローム信号（加算器３２５ｂの出力である、コード記憶メモリ３２１の出力と加算器３２５ａの出力との排他的論理和算値）を、部分ハミングコード行列式の規則にしたがってデコードするものである。このデコード結果であるエラービット検出信号（メモリ訂正ビット）は、訂正回路としての対応するマルチプレクサ３１７ｃに送られる。なお、この部分ＥＣＣデコード回路３１４は、ＮＯＰ割り込みサイクル時以外は、常に、“０”を出力するようになっている。
【００２２】
各マルチプレクサ３１７ｃは、複数（この例の場合、３２ビット分）のプレクサを並列に接続してなり、対応する部分ＥＣＣデコード回路３１４からのエラービット検出信号に応じて、対応するメモリマクロ３１１からの保持データをビットごとにインバートまたはノットインバートさせることによって、保持データ内のエラービットだけを訂正するものである（つまり、対応するメモリマクロ３１１からの保持データのエラービットのみをインバートさせるものである）。このマルチプレクサ３１７ｃの訂正データ（インバート出力およびノットインバート出力）は、対応するマルチプレクサ３１７ｂに送られる。
【００２３】
各マルチプレクサ３１７ｂは、対応するＮＯＰコントローラ３１５からの制御信号またはアドレスコンパレータ３１６からの制御信号に応じて、入力データＤａｔａ／Ｉｎもしくはマルチプレクサ３１７ｃによる訂正データのいずれかを選択するものである。このマルチプレクサ３１７ｂの出力は、対応するメモリマクロ３１１に送られる。
【００２４】
各マルチプレクサ３１７ａは、対応するＮＯＰコントローラ３１５からの制御信号に応じて、アドレスカウンタ３２２の出力（カウント値）である内部アドレス、もしくは、入力アドレス（外部制御アドレス信号）ＡＤＤＲのいずれかを選択するものである。このマルチプレクサ３１７ａの出力は、対応するメモリマクロ３１１に送られる。
【００２５】
各アドレスコンパレータ３１６は、アドレスカウンタ３２２の出力とステートコントローラ３２３の出力と入力アドレスＡＤＤＲとに応じてデータセレクタ制御信号を生成し、データセレクタであるマルチプレクサ３１７ｂに出力するものである。たとえば、データ訂正ステート状態（データ比較／訂正モード）において、入力アドレスＡＤＤＲと内部アドレス（アドレスカウンタ３２２のカウント値）とが一致した際には、その訂正動作を中断させるためのデータセレクタ制御信号“０”をマルチプレクサ３１７ｂに出力し、入力データＤａｔａ／Ｉｎが選択されるように制御する。
【００２６】
各ＮＯＰコントローラ３１５は、各部にモード（ステート）に応じたメモリ動作を実行させるためのものであって、外部命令としてのＣＰＵ２００からのメモリ制御信号（たとえば、リード／ライト制御信号Ｒ／Ｗ、チップイネーブル信号、クロック信号など）およびアドレスカウンタ３２２の出力とステートコントローラ３２３の出力とに応じて、上記メモリ制御信号、アドレスセレクタ制御信号、データセレクタ制御信号、部分ＥＣＣコード生成回路制御信号、および、部分ＥＣＣデコード回路制御信号を生成し、それぞれ対応する、メモリマクロ３１１、部分ＥＣＣコード生成回路３１３、部分ＥＣＣデコード回路３１４、および、マルチプレクサ３１７ａ，３１７ｂを制御するものである。たとえば、クロック入力の直前において、ＣＰＵ２００からの指示（外部命令）がＮＯＰウェイティング状態以外のときには通常サイクル通りのメモリ動作（読み出し／書き込みなど）を行うように各部を制御し、ＮＯＰウェイティング状態で、かつ、ステートコントローラ３２３の出力がＮＯＰ割り込みを指示しているときには、ＮＯＰ割り込みサイクルを実行するように各部を制御し、ステートに応じたメモリ動作を行わせる。
【００２７】
各フリップフロップ３１８は、対応するメモリマクロ３１１からの出力データを、ＣＰＵ２００などのＥＣＣメモリ回路３００の外部に出力する際に一時的に保持するものであって、１ステップ前の出力データを常に保持するようになっている。
【００２８】
一方、上記ＥＣＣコード記憶部３２０において、コード記憶メモリ３２１は、全メモリマクロ３１１の各ビットに対応するＥＣＣコードをすべて記憶するもので、加算器３２５ａの出力である、コードレジスタ３２４の出力と加算器３１９の最終出力との加算値（１０ビットのＥＣＣコードデータ）を入力としている。
【００２９】
コードレジスタ３２４は、ＮＯＰ割り込みサイクル時に、加算器３２５ａの１つ前の出力を保持するものである。なお、このコードレジスタ３２４は、各ＮＯＰコントローラ３１５の出力信号の論理積値を、レジスタ出力制御用の入力信号の１つとするように構成されている（図示していない）。
【００３０】
加算器３２５ａは、最終段のメモリ回路部３１０- 8 の、加算器３１９の出力（各メモリマクロ３１１の出力データに応じた部分ＥＣＣコード生成回路３１３からの部分ＥＣＣコードの加算値（最終出力））とコードレジスタ３２４の出力とを加算し、上記コード記憶メモリ３２１に記憶するＥＣＣコードデータを生成するものである。
【００３１】
加算器３２５ｂは、加算器３２５ａの出力とコード記憶メモリ３２１の出力とを加算し、シンドローム信号を生成するものである。生成されたシンドローム信号は、信号線ＳＬ’を介して、各部分ＥＣＣデコード回路３１４に送られるとともに、ステートコントローラ３２３に送られる。
【００３２】
ステートコントローラ３２３は、各部分ＥＣＣコード生成回路３１３からのコード生成終了信号と、フラグ格納用ビット３１１ａに記憶されたフラグ情報と、加算器３２５ｂからのシンドローム信号とにもとづいて、各ＮＯＰコントローラ３１５および各アドレスコンパレータ３１６に制御信号を出力するとともに、アドレスカウンタ３２２にセット／リセット信号を出力し、ステートの変更などを制御するものである。
【００３３】
アドレスカウンタ３２２は、ステートコントローラ３２３からのセット信号に応じて、カウント値（アドレス）を１つずつインクリメントし、各ＮＯＰコントローラ３１５、各アドレスコンパレータ３１６、各マルチプレクサ３１７ａ、および、コード記憶メモリ３２１に出力するものである。また、アドレスカウンタ３２２のカウント値は、ステートコントローラ３２３からのリセット信号によってリセットされる。
【００３４】
次に、上記した、部分ＥＣＣコード生成回路３１３および部分ＥＣＣデコード回路３１４について、さらに詳しく説明する。一般的に、ＥＣＣコードは、あるデータを元にハミングコード行列式によって規則化されたコード生成回路を通して生成される。
【００３５】
ここで、ＥＣＣコードをｃ、ハミング行列をＨ、データをＵとする。すると、これらの関係は、
ｃ＝Ｈ×ＵT 
となる（ただし、Ｔはビット幅）。
【００３６】
本実施形態の場合、たとえば図３に示すように、２５６ビット（３２ビット×８）の入力データ（所定のビット幅を有する一連のデータ列）から１０ビットのＥＣＣコードデータを生成するようにしている。したがって、ハミング行列ＨをＨｎ＝（Ｈ1 ，Ｈ2 ，・・・，Ｈ8 ）とし、各メモリマクロ３１１の出力データＵをＵｎ＝（ｄ1 ，ｄ2 ，・・・，ｄ8 ）とした場合、生成されるＥＣＣコードデータｃ’は、
ｃ’＝Ｈｎ×ＵｎT ＝Ｈ1 ×ｄ1 T ＋Ｈ2 ×ｄ2 T ＋・・・＋Ｈ8 ×ｄ8 T 
と表すことができる。つまり、このハミング行列Ｈｎ＝Ｈ1 ，Ｈ2 ，・・・，Ｈ8 を、それぞれ、各メモリマクロ３１１の出力データをコード化する際の規則（部分ハミングコード行列式）として適用したものが、部分ＥＣＣコード生成回路３１３である。
【００３７】
本実施形態においては、部分ＥＣＣコード生成回路３１３を、各メモリマクロ３１１のビット幅に合わせて配置した構造としている。しかし、部分ＥＣＣコード生成回路３１３の総面積は、従来（既存）のＥＣＣ回路システムのコード生成回路とほぼ一緒である。その一方で、各メモリマクロ３１１間をつなぐ信号線ＳＬは、コード化された１０ビットのデータを転送するだけなので、大幅に配線数（バス幅）を減らすことが可能になる。つまり、コード化される前の２５６ビット分のデータを転送するのに必要であった従来の配線数を、たったの１０ビット分にまで縮小できる。
【００３８】
部分ＥＣＣコード生成回路３１３に限らず、同様の理由によって、部分ＥＣＣデコード回路３１４についても、各メモリマクロ３１１のビット幅に合わせて、従来のＥＣＣ回路システムにおけるデコード回路を分割して配置することにより、信号線ＳＬ’の配線数を大幅に縮小することができる。
【００３９】
なお、このような構成とすれば、さらにメモリマクロの総ビット幅を大きくし、たとえば５１２ビットまたは１０２４ビットとした場合にも、実際のメモリマクロ間の配線数は高々１１ビットまたは１２ビット程度にしかならないので、従来では不可能であった大規模のビット幅でＥＣＣ回路システムを実現することが可能になる。
【００４０】
次に、上述した構成の集積回路装置のアクセス方法について説明する。一般に、メモリ回路の制御状態には、読み出し／書き込みなどの通常サイクルでのメモリ動作状態のほかに、メモリ回路がいかなる動作もせずに待機状態となるＮＯＰウェイティング状態が存在する。本実施形態では、たとえば図４に示すように、このＮＯＰウェイティング状態に割り込みをかけ、ＮＯＰウェイティング状態に代わってＥＣＣ処理を行うことを基本動作としている。
【００４１】
その一例として、まずは、ＥＣＣコード生成処理について説明する。ここでは、仮に、各メモリマクロ３１１のアドレス“ｎ”の保持データをもとに、ＥＣＣコードデータを生成する場合を例に説明する。
【００４２】
まず、各メモリマクロ３１１において、ＮＯＰウェイティング状態が発生するまで、各ＮＯＰコントローラ３１５は待機する。ＣＰＵ２００からの指示により、もし、あるメモリマクロ３１１がＮＯＰウェイティング状態になると、対応するＮＯＰコントローラ３１５は、ステートコントローラ３２３からの指示およびアドレスカウンタ３２２の出力に応じて、そのメモリマクロ３１１を制御する。つまり、ステートコントローラ３２３からの指示がＮＯＰ割り込みの場合には、ＮＯＰコントローラ３１５は、ＮＯＰウェイティング状態に代えてＮＯＰ割り込みサイクルを実行し、対応するメモリマクロ３１１からアドレス“ｎ”の保持データを読み出させる（ＮＯＰ→Ｒｎ）。この保持データは、対応する部分ＥＣＣコード生成回路３１３を通ってコード化（部分ＥＣＣコードに変換）された後、信号線ＳＬおよび加算器３１９，３２５ａを介して、コードレジスタ３２４に送られる。一度、このＮＯＰ割り込みサイクルが行われたメモリマクロ３１１は、次の指示が送られてくるまで、再び待機（ＮＯＰウェイティング）状態に戻る。この待機状態においては、部分ＥＣＣコード生成回路３１３の出力はすべて“０”となるように制御されるため、期待されない部分ＥＣＣコードがコードレジスタ３２４に転送されることはない。
【００４３】
同様にして、ステートコントローラ３２３からの指示およびアドレスカウンタ３２２の出力に応じて、すべてのメモリマクロ３１１のアドレス“ｎ”の保持データが読み出されて、逐次、コード化される。そして、そのコード化された各部分ＥＣＣコードは、順に、コードレジスタ３２４内に蓄積される。このコードレジスタ３２４内には、最終的に、各部分ＥＣＣコードの排他的論理和算値（ＥＣＣコードデータ）が格納される。こうして、すべてのメモリマクロ３１１に対するＮＯＰ割り込みサイクルが終了する（ＮＯＰウェイティング状態が終了する）と、コードレジスタ３２４内に蓄積されているＥＣＣコードデータが、コード記憶メモリ３２１のアドレス“ｎ”に書き込まれる。以上で、ＥＣＣコード生成処理は終了し、次のステップの進むことができる。
【００４４】
このようなアクセス方法を採用することによって、１つ１つのメモリ回路を完全に独立させて動作させることが可能になる。したがって、従来のような、通常サイクルの合間に行われる、ＥＣＣ処理のための中断サイクルによるスピード劣化や煩雑な制御からは無縁となる。
【００４５】
ここで、各メモリマクロ３１１は、保持データの書き込みおよび読み出しが独立に行われる。このため、一度、コード記憶メモリ３２１にＥＣＣコードデータを格納した後に、一部でも、メモリマクロ３１１のアドレス“ｎ”の保持データが書き換えられると、そのＥＣＣコードデータは使用できなくなる。つまり、新たなＥＣＣコードデータを生成し直す必要がでてくる。
【００４６】
この保持データの書き換え（ライト動作）にともなう、新たなＥＣＣコードデータの生成を矛盾なく管理できるようにするために、各メモリマクロ３１１の各アドレスにはフラグ格納用ビット３１１ａが用意されている。本実施形態においては、たとえば図５に示すように、通常サイクルでの保持データの書き換えが行われるたびに、必ず、対応するアドレス“ｎ”のフラグ格納用ビット３１１ａが“０”なるフラグ情報によって書き換えられる（Ｗｎ“０”）。なお、このフラグ格納用ビット３１１ａには、コード生成処理を行う際に事前に“１”なるフラグ情報が書き込まれる。これにより、保持データの書き込み履歴の管理が容易に可能となる。すなわち、ステートコントローラ３２３では、各メモリマクロ３１１のフラグ格納用ビット３１１ａをチェック（比較）することのみによって、保持データの書き換え（ライト動作）が行われたか否かを簡単に認識できる。
【００４７】
図６は、上記した構成における、ＥＣＣ処理シーケンスを示すフローチャートである。ここでは、各メモリマクロ３１１に一度ずつアクセスしてＥＣＣコードデータの生成などを行うサイクルを１ステートとした場合について示している。なお、このフローチャートにおいては、各ステートの判定、アドレスカウンタ３２２の制御などは、ステートコントローラ３２３によって行われる。
【００４８】
まず、シーケンスの最初では、ステートコントローラ３２３がアドレスカウンタ３２２の出力に応じてＮＯＰコントローラ３１５を制御することにより、各メモリマクロ３１１のあるアドレス“ｎ”のフラグ格納ビット３１１ａのフラグ情報が読み込まれる。そして、すべてのフラグ情報が“１”であるかが調べられる。もし、１つでも“０”のフラグ情報があればコード生成モードへ、すべてのフラグ情報が“１”であればデータ比較／訂正モード（データ訂正ステート状態）へ移行する。
【００４９】
コード生成モードでは、ステートコントローラ３２３によって各ＮＯＰコントローラ３１５が制御されることにより、まず先に、各メモリマクロ３１１の、アドレスカウンタ３２２の出力に応じたアドレス“ｎ”の、すべてのフラグ格納ビット３１１ａに“１”なるフラグ情報が書き込まれる。そして、次のＮＯＰ割り込みサイクルにおいて、ステートコントローラ３２３の制御により、そのアドレス“ｎ”の保持データが読み出される。このとき、すでに保持データが書き換えられており、もし、対応するフラグ格納ビット３１１ａのフラグ情報が“０”になっていた場合には、再度、フラグ情報としての“１”の書き込みが行われる。
【００５０】
すべてのフラグ情報が“１”の状態において、各メモリマクロ３１１のアドレス“ｎ”から読み出された保持データは、それぞれ、対応する部分ＥＣＣコード生成回路３１３に送られる。これにより、ＮＯＰコントローラ３１５の制御のもと、それぞれ、対応する部分ＥＣＣコード生成回路３１３により、部分ハミングコード行列式の規則にしたがって、部分ＥＣＣコードが生成される。各部分ＥＣＣコード生成回路３１３にて生成された部分ＥＣＣコードは、信号線ＳＬおよび加算器３１９，３２５ａを介してＭＵＸされた後、逐次、コードレジスタ３２４に送られる。
【００５１】
こうして、コードレジスタ３２４に、すべてのアドレス“ｎ”に対する、部分ＥＣＣコードに対応するＥＣＣコードデータが蓄えられる。このことは、ステートコントローラ３２３において、各部分ＥＣＣコード生成回路３１３からのコード生成終了信号により判断される。これにより、コードレジスタ３２４に蓄えられたＥＣＣコードデータが、コード記憶メモリ３２１のアドレス“ｎ”に書き込まれて、コード生成モードは終了される。
【００５２】
一方、データ比較／訂正モードでは、上記したすべてのフラグ情報が“１”の状態の場合と同様にして、各部分ＥＣＣコード生成回路３１３による部分ＥＣＣコードの生成が行われる。すなわち、ステートコントローラ３２３によって、各メモリマクロ３１１の、アドレスカウンタ３２２の出力に応じたアドレス“ｎ”の、すべてのフラグ格納ビット３１１ａに“１”なるフラグ情報が書き込まれていることが確認されると、各ＮＯＰコントローラ３１５によって、それぞれ、アドレス“ｎ”の保持データが読み出される。各メモリマクロ３１１のアドレス“ｎ”から読み出された保持データは、それぞれ、対応する部分ＥＣＣコード生成回路３１３に送られる。これにより、ＮＯＰコントローラ３１５の制御のもと、それぞれ、対応する部分ＥＣＣコード生成回路３１３により部分ＥＣＣコードが生成される。各部分ＥＣＣコード生成回路３１３にて生成された部分ＥＣＣコードは、信号線ＳＬおよび加算器３１９，３２５ａを介して、逐次、コードレジスタ３２４に送られる。こうして、コードレジスタ３２４に、すべての部分ＥＣＣコードに対応するＥＣＣコードデータが蓄えられる。このＥＣＣコードデータは、後のシンドローム信号の生成に供される。
【００５３】
また、ステートコントローラ３２３の制御により、アドレスカウンタ３２２の出力（アドレス“ｎ”）に応じて、対応するＥＣＣコードデータの、コード記憶メモリ３２１からの読み出しが行われる。コード記憶メモリ３２１より読み出されたＥＣＣコードデータは、加算器３２５ｂにて、加算器３２５ａを介して供給される、コードレジスタ３２４に蓄えられているＥＣＣコードデータと比較（加算）され、シンドローム信号となる。そして、ステートコントローラ３２３において、そのシンドローム信号をもとにＥＣＣコードデータのチェックが行われ、シンドローム信号に問題がなければ、データ比較／訂正モードはそのまま終了される（Ｓ＝０）。
【００５４】
これに対し、シンドローム信号に問題があった場合、次のＮＯＰ割り込みサイクルにおいて、再度、メモリマクロ３１１からの保持データの読み出しが行われる。つまり、コード記憶メモリ３２１より読み出されたＥＣＣコードデータと、コードレジスタ３２４に蓄えられたＥＣＣコードデータとの間に、たとえば一致しないビットが存在すると、それがエラービットとして検出される。このエラービットが検出されると、ステートコントローラ３２３によって、ＮＯＰコントローラ３１５が制御されることにより、エラービットを含む保持データが、対応するメモリマクロ３１１のアドレス“ｎ”より読み出される。読み出された保持データは、対応するマルチプレクサ３１７ｃに送られる。このマルチプレクサ３１７ｃは、上記シンドローム信号をもとに、対応する部分ＥＣＣデコード回路３１４によって制御される。
【００５５】
各部分ＥＣＣデコード回路３１４では、対応するＮＯＰコントローラ３１５の制御にもとづいて、上記シンドローム信号が、それぞれ部分ハミングコード行列式の規則にしたがってデコードされる。これにより、エラービット検出信号が生成される。そして、このエラービット検出信号が、対応するマルチプレクサ３１７ｃに送られることにより、エラービットに対応する保持データのみが反転されて、マルチプレクサ３１７ｂに送られる。こうして、各メモリマクロ３１１に記憶されている全保持データに対し、一括したＥＣＣ処理が行われる。
【００５６】
このとき、ステートコントローラ３２３により、入力アドレスＡＤＤＲまたはアドレスカウンタ３２２からの内部アドレスにしたがって、対応するアドレスコンパレータ３１６が制御される。このアドレスコンパレータ３１６によって、対応するマルチプレクサ３１７ｂが制御される。また、このマルチプレクサ３１７ｂは、対応するＮＯＰコントローラ３１５によって制御される。さらに、入力アドレスＡＤＤＲおよびアドレスカウンタ３２２からの内部アドレスが供給されるマルチプレクサ３１７ａが、対応するＮＯＰコントローラ３１５によって制御される。これにより、マルチプレクサ３１７ｃからの訂正データは、対応するメモリマクロ３１１に送られ、上記内部アドレスに応じたアドレスに書き込まれる。つまり、訂正済データによる書き戻しが行われる。こうして、データ比較／訂正モードは終了される。
【００５７】
なお、通常サイクルでのライト動作時においては、対応するＮＯＰコントローラ３１５が、リード／ライト制御信号Ｒ／Ｗにしたがって制御されるとともに、マルチプレクサ３１７ｂが、対応するＮＯＰコントローラ３１５およびアドレスコンパレータ３１６によって制御される。また、マルチプレクサ３１７ａが、対応するＮＯＰコントローラ３１５によって制御される。これにより、マルチプレクサ３１７ｂにて入力データＤａｔａ／Ｉｎが選択されて、対応するメモリマクロ３１１に送られ、上記入力アドレスＡＤＤＲに応じたアドレスに書き込まれる。
【００５８】
同様に、データ比較／訂正モードにおいて、アドレスコンパレータ３１６での比較により、入力アドレスＡＤＤＲと内部アドレスとが一致した際には、その訂正動作を中断させるためのデータセレクタ制御信号“０”がマルチプレクサ３１７ｂに出力されて、入力データＤａｔａ／Ｉｎが選択される。すなわち、上記入力アドレスＡＤＤＲに応じて、そのアドレスの保持データがすでに書き換えられていると判断された場合には、その訂正動作は中断され、データ比較／訂正モードは終了される。
【００５９】
コード生成モードおよびデータ比較／訂正モードが一通り終了すると、ステートコントローラ３２３によってアドレスカウンタ３２２が動作され、再度、次のアドレスによる同様のＥＣＣ処理シーケンスが繰り返される。このシーケンスを、全アドレスに対して周期的に行うことで、定期的にソフトエラーのチェックを行うことができる。
【００６０】
この１アドレスに対するＥＣＣ処理シーケンスを、たとえば図７に示すように、１００サイクルに１回の頻度で行うと仮定する。このとき、１００サイクルの動作のうち、１〜数サイクルのＮＯＰウェイティング状態がアクティブになるだけのため、パワー増加はアクティブ動作（通常サイクル）時に比べて高々数％に過ぎない。また、３２ワード×３２ビットの８個のメモリマクロ３１１に対して、１００ＭＨｚ動作をさせた場合、各アドレスに対するＥＣＣ処理シーケンスは、毎秒３０回もの頻度で行われることになる。これをソフトエラー率（ＳＥＲ）に換算すると、ＳＥＲ＝２×１０-5ｅｒｒ／ｈ／Ｍｂ（Ｑｃｒｉｔ＝２ｆＣ）とした場合には、ＳＥＲ＝１となる時間までに５．１×１０9 回のチェックが可能となる。これは、実にＥＣＣ回路システムを搭載しない場合と比較して、約９桁も改善することが可能となり、ＳＥＲ改善の効果としては十分である。
【００６１】
図８は、上記した構成における、面積のオーバーヘッドを見積もった際の結果（アドレス空間）を示すものである。本実施形態の構成によれば、ＥＣＣ回路システムを搭載しない場合と比較して、面積の増加を全体で１１．０％程度に抑えることが可能となる。因みに、従来のＥＣＣ回路システムの場合、コード記憶メモリのみで約２２％の面積の増加となる。
【００６２】
上記したように、複数のメモリマクロに対し、メモリマクロごとに部分ＥＣＣコード生成／デコード回路を設けるとともに、各メモリマクロに記憶された全保持データを一括して訂正できるようにしている。すなわち、ＥＣＣのためのコード生成回路およびデコード回路を、各メモリマクロのビット幅に応じて分割させて配置する一方、コードデータを記憶するコード記憶メモリを共有させ、メモリマクロのＮＯＰウェイティング状態への割り込みを利用して、ＥＣＣ処理を行うようにしている。これにより、コード生成回路およびデコード回路の総面積をほとんど増加させることなく、配線数（配線領域）を大幅に削減できるようになる。したがって、メモリマクロの通常のメモリ動作にもほとんど影響を与えることなしに、一括したＥＣＣ処理を施すことができるとともに、ＥＣＣ回路システムの搭載による、チップ面積の増加を従来に比べて飛躍的に抑えることが可能となるものである。
【００６３】
特に、複数のメモリマクロを個別に制御できるため、コード生成モード時およびデータ比較／訂正モード時に、すべてのメモリマクロの同じアドレスを同時にアクセスする場合にも、従来のユーザーに対するアクセス制約が非常に煩雑になるという欠点を回避でき、メモリアクセスの自由度を格段に向上させることが可能となる。
【００６４】
［第２の実施形態］
図９は、この発明の第２の実施形態にしたがった、集積回路装置（半導体チップ）におけるＥＣＣメモリ回路３００ａの構成例（アドレス空間）を示すものである。ここでは、第１の実施形態で示した構成の半導体集積回路において、サイズの異なる（ただし、この実施形態ではワード幅は同一）、複数のメモリマクロに記憶されたデータを一括して訂正できるように構成した場合について説明する。なお、第１の実施形態と同一部分には同一符号を付し、その詳しい説明は割愛する。
【００６５】
本実施形態の場合、たとえば図９に示すように、全部で１８個のメモリ回路部３１０が用意されている。１８個のメモリ回路部３１０のうち、８個のメモリ回路部３１０は、容量（メモリ構成）が１２８ｋｂ（３２ｂｉｔ−４Ｋｗｏｒｄ）のメモリマクロ３１１- 1aをそれぞれ有して構成されている。他の、８個のメモリ回路部３１０は、容量が２５６ｋｂ（６４ｂｉｔ−４Ｋｗｏｒｄ）のメモリマクロ３１１- 1bをそれぞれ有して構成されている。残りの、２個のメモリ回路部３１０は、容量が５１２ｋｂ（１２８ｂｉｔ−４Ｋｗｏｒｄ）のメモリマクロ３１１- 1cをそれぞれ有して構成されている。一方、コード記憶メモリ３２１としては、１０２４ビット（３２ビット×８＋６４ビット×８＋１２８ビット×２）のデータに対応する１２ビットのＥＣＣコードデータを格納でき、かつ、メモリ最長のワード幅である４Ｋワードのデータに対応できる、４Ｋワードの容量をもつメモリが用意されている。
【００６６】
このような構成において、各メモリ回路部３１０では、メモリマクロ３１１- 1a，３１１- 1b，３１１- 1cの全ワードの各データに対応する部分ＥＣＣコードが、第１の実施形態にて説明した通りのアクセス方法（コード生成モードおよびデータ比較／訂正モード）によって生成される。
【００６７】
このような構成とした場合にも、第１の実施形態の場合と同様に、メモリマクロのＮＯＰウェイティング状態への割り込みを利用して、ＥＣＣ処理を行うことにより、メモリマクロの通常のメモリ動作にほとんど影響を与えることなしに、一括したＥＣＣ処理を施すことができる。しかも、コード生成回路およびデコード回路の総面積をほとんど増加させることなく、配線数（配線領域）を大幅に削減できるようになる。したがって、ＥＣＣ回路システムの搭載による、チップ面積の増加を従来に比べて飛躍的に抑えることが可能となるものである。
【００６８】
より具体的には、上記した構成において、面積のオーバーヘッドを見積もったところ、ＥＣＣ回路システムを搭載しない場合と比較して、面積の増加を全体で５．０％程度に抑えることが可能となる。
【００６９】
［第３の実施形態］
図１０は、この発明の第３の実施形態にしたがった、集積回路装置（半導体チップ）におけるＥＣＣメモリ回路３００ｂの基本構成を示すものである。ここでは、第１の実施形態で示した構成の半導体集積回路において、少なくとも一部のメモリマクロのサイズが異なる場合、つまり、ワード幅が同一でない複数のメモリマクロに記憶されたデータを一括して訂正できるように構成した場合について説明する。なお、第１の実施形態と同一部分には同一符号を付し、その詳しい説明は割愛する。
【００７０】
本実施形態の場合、たとえば図１０に示すように、全部で５つのメモリ回路部３１０- 1 ，３１０- 2 ，３１０- 3 ，・・・，３１０- 5 が用意されている。５つのメモリ回路部３１０- 1 ，３１０- 2 ，３１０- 3 ，・・・，３１０- 5 のうち、４つのメモリ回路部３１０- 1 ，３１０- 2 ，３１０- 3 ，３１０- 4 は、容量（メモリ構成）が３２ｋｂ（３２ｂｉｔ−１Ｋｗｏｒｄ）のメモリマクロ３１１- 1dを有して構成されている。これに対し、メモリ回路部３１０- 5 は、容量（メモリ構成）が１２８ｋｂ（６４ｂｉｔ−２Ｋｗｏｒｄ）のメモリマクロ３１１- 1aを有して構成されている。一方、コード記憶メモリ３２１としては、１９２ビット（３２ビット×４＋６４ビット×１）のデータに対応する１０ビットのＥＣＣコードデータを格納でき、かつ、メモリ最長のワード幅である２Ｋワードのデータに対応できる、２Ｋワードの容量をもつメモリが用意されている。
【００７１】
このような構成において、メモリ回路部３１０- 5 では、メモリマクロ３１１- 1aの、０〜２０４７番目のワードの各データに対応する部分ＥＣＣコードが、第１の実施形態にて説明した通りのアクセス方法（コード生成モードおよびデータ比較／訂正モード）によって生成される。同様に、メモリ回路部３１０- 1 ，３１０- 2 ，３１０- 3 ，３１０- 4 では、各メモリマクロ３１１- 1dの、０〜１０２３番目のワードの各データに対応する部分ＥＣＣコードは、第１の実施形態にて説明した通りのアクセス方法によって生成される。しかし、メモリ回路部３１０- 1 ，３１０- 2 ，３１０- 3 ，３１０- 4 では、各メモリマクロ３１１- 1dの、１０２４〜２０４７番目のワードのデータに対応する部分ＥＣＣコードを生成する場合、つまり、１Ｋワード以上のアドレス（仮想メモリ空間３１１- 1d’）が指定されたときには、たとえば図１１に示すように、対応するＮＯＰコントローラ３１５によって、部分ＥＣＣコード生成回路３１３からの出力が全ビット“０”に制御される。これにより、１Ｋワードの各メモリマクロ３１１- 1dは、コード記憶メモリ３２１に対して、１０２４〜２０４７番目のワードの全てに“０”が書き込まれている、２Ｋワードのメモリマクロとして扱うことが可能になる。
【００７２】
すなわち、メモリマクロ３１１- 1a，３１１- 1dのワード幅が異なる場合、最大ワード幅（この例の場合、メモリマクロ３１１- 1aの２Ｋワード）に合わせて、部分ＥＣＣコードをそれぞれに生成する。その際、実際には存在しない仮想メモリ空間３１１- 1d’に対応するコード記憶メモリ３２１の該当アドレスには、ＥＣＣコードデータとして“０”を書き込む。こうすることにより、メモリマクロ３１１- 1a，３１１- 1dのワード幅が異なる場合においても、ＥＣＣコードデータの生成（ＭＵＸ）が可能となる。
【００７３】
なお、部分ＥＣＣデコード回路３１４においても、同様に、１Ｋワードの各メモリマクロ３１１- 1dは、ＮＯＰコントローラ３１５の出力により、１Ｋワード分の仮想メモリ空間３１１- 1d’を有する、２Ｋワードの容量をもつメモリとして扱われる（ただし、仮想メモリ空間３１１- 1d’ではソフトエラーが発生しないため、ＥＣＣ処理は行われない）。
【００７４】
上記したように、ワード幅が異なるメモリマクロ３１１- 1a，３１１- 1dを搭載してなる場合においても、チップ面積の増加を招いたり、通常サイクルのメモリ動作にほとんど影響を与えることなしに、各メモリマクロ３１１- 1a，３１１- 1dに記憶される全データに対して、一括してＥＣＣ処理を施すことが可能である。
【００７５】
なお、上記した第３の実施形態（図１１参照）に示した構成においては、たとえば図１２に示すように、４つある１Ｋワードのメモリマクロ３１１- 1dのうちの、２つのメモリマクロ３１１- 1dをアドレス空間的に縦積み（縦位置に配置）し、実質的に仮想メモリ空間３１１- 1d’をなくすようにすることも可能である。この例の場合、たとえば図１２に示すように、各メモリ回路部３１０- 3 ，３１０- 4 が、それぞれ、１Ｋワードのメモリマクロ３１１- 1dを２つずつ備えた構成と等しくなる。こうして、１Ｋワードのメモリマクロ３１１- 1dのワード幅を、仮想的に、２Ｋワードのメモリマクロ３１１- 1aのワード幅と一致させることもできる。このような構成とした場合には、たとえばマルチプレクサ３１７ａによって、０〜１０２３番目のワードの各データをアクセスする際と、１０２４〜２０４７番目のワードの各データをアクセスする際とで、縦位置にある２つのメモリマクロ３１１- 1dが択一的に切り換えられる。これにより、縦位置にある２つのメモリマクロ３１１- 1dを独立させて制御することが可能である。
【００７６】
このような構成とすることにより、さらに、仮想メモリ空間３１１- 1d’を設けるようにした場合の、コード記憶メモリ３２１での冗長なメモリ領域が不要になるとともに、ＥＣＣコードデータのビット幅も１０ビットから９ビットに削減できる。
【００７７】
特に、同じメモリ構成を有するメモリマクロ３１１- 1dの各部分ＥＣＣコード生成回路３１３が、それぞれ同じ行列成分に応じた規則にしたがって部分ＥＣＣコードを生成する場合においては、１Ｋワードのメモリマクロ３１１- 1dにそれぞれ必要であった部分ＥＣＣコード生成回路３１３を削減（この例の場合、４つを２つに半減）でき、チップ面積をより減少させることが可能である。
【００７８】
なお、アドレス空間的に縦位置に配置されるメモリマクロとしては、同時に搭載されるメモリマクロの最大ワード幅に応じ、たとえば、１Ｋｗｏｒｄのメモリマクロと６４Ｋｗｏｒｄのメモリマクロとが同時に搭載される場合には、１Ｋｗｏｒｄのメモリマクロを６４個まで配置することが可能である。
【００７９】
［第４の実施形態］
図１３は、この発明の第４の実施形態にしたがった、集積回路装置（半導体チップ）におけるＥＣＣメモリ回路３００ｃの構成例（アドレス空間）を示すものである。ここでは、第１の実施形態で示した構成の半導体集積回路において、同じサイズの複数のメモリマクロに記憶されたデータを一括して訂正できるように構成した場合について説明する。なお、第１の実施形態と同一部分には同一符号を付し、その詳しい説明は割愛する。
【００８０】
本実施形態の場合、たとえば図１３に示すように、複数（この例では、１２８個）のメモリ回路部３１０が用意されている。各メモリ回路部３１０は、容量（メモリ構成）が２５６ビット（８ｂｉｔ−３２ｗｏｒｄ）のメモリマクロ３１１- 1eを、それぞれ、複数（この例では、８個ずつ）有して構成されている。すなわち、各メモリ回路部３１０においては、８つのメモリマクロ３１１- 1eが、アドレス空間的に縦位置に配置されている。このような構成とした場合には、たとえばマルチプレクサ３１７ａによって、それぞれのメモリマクロ３１１- 1eをアクセスする際に択一的に切り換えることにより、縦位置にある８つのメモリマクロ３１１- 1eを独立させて制御することが可能である。一方、コード記憶メモリ３２１としては、１０２４ビット（８ビット×１２８）のデータに対応する１２ビットのＥＣＣコードデータを格納でき、かつ、メモリ総長のワード幅である２５６ワードのデータに対応できる、２５６ワードの容量をもつメモリが用意されている。
【００８１】
このような構成とした場合にも、第１の実施形態の場合と同様に、メモリマクロのＮＯＰウェイティング状態への割り込みを利用して、ＥＣＣ処理を行うことにより、メモリマクロの通常のメモリ動作にほとんど影響を与えることなしに、一括したＥＣＣ処理を施すことができる。しかも、コード生成回路およびデコード回路の総面積をほとんど増加させることなく、配線数（配線領域）を大幅に削減できるようになる。したがって、ＥＣＣ回路システムの搭載による、チップ面積の増加を従来に比べて飛躍的に抑えることが可能となるものである。
【００８２】
より具体的には、上記した構成において、面積のオーバーヘッドを見積もったところ、ＥＣＣ回路システムを搭載しない場合と比較して、面積の増加を全体で１７．７％程度に抑えることが可能となる。因みに、従来のＥＣＣ回路システムの場合、コード記憶メモリのみで約６３％の面積の増加となる。
【００８３】
［第５の実施形態］
図１４は、この発明の第５の実施形態にしたがった、集積回路装置（半導体チップ）におけるＥＣＣメモリ回路３００ｄの構成例（アドレス空間）を示すものである。ここでは、第１の実施形態で示した構成の半導体集積回路において、異なるサイズの複数のメモリマクロに記憶されたデータを一括して訂正できるように構成した場合について説明する。なお、第１の実施形態と同一部分には同一符号を付し、その詳しい説明は割愛する。
【００８４】
本実施形態の場合、たとえば図１４に示すように、全体で１１個のメモリ回路部３１０- 1 ，３１０- 2 ，３１０- 3 ，３１０- 4 ，３１０- 5 が用意されている。１１個のメモリ回路部３１０- 1 ，３１０- 2 ，３１０- 3 ，３１０- 4 ，３１０- 5 のうち、２個のメモリ回路部３１０- 1 は、容量（メモリ構成）が１ｋｂ（８ｂｉｔ−８Ｋ／６４ｗｏｒｄ）の複数（この例の場合、８Ｋワード分で、６４個）のメモリマクロ３１１- 1fをそれぞれ有して構成されている。各メモリマクロ３１１- 1fは、アドレス空間的に縦位置に配置されている。他の、２個のメモリ回路部３１０- 2 は、容量（メモリ構成）が４ｋｂ（１６ｂｉｔ−８Ｋ／６４ｗｏｒｄ）の複数（この例の場合、８Ｋワード分で、３２個）のメモリマクロ３１１- 1gをそれぞれ有して構成されている。各メモリマクロ３１１- 1gは、アドレス空間的に縦位置に配置されている。他の、１個のメモリ回路部３１０- 3 は、容量（メモリ構成）が４ｋｂ（３２ｂｉｔ−８Ｋ／６４ｗｏｒｄ）の複数（この例の場合、８Ｋワード分で、６４個）のメモリマクロ３１１- 1hを有して構成されている。各メモリマクロ３１１- 1hは、アドレス空間的に縦位置に配置されている。他の、２個のメモリ回路部３１０- 4 は、容量（メモリ構成）が１２８ｋｂ（３２ｂｉｔ−８Ｋ／６４ｗｏｒｄ）の複数（この例の場合、８Ｋワード分で、２個）のメモリマクロ３１１- 1iをそれぞれ有して構成されている。各メモリマクロ３１１- 1iは、アドレス空間的に縦位置に配置されている。残りの、４個のメモリ回路部３１０- 5 は、容量（メモリ構成）が５１２ｋｂ（６４ｂｉｔ−８Ｋ／６４ｗｏｒｄ）のメモリマクロ３１１- 1jを１つずつ有して構成されている。一方、コード記憶メモリ３２１としては、４００ビット（（１ｋｂ×１２８＋４ｋｂ×６４＋４ｋｂ×６４＋１２８ｋｂ×４＋５１２ｋｂ×４）／８Ｋワード）のデータに対応する１１ビットのＥＣＣコードデータを格納でき、かつ、メモリ総長のワード幅である８Ｋワードのデータに対応できる、８Ｋワードの容量をもつメモリが用意されている。
【００８５】
このような構成において、各メモリ回路部３１０- 1 ，３１０- 2 ，３１０- 3 ，３１０- 4 では、たとえばマルチプレクサ３１７ａによって、それぞれのメモリマクロ３１１- 1f，３１１- 1g，３１１- 1h，３１１- 1iをアクセスする際に択一的に切り換えることにより、縦位置にある複数のメモリマクロ３１１- 1f，３１１- 1g，３１１- 1h，３１１- 1iを独立させて制御することが可能である。そして、メモリマクロ３１１- 1f，３１１- 1g，３１１- 1h，３１１- 1i，３１１- 1jの全ワードの各データに対応する部分ＥＣＣコードが、第１の実施形態にて説明した通りのアクセス方法（コード生成モードおよびデータ比較／訂正モード）によって生成される。
【００８６】
このような構成とした場合にも、第１の実施形態の場合と同様に、メモリマクロのＮＯＰウェイティング状態への割り込みを利用して、ＥＣＣ処理を行うことにより、メモリマクロの通常のメモリ動作にほとんど影響を与えることなしに、一括したＥＣＣ処理を施すことができる。しかも、コード生成回路およびデコード回路の総面積をほとんど増加させることなく、配線数（配線領域）を大幅に削減できるようになる。したがって、ＥＣＣ回路システムの搭載による、チップ面積の増加を従来に比べて飛躍的に抑えることが可能となるものである。
【００８７】
より具体的には、上記した構成において、面積のオーバーヘッドを見積もったところ、ＥＣＣ回路システムを搭載しない場合と比較して、面積の増加を全体で６．８％程度に抑えることが可能となる。
【００８８】
図１５は、上記した第５の実施形態において、アドレス空間的に縦位置に配置することが可能な多数のメモリマクロがチップ上に散在している場合を例に示すものである。この例の場合、図１２に示した実施形態にしたがえば、たとえば６４個（図面では、便宜上１６個しか示していない）のメモリマクロ３１１- 1fに対し、部分ＥＣＣコード生成回路３１３などは１組でよい。しかし、実際のチップ上でのメモリマクロ３１１- 1fの分布は、必ずしも、メモリマクロ３１１- 1f同士が隣接して配置されるとは限らない。そのため、部分ＥＣＣコード生成回路３１３とメモリマクロ３１１- 1fとが大幅に離れて配置されるような場合には、配線遅延によってサイクルタイムが大幅に悪化する可能性がある（同図（ａ）参照）。
【００８９】
そこで、アドレス空間的に縦位置に配置することが可能な、同じサイズを有する多数のメモリマクロ３１１- 1fがチップ上に散在している場合においては、たとえば６４個のメモリマクロ３１１- 1fで共有される部分ＥＣＣコード生成回路３１３などを複数組（この例では、４組）用意し、互いにコロニーを形成するように近接させて配置することが可能な１６個（図面では、便宜上４個）のメモリマクロ３１１- 1fで１組の部分ＥＣＣコード生成回路３１３などを共有させることで、配線遅延を緩和することができる（同図（ｂ）参照）。ただし、複数組の部分ＥＣＣコード生成回路３１３などを用意する場合であっても、実際にアクセスされるワードは１つであり、６４個中で選択されるメモリマクロ３１１- 1fは唯一となるため、生成される部分ＥＣＣコードに衝突が起こることはない。
【００９０】
なお、接続に特別な方法は必要なく、他のメモリマクロ用の部分ＥＣＣコード生成回路などと同様の方法でよい。また、メモリマクロ３１１- 1fに限らず、他のメモリマクロの場合も同様である。
【００９１】
［第６の実施形態］
図１６は、この発明の第６の実施形態にしたがった、集積回路装置（半導体チップ）におけるＥＣＣメモリ回路３００ｅの基本構成を示すものである。ここでは、第１の実施形態で示した構成の半導体集積回路において、アクセスタイム差などを考慮しつつ、少なくとも一部のメモリマクロのサイズが異なる複数のメモリマクロに記憶されたデータを一括して訂正できるように構成した場合について説明する。なお、第１の実施形態と同一部分には同一符号を付し、その詳しい説明は割愛する。
【００９２】
本実施形態の場合、たとえば図１６に示すように、複数のメモリ回路部３１０- 1 ，３１０- 2 ，３１０- 3 ，・・・，３１０- n が用意されている。複数のメモリ回路部３１０- 1 ，３１０- 2 ，３１０- 3 ，・・・，３１０- n のうち、たとえば、メモリ回路部３１０- 1 ，３１０- 2 ，３１０- 3 ，・・・は、アクセスタイム（Ｔａｃｃ）が２ｎｓであるメモリマクロ３１１- 1kをそれぞれ有して構成されている。これに対し、たとえば最終段のメモリ回路部３１０- n は、アクセスタイムが４ｎｓであるメモリマクロ３１１- 1mを有して構成されている。
【００９３】
ここで、複数のメモリ回路を備える集積回路装置においては、メモリ構成などに起因し、各メモリ回路間でアクセスタイムに差があるのが一般的である。通常、最もアクセスタイムが遅いメモリマクロの出力から、部分ＥＣＣコード生成回路を通じて、ＥＣＣコード記憶部のコードレジスタに至るまでのパスが、そのＥＣＣメモリ回路におけるワーストパスになる。本実施形態の例だと、メモリマクロ３１１- 1mの出力から、部分ＥＣＣコード生成回路３１３を通じて、ＥＣＣコード記憶部３２０のコードレジスタ３２４に至るパスが、本ＥＣＣメモリ回路３００ｅにおけるワーストパスになる。このワーストパスにより、システム全体のサイクルタイム（ｔｃｙｃ）が律速される。
【００９４】
このワーストパスによってサイクルタイムが律速されるのを避けるために、本実施形態では、たとえば図１６に示すように、時間がかかるパスの各所にパイプライン接続を接離するためのデータレジスタ３３０が挿入されている。ここでは、その代表例として、メモリ回路部３１０- n のメモリマクロ３１１- 1mの出力の直後、および、メモリ回路部３１０- n との間を結ぶ、長い配線による配線遅延が生じやすい信号線ＳＬ，ＳＬ’上などに、それぞれ、データレジスタ３３０が設けられている。特に、メモリ回路部３１０- n との間を結ぶ、ステートコントローラ３２３の出力が供給される信号線上およびアドレスカウンタ３２２の出力が供給される信号線上に、それぞれ、データレジスタ３３０を設けるようにした場合には、制御のための信号線を一緒に切り離すことにより、コードレジスタ３２４にとっては、ＮＯＰ割り込みサイクルが１サイクル分だけ遅れてきたのと同義となる。すなわち、メモリ構成に応じてアクセスタイムが大きく異なる場合のメモリ間スキューに対しては、第１の実施形態にて説明した通りのアクセス方法（コード生成モードおよびデータ比較／訂正モード）によってＥＣＣ処理を行う際に、サイクルタイム（この例では、５ｎｓ）に収まりそうもないメモリ回路部３１０- n のパスだけを切り離すことにより、たとえレイテンシが増えたとしても、システム全体としてはメモリマクロ３１１- 1mのＮＯＰ割り込みサイクルが１サイクル分だけ遅れてくるのと同義であり、これによるパフォーマンスの劣化はほとんどない。
【００９５】
なお、アクセスタイムが大きいメモリマクロ３１１- 1mに対応する部分ＥＣＣコード生成回路３１３の、ゲートの段数が少なくなるように、各メモリマクロ３１１- 1k，３１１- 1mのアクセスタイムに合わせて、部分ハミングコード行列式を選択（ＸＯＲ数を調整）することも可能である。
【００９６】
次に、図１７を参照して、本実施形態にかかる集積回路装置（ＥＣＣメモリ回路３００ｅ）の動作について、さらに詳しく説明する。なお、ここでは、たとえば図１８（ａ）に示すように、メモリマクロ３１１- 1mから出力される保持データ（Ｄａｔａ）とＮＯＰコントローラ３１５から出力される信号（この例では、ＥＣＣ処理実行信号（ＥＣＣ＿ｏｎ））とを部分ＥＣＣコード生成回路３１３の入力とし、この部分ＥＣＣコード生成回路３１３の出力である部分ＥＣＣコード（Ｃｏｄｅ）をＥＣＣコード記憶部３２０のコードレジスタ３２４に転送し、このコードレジスタ３２４の出力（Ｃｏｄｅ＿ｒｅｇ）と上記部分ＥＣＣコード生成回路３１３の次の出力（Ｃｏｄｅ）とを加算器３２５ａにより加算したものをコード記憶メモリ３２１の入力とする場合を、通常時の動作、つまり、データレジスタ３３０を追加していない場合の動作として説明する（ただし、説明を簡単化するため、他のメモリマクロ３１１- 1kからの保持データに対応する部分ＥＣＣコードを加算するための加算器などは省略している）。
【００９７】
まず、通常時には、たとえば図１７（ａ）に示すように、ＮＯＰコントローラ３１５からのＥＣＣ＿ｏｎ信号（ハイレベル：Ｈｉ）を受けた部分ＥＣＣコード生成回路３１３において、クロック信号ＣＬＫのＣＬＫ１のタイミング（Ｈｉ）で出力されたＤａｔａ（Ｄ１）を元にＣｏｄｅ（Ｃ１）が生成される。このＣｏｄｅ（Ｃ１）は、同サイクル内で、コードレジスタ３２４に送られた後、コードレジスタ３２４からはクロック信号ＣＬＫのＣＬＫ２のタイミング（Ｈｉ）で出力される。以上が、通常時の動作である。
【００９８】
ところが、メモリマクロ３１１- 1mのアクセスタイム（図１７（ａ）中に（Ａ）で示す）が十分に遅い場合または部分ＥＣＣコード生成回路３１３からコードレジスタ３２４までの配線遅延（図１７（ａ）中に（Ｂ）で示す）が十分に大きい場合、クロック信号ＣＬＫの同じＣＬＫ１のタイミング（同サイクル）内で、コードレジスタ３２４へのＣｏｄｅ（Ｃ１）の転送が間に合わなくなる可能性がある。つまり、アクセスタイムが十分に遅い場合には、たとえば図１７（ｂ）に示すように、クロック信号ＣＬＫのＣＬＫ１のタイミングで、メモリマクロ３１１- 1mからのＤａｔａ（Ｄ１）が出力されるものの、このＤａｔａ（Ｄ１）の出力はクロック信号ＣＬＫのＣＬＫ１のタイミングの後半でようやく開始される（図１７（ｂ）中の（Ａ）’参照）。
【００９９】
そこで、メモリマクロ３１１- 1mのアクセスタイムが十分に遅い場合には、たとえば図１８（ｂ）に示すように、部分ＥＣＣコード生成回路３１３とメモリマクロ３１１- 1mとの間に、データレジスタ３３０を挿入する。また、この例では、部分ＥＣＣコード生成回路３１３とＮＯＰコントローラ３１５との間にも、データレジスタ３３０を挿入する。
【０１００】
このデータレジスタ３３０の挿入時、つまり、アクセスタイムが十分に遅い場合には、たとえば図１７（ｂ）に示すように、メモリマクロ３１１- 1mからのＤａｔａ（Ｄ１）が、クロック信号ＣＬＫの次のＣＬＫ２のタイミングで、データレジスタ３３０内に一時的に保持されるとともに、そのＣＬＫ２のタイミング（同サイクル内）で、このレジスタ３３０内のＤａｔａ’（Ｄ１）が部分ＥＣＣコード生成回路３１３に出力される。同様に、ＮＯＰコントローラ３１５からのＥＣＣ＿ｏｎ（Ｈｉ）も、データレジスタ３３０で１サイクル分だけ遅らされた後、ＥＣＣ＿ｏｎ’として部分ＥＣＣコード生成回路３１３に出力される。これにより、クロック信号ＣＬＫのＣＬＫ２のタイミングで、部分ＥＣＣコードの生成が行われて、Ｃｏｄｅ（Ｃ１）が出力される。このＣｏｄｅ（Ｃ１）は、同サイクル内で、コードレジスタ３２４に送られた後、コードレジスタ３２４からはクロック信号ＣＬＫの次のＣＬＫ３のタイミング（Ｈｉ）で出力される。
【０１０１】
一方、部分ＥＣＣコード生成回路３１３とコードレジスタ３２４との間の配線遅延が十分に大きい場合（図１７（ｃ）中の（Ｂ）’参照）には、たとえば図１８（ｃ）に示すように、部分ＥＣＣコード生成回路３１３とコードレジスタ３２４との間に、データレジスタ３３０を挿入する。
【０１０２】
このデータレジスタ３３０の挿入時、つまり、配線遅延が十分に大きい場合には、たとえば図１７（ｃ）に示すように、ＮＯＰコントローラ３１５からのＥＣＣ＿ｏｎ信号（Ｈｉ）を受けた部分ＥＣＣコード生成回路３１３において、クロック信号ＣＬＫのＣＬＫ１のタイミング（Ｈｉ）で出力されたＤａｔａ（Ｄ１）を元にＣｏｄｅ（Ｃ１）が生成される。このＣｏｄｅ（Ｃ１）は、同サイクル内で、データレジスタ３３０に送られて一時的に保持される。データレジスタ３３０からは、Ｃｏｄｅ’（Ｃ１）が、クロック信号ＣＬＫの次のＣＬＫ２のタイミング（Ｈｉ）でコードレジスタ３２４に出力された後、このコードレジスタ３２４からはクロック信号ＣＬＫの次のＣＬＫ３のタイミング（Ｈｉ）で出力される。
【０１０３】
このように、データレジスタ３３０を追加するようにした場合、部分ＥＣＣコード（Ｃｏｄｅ，Ｃｏｄｅ’）がコードレジスタ３２４に到達するのに必要なサイクル数は増えるものの、特に大きなデメリットとはなりえない。なぜならば、データレジスタ３３０を追加していない場合の通常のＥＣＣメモリ回路において、１００サイクル中にＮＯＰ割り込みサイクルが１０回起こると仮定し、そのＮＯＰ割り込みサイクルのうちの最初の１回目（たとえば、８サイクル目に発生）をＥＣＣ処理に利用するとした場合、通常のＥＣＣメモリ回路では９サイクル目に部分ＥＣＣコードが出力される。これに対し、データレジスタ３３０を１つ追加した本実施形態のＥＣＣメモリ回路３００ｅの場合は、１０サイクル目に部分ＥＣＣコードが出力されるだけで、残りの９０サイクルは次の周期の待ち時間に費やされるため、次のサイクルに影響を及ぼすことはほとんどない。
【０１０４】
本実施形態のように、信号線をパイプライン化することで、共有することが可能なメモリマクロのサイズおよびレイアウトによる制約を排除できる。
【０１０５】
［第７の実施形態］
図１９は、この発明の第７の実施形態にしたがった、集積回路装置（半導体チップ）におけるＥＣＣメモリ回路３００ｆの基本構成を示すものである。ここでは、第１の実施形態で示した構成の半導体集積回路において、フラグ情報を用意せずに、複数のメモリマクロに記憶されたデータを一括して訂正できるように構成した場合について説明する。なお、第１の実施形態と同一部分には同一符号を付し、その詳しい説明は割愛する。
【０１０６】
本実施形態の場合、たとえば図１９に示すように、８つのメモリ回路部３１０- 1 ，３１０- 2 ，３１０- 3 ，・・・，３１０- 8 が用意されている。各メモリ回路部３１０- 1 ，３１０- 2 ，３１０- 3 ，・・・，３１０- 8 は、それぞれ、異なるサイズまたは同じサイズのメモリマクロ３１１を有して構成されている。ただし、メモリマクロ３１１の各アドレスには、フラグ記憶部であるフラグ格納用ビットは設けられていない。つまり、メモリマクロ３１１の各アドレスにフラグ格納用ビットを追加せずにシステムを構築した本実施形態の集積回路装置においては、ライト動作が行われた際に、アドレスごとのライト更新履歴管理が不可能となる。
【０１０７】
図２０は、上記した構成における、ＥＣＣ処理シーケンスを示すフローチャートである。まず、シーケンスの最初（ＥＣＣ処理開始初期）では、保持データに対応したＥＣＣコードデータが生成されていない。そのため、アドレス“０”の保持データを読み出した後、コード生成モードに入る。
【０１０８】
コード生成モードでは、ステートコントローラ３２３によって各ＮＯＰコントローラ３１５が制御されることにより、まず先に、各メモリマクロ３１１の、アドレスカウンタ３２２の出力に応じたアドレス“０”の保持データが読み出される。そして、次のＮＯＰ割り込みサイクルにおいて、ステートコントローラ３２３の制御により、各メモリマクロ３１１のアドレス“０”から読み出された保持データは、それぞれ、対応する部分ＥＣＣコード生成回路３１３に送られる。これにより、ＮＯＰコントローラ３１５の制御のもと、それぞれ、対応する部分ＥＣＣコード生成回路３１３により、部分ハミングコード行列式の規則にしたがって、部分ＥＣＣコードが生成される。各部分ＥＣＣコード生成回路３１３にて生成された部分ＥＣＣコードは、信号線ＳＬおよび加算器３１９，３２５ａを介してＭＵＸされた後、逐次、コードレジスタ３２４に送られる。
【０１０９】
こうして、コードレジスタ３２４に、すべてのアドレス“０”に対する、部分ＥＣＣコードに対応するＥＣＣコードデータが蓄えられる。このことは、ステートコントローラ３２３において、各部分ＥＣＣコード生成回路３１３からのコード生成終了信号により判断される。これにより、コードレジスタ３２４に蓄えられたＥＣＣコードデータが、コード記憶メモリ３２１のアドレス“０”に書き込まれる。
【０１１０】
第１の実施形態に示したアクセス方法（図６参照）とは異なり、上記の処理を、すべてのアドレス“０”〜について繰り返し実行する。そして、全アドレスの保持データに対応するＥＣＣコードデータの生成が終了すると、コード生成モードは終了され、ステートコントローラ３２３の制御により、データ比較／訂正モードに移行する。
【０１１１】
データ比較／訂正モードでは、第１の実施形態に示したアクセス方法とほぼ同様の方法により、一連の処理が行われる。ただし、これらの一連の処理の間、各ＮＯＰコントローラ３１５は対応するメモリマクロ３１１に対するライト動作を監視し、もし、いずれかのメモリマクロ３１１に対してライト動作が実行された場合には、フラグ情報に代えて、ステートコントローラ３２３のステップ状態をリセットさせることにより、アドレス“０”に対する部分ＥＣＣコードの生成（コード生成モード）から再開するように制御される。これにより、各メモリマクロ３１１にフラグ情報を用いずとも、各メモリマクロ３１１に記憶されている全保持データに対し、一括したＥＣＣ処理が可能な集積回路装置（ＥＣＣメモリ回路３００ｆ）を実現することが可能となる。
【０１１２】
本実施形態においては、メモリマクロのアドレス数が比較的少ない装置およびデータの書き込み頻度が少ない装置、あるいは、電源オン状態において、ＮＯＰ／ＳＴＢＹ状態が長時間連続するような、その多くの時間を待機状態が占める装置に用いて、特に有効である。
【０１１３】
詳述したように、本発明の実施形態によれば、通常のメモリ動作にほとんど影響を与えることなしに、複数のメモリマクロに記憶されたデータを一括してＥＣＣ処理することができ、面積の増加を最小限に抑制し得るとともに、メモリマクロのサイズに依存したり、レイアウトによる制約を受けることなく、高い自由度をもってソフトエラー対策を施すことが可能となるものである。
【０１１４】
なお、上記した各実施形態においては、いずれも１チップ化されてなる集積回路装置に限らず、たとえば図２１に示すように、ＣＰＵ２００、データ格納用のメモリマクロ３１１、および、部分ＥＣＣコード生成／デコード回路３１２などの複数の半導体回路部品を、同一の印刷回路基板（ＰＣＢ）１０１上に集積してなる大規模な構成の集積回路システムにも同様に適用できる。しかも、半導体基板１００上および印刷回路基板１０１上に搭載されるＣＰＵ２００としては、複数のメモリ回路部３１０ｎに対して共通に配置する場合に限らず、たとえば、メモリ回路部３１０ｎごとに配置する構成とすることも可能である。
【０１１５】
また、上記した実施形態において、同じメモリ構成を有する複数のメモリマクロにそれぞれ対応し、同じハミングコード行列式に応じた規則にしたがって部分ＥＣＣコードを生成する複数の部分ＥＣＣコード生成回路にあっては、メモリマクロに対応する部分ＥＣＣコード生成回路によりそれぞれ部分ＥＣＣコードを生成する場合に限らず、いずれかの部分ＥＣＣコード生成回路により選択的に部分ＥＣＣコードを生成するように構成することも可能である。
【０１１６】
また、上記した各実施形態においては、コードレジスタを介して、ＥＣＣコードデータのコード記憶メモリへの格納を行うように構成したが、これに限らず、たとえば複数の加算器より出力される最終の加算値をＥＣＣコードデータとし、これをコード記憶メモリに直に書き込むように構成してもよい。
【０１１７】
また、上記した実施形態において、たとえばＮＯＰコントローラのそれぞれを、複数のメモリ回路の総アドレス数と同数のアドレス制御が可能な構成とし、対応するメモリ回路以外のメモリ回路をも選択的に制御できるようにすることも可能である。特に、たとえば図２２に示すように、１つのＮＯＰコントローラ３１５を、すべてのメモリマクロ３１１，３１１，…の総アドレス数と同数のアドレス制御が可能な構成とし、すべてのメモリマクロ３１１，３１１，…を１つのＮＯＰコントローラ３１５により選択的に制御できるように構成することも可能である。
【０１１８】
また、上記した実施形態においては、部分ＥＣＣコード生成回路３１３よりそれぞれ出力されるエラー訂正コードとは異なる、コード生成終了信号とフラグ情報（ｆｏｒ  ＥＣＣ  ｃｏｎｔｏｒｏｌ）との排他的論理和算値によってコード記憶メモリ３２１などを制御するようにしたが、たとえば図２３に示すように、積算器（論理積回路）３４０により各ＮＯＰコントローラ３１５の出力信号（コード生成終了信号およびフラグ情報）の論理積値を求め、これをもとにステートコントローラ３２３によって、コード記憶メモリ３２１およびコードレジスタ３２４を制御するように構成することもできる。
【０１１９】
さらに、保持データの書き換えにともなうＥＣＣコードデータの生成動作においては、たとえば図２４に示すように、ＥＣＣコードデータの生成対象となるアドレスの保持データが、直前のライトサイクルにより書き換えられた場合（Ｍａｃｒｏ３の４サイクル目のＷｎ）、このサイクルで書き換えられた保持データをメモリスルーさせ、部分ＥＣＣコード生成回路にて部分ＥＣＣコードに変換した後に、コードレジスタに転送させるようにすることも可能である（ただし、フラグ情報としては実際に生成対象アドレスの保持データの書き換えを行った際（数サイクル後のＷｎ）に“０”書き込み）。この場合、ＮＯＰ割り込みサイクルを待たずに、コード転送が可能となるため、ＥＣＣコード生成処理の効率をより向上できる。
【０１２０】
その他、本願発明は、上記（各）実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。さらに、上記（各）実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。たとえば、（各）実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題（の少なくとも１つ）が解決でき、発明の効果の欄で述べられている効果（の少なくとも１つ）が得られる場合には、その構成要件が削除された構成が発明として抽出され得る。
【図面の簡単な説明】
【０１２１】
【図１】この発明の第１の実施形態にしたがった、集積回路装置の構成例を示すブロック図。
【図２】第１の実施形態にしたがった、集積回路装置におけるＥＣＣメモリ回路の構成例を示す回路図。
【図３】第１の実施形態にしたがった、ハミングコード行列式について説明するために示す図。
【図４】第１の実施形態にしたがった、ＥＣＣメモリ回路のアクセス方法（ＥＣＣコードデータの生成処理）について説明するために示す図。
【図５】第１の実施形態にしたがった、ＥＣＣメモリ回路のアクセス方法（ＥＣＣコードデータの比較／訂正処理）について説明するために示す図。
【図６】第１の実施形態にしたがった、ＥＣＣ処理シーケンスでの処理の流れを示すフローチャート。
【図７】第１の実施形態にしたがった、ＥＣＣ処理シーケンスによる効果について説明するために示す図。
【図８】第１の実施形態にしたがった、面積のオーバーヘッドを見積もった際の結果を説明するために、ＥＣＣメモリ回路の構成（アドレス空間）を示す図。
【図９】この発明の第２の実施形態にしたがった、集積回路装置におけるＥＣＣメモリ回路の構成（アドレス空間）を示す図。
【図１０】この発明の第３の実施形態にしたがった、集積回路装置におけるＥＣＣメモリ回路の構成例を示す回路図。
【図１１】第３の実施形態にしたがった、ＥＣＣメモリ回路の構成（アドレス空間）を示す図。
【図１２】第３の実施形態にしたがった、ＥＣＣメモリ回路の他の構成（アドレス空間）を示す図。
【図１３】この発明の第４の実施形態にしたがった、集積回路装置におけるＥＣＣメモリ回路の構成（アドレス空間）を示す図。
【図１４】この発明の第５の実施形態にしたがった、集積回路装置におけるＥＣＣメモリ回路の構成（アドレス空間）を示す図。
【図１５】第５の実施形態にしたがった、ＥＣＣメモリ回路の構成（レイアウト）を示す図。
【図１６】この発明の第６の実施形態にしたがった、集積回路装置におけるＥＣＣメモリ回路の構成例を示す回路図。
【図１７】第６の実施形態にしたがった、ＥＣＣメモリ回路の動作について説明するために示すタイミングチャート。
【図１８】第６の実施形態にしたがった、ＥＣＣメモリ回路の動作について説明するために示す回路図。
【図１９】この発明の第７の実施形態にしたがった、集積回路装置におけるＥＣＣメモリ回路の構成例を示す回路図。
【図２０】第７の実施形態にしたがった、ＥＣＣ処理シーケンスでの処理の流れを示すフローチャート。
【図２１】この発明の他の実施形態にしたがった、集積回路システムの構成例を示すブロック図。
【図２２】この発明の他の実施形態にしたがった、集積回路装置におけるＥＣＣメモリ回路の構成例を示す回路図。
【図２３】この発明のまた別の実施形態にしたがった、集積回路装置におけるＥＣＣメモリ回路の構成例を示す回路図。
【図２４】この発明のさらに別の実施形態にしたがった、ＥＣＣメモリ回路のアクセス方法（ＥＣＣコードデータの比較／訂正処理）について説明するために示す図。
【符号の説明】
【０１２２】
１００…半導体基板、１０１…印刷回路基板、２００…ＣＰＵ、３００…ＥＣＣメモリ回路、３１０，３１０ｎ…メモリ回路部、３１１…メモリマクロ、３１１ａ…フラグ格納用ビット、３１３…部分ＥＣＣコード生成回路、３１４…部分ＥＣＣデコード回路、３１５…ＮＯＰコントローラ、３１６…アドレスコンパレータ、３１７ｃ…マルチプレクサ、３１９…加算器、３２０，３２０’…ＥＣＣコード記憶部、３２１…コード記憶メモリ、３２２…アドレスカウンタ、３２３…ステートコントローラ、３２４…コードレジスタ、３３０…データレジスタ、３４０…積算器、ＳＬ，ＳＬ’…信号線。
【図１】
2008090419.tif 000003
【図２】
2008090419.tif 000004
【図３】
2008090419.tif 000005
【図４】
2008090419.tif 000006
【図５】
2008090419.tif 000007
【図６】
2008090419.tif 000008
【図７】
2008090419.tif 000009
【図８】
2008090419.tif 000010
【図９】
2008090419.tif 000011
【図１０】
2008090419.tif 000012
【図１１】
2008090419.tif 000013
【図１２】
2008090419.tif 000014
【図１３】
2008090419.tif 000015
【図１４】
2008090419.tif 000016
【図１５】
2008090419.tif 000017
【図１６】
2008090419.tif 000018
【図１７】
2008090419.tif 000019
【図１８】
2008090419.tif 000020
【図１９】
2008090419.tif 000021
【図２０】
2008090419.tif 000022
【図２１】
2008090419.tif 000023
【図２２】
2008090419.tif 000024
【図２３】
2008090419.tif 000025
【図２４】
2008090419.tif 000026