(57)【要約】【課題】システムの応答時間の低下を防止し、メモリに発生したデータ誤りに対する誤動作を抑制する。【解決手段】自己修復回路１は、修復データＦＩＦＯ回路１１、メモリ制御信号生成回路１２、メモリ制御信号選択回路１０を備える。修復データＦＩＦＯ回路１１は、メモリ４へのリードアクセスが行われており、かつ、ＥＣＣ回路３において誤り訂正が行われた場合に、誤り訂正済のリードデータＡおよびそのアドレスＡを修復データバッファ１１０に保持する。メモリ制御信号生成回路１２は、メモリ４へのメモリアクセスが行われていない場合に、修復データバッファ１１０に保持した誤り訂正済のリードデータＡおよびそのアドレスＡを含む第２のメモリアクセス制御信号を生成する。メモリ制御信号選択回路１０は、メモリ４へのメモリアクセスが行われていない場合に第２のメモリアクセス制御信号を出力する。【選択図】図１３Ａ
2013250594.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、
前記メモリへのライトデータに対する誤り訂正符号の生成および付加と、前記メモリからのリードデータに対する誤り検出および誤り訂正と、を行うＥＣＣ回路と、
前記メモリに対するメモリアクセスを制御する第１のメモリアクセス制御信号を生成して、当該第１のメモリアクセス制御信号を前記メモリおよび前記ＥＣＣ回路に対して出力するメモリインタフェース回路と、
前記第１のメモリアクセス制御信号と、前記ＥＣＣ回路から出力されたリードデータと、前記ＥＣＣ回路において誤り訂正が行われたか否かを示す誤り検出信号と、に基づいて、前記メモリに対するメモリアクセスを制御する第３のメモリアクセス制御信号を生成して、当該第３のメモリアクセス制御信号を前記メモリおよび前記ＥＣＣ回路に対して出力する自己修復回路と、を備え、
前記自己修復回路は、
前記メモリインタフェース回路による前記メモリへのリードアクセスが行われており、かつ、前記ＥＣＣ回路において誤り訂正が行われた場合に、前記ＥＣＣ回路において誤り訂正が行われた誤り訂正済のリードデータと、当該誤り訂正済みリードデータのアドレスと、を修復データバッファに保持する修復データＦＩＦＯ回路と、
前記メモリインタフェース回路による前記メモリへのメモリアクセスが行われていない場合に、前記修復データバッファに保持した前記誤り訂正済のリードデータおよび当該誤り訂正済みのリードデータのアドレスを含む第２のメモリアクセス制御信号を生成するメモリ制御信号生成回路と、
前記メモリインタフェース回路による前記メモリへのメモリアクセスが行われている場合に前記第１のメモリアクセス制御信号を選択し、前記メモリインタフェース回路による前記メモリへのメモリアクセスが行われていない場合に前記第２のメモリアクセス制御信号を選択して、当該選択したメモリアクセス制御信号を前記第３のメモリアクセス制御信号として出力するメモリ制御信号選択回路と、を備える
自己修復メモリ回路。
【請求項２】
前記自己修復回路は、
前記誤り訂正済のリードデータおよび前記誤り訂正済みのリードデータのアドレスのセットをそれぞれ保持する複数の修復データバッファと、
ＦＩＦＯ記録ポインタおよびＦＩＦＯ修復ポインタを前記修復データＦＩＦＯ回路に出力するＦＩＦＯ制御回路と、をさらに備え、
前記修復データＦＩＦＯ回路は、
前記複数の修復データバッファのそれぞれに対応する複数のビットからなる修復待ち制御フラグについて、対応する前記修復データバッファにおいて前記誤り訂正済のリードデータおよび当該誤り訂正済みのリードデータのアドレスを保持している場合には、対応する前記修復待ち制御フラグのビットのレベルをアクティブに設定し、対応する前記修復データバッファにおいて前記誤り訂正済のリードデータおよび当該誤り訂正済みのリードデータのアドレスを保持していない場合には、対応する前記修復待ち制御フラグのビットのレベルをインアクティブに設定して前記ＦＩＦＯ制御回路に出力し、
前記ＦＩＦＯ制御回路は、
前記メモリインタフェース回路による前記メモリへのリードアクセスが行われており、かつ、前記ＥＣＣ回路において誤り訂正が行われ、かつ、前記修復待ち制御フラグの複数ビットのうちの少なくとも１つのビットのレベルがインアクティブに設定された場合に、前記ＦＩＦＯ記録ポインタの値をインクリメントし、
前記修復データＦＩＦＯ回路は、
前記メモリインタフェース回路による前記メモリへのリードアクセスが行われており、かつ、前記ＥＣＣ回路において誤り訂正が行われた場合に、前記誤り訂正済のリードデータおよび前記誤り訂正済みのリードデータのアドレスのセットを前記ＦＩＦＯ記録ポインタが指示する修復データバッファに保持し、
前記メモリ制御信号生成回路は、
前記第２のメモリアクセス制御信号にライトイネーブル信号を含み、前記第２のメモリアクセス制御信号を生成する場合に、前記ライトイネーブル信号のレベルをアクティブに設定して前記ＦＩＦＯ制御回路に出力し、
前記ＦＩＦＯ制御回路は、
前記第２のメモリアクセス制御信号に含まれる前記ライトイネーブル信号のレベルがアクティブに設定された場合に、前記ＦＩＦＯ修復ポインタの値をインクリメントし、
前記修復データＦＩＦＯ回路は、
前記メモリインタフェース回路による前記メモリへのメモリアクセスが行われていない場合に、前記ＦＩＦＯ修復ポインタが指示する修復データバッファに保持された前記誤り訂正済のリードデータおよび前記誤り訂正済みのリードデータのアドレスのセットを、前記メモリ制御信号生成回路に出力する、
請求項１に記載の自己修復メモリ回路。
【請求項３】
前記自己修復回路は、
前記第１のメモリアクセス制御信号に基づいて前記メモリインタフェース回路による前記メモリへのリードアクセスが行われているか否かを判別すると共に、前記誤り訂正済のリードデータおよび当該誤り訂正済みのリードデータのアドレスを一時的に保存し、前記メモリインタフェース回路による前記メモリへのリードアクセスが行われたと判別した場合に、ライト上書イネーブル信号のレベルをアクティブに設定し、前記一時的に保存した前記誤り訂正済のリードデータおよび当該誤り訂正済みのリードデータのアドレスを、それぞれ監視データおよび監視アドレスとして設定し、前記修復データＦＩＦＯ回路に出力する一時保存バッファ回路をさらに備え、
前記修復データＦＩＦＯ回路は、
前記誤り検出信号に基づいて前記ＥＣＣ回路において誤り訂正が行われたか否かを判別し、前記ＥＣＣ回路において誤り訂正が行われたと判別した場合に、前記一時保存バッファ回路から出力された監視データおよび監視アドレスを前記修復データバッファに保持し、
前記ライト上書イネーブル信号のレベルがアクティブに設定された場合に、前記修復データバッファに保持した前記監視データおよび前記監視アドレスを、それぞれ修復データおよび修復アドレスとして設定し、前記メモリ制御信号生成回路に出力する、
請求項１または２に記載の自己修復メモリ回路。
【請求項４】
前記メモリ制御信号生成回路は、
前記メモリインタフェース回路による前記メモリへのメモリアクセスが行われておらず、かつ、前記修復データバッファに前記誤り訂正済のリードデータおよび当該誤り訂正済みのリードデータのアドレスが保持されていない場合、前記メモリの全メモリアドレスに対するリードアクセスを行うように前記第２のメモリアクセス制御信号を生成し、
前記修復データＦＩＦＯ回路は、
前記メモリインタフェース回路による前記メモリへのメモリアクセスが行われておらず、かつ、前記ＥＣＣ回路において誤り訂正が行われた場合に、前記ＥＣＣ回路において誤り訂正が行われた誤り訂正済のリードデータと、当該誤り訂正済みリードデータのアドレスと、を前記修復データバッファに保持する、
請求項１に記載の自己修復メモリ回路。
【請求項５】
前記修復データＦＩＦＯ回路は、
前記メモリインタフェース回路による前記メモリへのライトアクセスが行われており、かつ、前記修復データバッファに前記誤り訂正済のリードデータおよび当該誤り訂正済みのリードデータのアドレスが保持されていると共に、当該保持されている前記誤り訂正済みのリードデータのアドレスと前記ライトアクセスのアドレスとが等しい場合、当該保持されている前記誤り訂正済みのリードデータを前記ライトアクセスのライトデータの値によって上書きする、
請求項１に記載の自己修復メモリ回路。
【請求項６】
前記修復データバッファは、
前記誤り訂正済のリードデータを保持する修復待ちデータレジスタと、
前記誤り訂正済みのリードデータのアドレスを保持する修復待ちアドレスレジスタと、
当該修復データバッファが修復待ち状態にあるか否かを示す修復待ち制御フラグレジスタと、を備える、
請求項１に記載の自己修復メモリ回路。
【請求項７】
メモリと、
前記メモリへのライトデータに対する誤り訂正符号の生成および付加と、前記メモリからのリードデータに対する誤り検出および誤り訂正と、を行うＥＣＣ回路と、
前記メモリに対するメモリアクセスを制御する第１のメモリアクセス制御信号を生成して、当該第１のメモリアクセス制御信号を前記メモリおよび前記ＥＣＣ回路に対して出力するメモリインタフェース回路と、
前記第１のメモリアクセス制御信号と、前記ＥＣＣ回路から出力されたリードデータと、前記ＥＣＣ回路において誤り訂正が行われたか否かを示す誤り検出信号と、に基づいて、前記メモリに対するメモリアクセスを制御する第３のメモリアクセス制御信号を生成して、当該第３のメモリアクセス制御信号を前記メモリおよび前記ＥＣＣ回路に対して出力する自己修復回路と、を備えた自己修復メモリ回路における自己修復方法であって、
前記メモリインタフェース回路による前記メモリへのリードアクセスが行われており、かつ、前記ＥＣＣ回路において誤り訂正が行われた場合に、前記自己修復回路が、前記ＥＣＣ回路において誤り訂正が行われた誤り訂正済のリードデータと、当該誤り訂正済みリードデータのアドレスと、を修復データバッファに保持する監視ステップと、
前記メモリインタフェース回路による前記メモリへのメモリアクセスが行われていない場合に、前記自己修復回路が、前記修復データバッファに保持した前記誤り訂正済のリードデータおよび当該誤り訂正済みのリードデータのアドレスを含む第２のメモリアクセス制御信号を生成して、当該生成した第２のメモリアクセス制御信号を前記第３のメモリアクセス制御信号として出力する修復ステップと、を含む、
自己修復方法。
【請求項８】
（ａ）前記メモリインタフェース回路による前記メモリへのメモリアクセスが行われておらず、かつ、前記修復データバッファに前記誤り訂正済のリードデータおよび当該誤り訂正済みのリードデータのアドレスが保持されていない場合、前記自己修復回路が、前記メモリの全メモリアドレスに対するリードアクセスを行うように前記第２のメモリアクセス制御信号を生成して、当該生成した第２のメモリアクセス制御信号を前記第３のメモリアクセス制御信号として出力するステップと、
（ｂ）前記メモリインタフェース回路による前記メモリへのメモリアクセスが行われておらず、かつ、前記ＥＣＣ回路において誤り訂正が行われた場合に、前記自己修復回路が、前記ＥＣＣ回路において誤り訂正が行われた誤り訂正済のリードデータと、当該誤り訂正済みリードデータのアドレスと、を前記修復データバッファに保持するステップと、を含む巡回ステップをさらに含む、
請求項７に記載の自己修復方法。
【請求項９】
前記メモリインタフェース回路による前記メモリへのライトアクセスが行われており、かつ、前記修復データバッファに前記誤り訂正済のリードデータおよび当該誤り訂正済みのリードデータのアドレスが保持されていると共に、当該保持されている前記誤り訂正済みのリードデータのアドレスと前記ライトアクセスのアドレスとが等しい場合、前記自己修復回路が、当該保持されている前記誤り訂正済みのリードデータを前記ライトアクセスのライトデータの値によって上書きするステップをさらに含む、
請求項７または８に記載の自己修復方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は自己修復メモリ回路およびその修復方法に関し、例えば、半導体集積回路（ＬＳＩ）のメモリにおいて、ソフトエラーによるメモリの保持データ誤りに対する誤動作を抑制する自己修復メモリ回路およびその修復方法に関する。
【背景技術】
【０００２】
近年、ＬＳＩ微細化に伴って、ソフトエラーに起因するメモリのデータ誤りがより発生しやすくなっている。ここでソフトエラーとは、ＬＳＩ外部から入射したアルファ線などがＬＳＩ内の記憶素子に衝突して、電荷により記憶素子に保持されていた値が変化することによりシステムが誤動作する現象を指す。例えば車載マイコンでは信頼性や安全性が強く求められており、車載マイコンに搭載するメモリにおいては、メモリに発生したデータ誤りに対する誤動作を抑制して、自動車制御の安全性を高めることが要求されている。
【０００３】
本発明に関連する技術として、特許文献１がある。特許文献１は、ＥＣＣ付きメモリのパトロール診断における１ビットエラー検出時のエラー修正方式に関し、１つのポートからの１ビットエラー修正のために用いるリードモディファイライトと、他のポートからのライトと、が競合して発生する場合に、正しいライト動作が行われるようにする技術を開示する。
【０００４】
特許文献１のメモリ装置は、１ビットエラーデータを修正するリードモディファイライト・コマンドをメモリアクセス制御回路が実行するときに、アクセスポート回路に対してメモリアクセス制御回路へのアクセスを１メモリサイクルだけ強制的に禁止して、ライト・コマンドの発生を抑止する。さらに、特許文献１のメモリ装置は、上記ライト・コマンドの発生を抑止すると共に、他のポートからのライト・コマンドの発生を監視して、１ビットエラー修正対象のアドレスへのライト・コマンドが検出された場合には、実行を開始したリードモディファイライト・コマンドを中止するよう動作する。
【０００５】
なお、本発明に関連する他の技術としては、特許文献２〜４に開示される技術がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平４−１１９４４２号公報
【特許文献２】特開平２−２０５９５５号公報
【特許文献３】特許２６２３６８７号公報
【特許文献４】特開平１−２３９６５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら特許文献１のメモリ装置では、例えば、監視モジュールが片方のポートを経由してメモリカードを占有している間に他方のポート群からアクセスがあった場合、他方のポート群からのアクセスが待たされる動作となる。その結果、システムの応答時間が低下するという問題がある。この問題は、特許文献１のメモリ装置では、監視モジュールによるアクセスと他のポート群からのアクセスとがその優先順位が等しくなる構造となっていることに起因する。
【０００８】
特許文献１に関する上記問題が発生する理由を、以下、簡単に説明する。特許文献１のメモリ装置では、ＥＣＣによる訂正が可能な１ビットエラー検出時においてリードモディファイライトを実行し、その際に以下の動作（ｉ）、（ｉｉ）を行う。
（ｉ）エラーを検出した際に、エラー通知を受けた監視モジュールがポートに対して「RD Modify WT CMD」を発行する（特許文献１、第３図中の、（４）〜（６）の処理）。
（ｉｉ）「RD Modify WT CMD」を実行する際には、下記のシーケンスＡ）〜Ｄ）により処理を行う（特許文献１、第３図中の、（９）の処理）。
Ａ）「ポート群へのアービトレーション禁止信号を1cycle ON」
Ｂ）「ポートPnはメモリアクセス制御回路へ１ビットエラーを修正したデータとRD Modify WT CMDを発行」
Ｃ）「メモリアクセス制御回路は、記憶したAddrをリセットし修正データをメモリカードへ書き込む」
Ｄ）「ポートPnは監視モジュールへ正常終了を通知」
【０００９】
特許文献１のメモリ装置は、上記（ｉｉ）におけるＡ）の処理の段階で、監視モジュールが使用するアクセスポート回路以外のアクセスポート回路からのアクセスを遮断した上で、RD Modify WTを実行している。すなわち、特許文献１の手法では、監視モジュールとポート群とからのアクセス要求が同時に発生していた場合、ポート群からのアクセスにWaitがかかる動作となる。これは、他のポート群からのアクセス要求を、監視モジュールが阻害することを意味する。従って、監視モジュールによるリードモディファイライト動作は、メモリカードを一時的に占有するように制御することをもたらし、その結果、システムバスの応答時間の低下につながる。
【００１０】
なお、その他の課題・問題、または新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１１】
一実施の形態において、自己修復メモリ回路は、メモリと、ＥＣＣ回路と、メモリインタフェース回路と、自己修復回路と、を備えている。自己修復回路は、修復データＦＩＦＯ回路と、メモリ制御信号生成回路と、メモリ制御信号選択回路と、を備えている。
【００１２】
修復データＦＩＦＯ回路は、メモリインタフェース回路によるメモリへのリードアクセスが行われており、かつ、ＥＣＣ回路において誤り訂正が行われた場合に、ＥＣＣ回路において誤り訂正が行われた誤り訂正済のリードデータと、その誤り訂正済みリードデータのアドレスと、を修復データバッファに保持する。
【００１３】
メモリ制御信号生成回路は、メモリインタフェース回路によるメモリへのメモリアクセスが行われていない場合に、修復データバッファに保持した誤り訂正済のリードデータおよびその誤り訂正済みのリードデータのアドレスを含む第２のメモリアクセス制御信号を生成する。
【００１４】
メモリ制御信号選択回路は、メモリインタフェース回路によるメモリへのメモリアクセスが行われている場合に第１のメモリアクセス制御信号を選択し、メモリインタフェース回路によるメモリへのメモリアクセスが行われていない場合に第２のメモリアクセス制御信号を選択して、その選択したメモリアクセス制御信号を第３のメモリアクセス制御信号として出力する。
【００１５】
また、他の一実施の形態では、自己修復メモリ回路における自己修復方法は、監視ステップと、修復ステップと、を含む。
【００１６】
監視ステップでは、メモリインタフェース回路によるメモリへのリードアクセスが行われており、かつ、ＥＣＣ回路において誤り訂正が行われた場合に、自己修復回路が、ＥＣＣ回路において誤り訂正が行われた誤り訂正済のリードデータと、その誤り訂正済みリードデータのアドレスと、を修復データバッファに保持する。
【００１７】
修復ステップでは、メモリインタフェース回路によるメモリへのメモリアクセスが行われていない場合に、自己修復回路が、修復データバッファに保持した誤り訂正済のリードデータおよびその誤り訂正済みのリードデータのアドレスを含む第２のメモリアクセス制御信号を生成して、その生成した第２のメモリアクセス制御信号を第３のメモリアクセス制御信号として出力する。
【発明の効果】
【００１８】
上述した一実施の形態によれば、システムの応答時間の低下を防止すると共に、メモリに発生したデータ誤りに対する誤動作を抑制することができる。
【図面の簡単な説明】
【００１９】
【図１】実施の形態１に係る自己修復メモリ回路の回路構成を示す図である。
【図２】実施の形態１に係る自己修復回路の構成を示す図である。
【図３】実施の形態１に係るメモリ制御信号選択回路の構成を示す図である。
【図４】実施の形態１に係るメモリ制御信号選択回路の他の構成を示す図である。
【図５】実施の形態１に係る修復データバッファの構成を示す図である。
【図６】実施の形態１に係るメモリインタフェース回路の構成を示す図である。
【図７】実施の形態１に係る修復方法の動作処理を示すフローチャートである。
【図８】実施の形態１に係るＦＩＦＯ入力処理を示すフローチャートである。
【図９】実施の形態１に係るＦＩＦＯ出力処理を示すフローチャートである。
【図１０Ａ】実施の形態１に係る修復方法における監視プロセスと修復プロセスの動作処理を示すタイミングチャートである。
【図１０Ｂ】実施の形態１に係る修復方法における監視プロセスと修復プロセスの動作処理を示すタイミングチャートである。
【図１０Ｃ】実施の形態１に係る修復方法における監視プロセスと修復プロセスの動作処理を示すタイミングチャートである。
【図１１Ａ】実施の形態１に係る修復方法における修復待ち期間での修復データ更新の動作処理を示すタイミングチャートである。
【図１１Ｂ】実施の形態１に係る修復方法における修復待ち期間での修復データ更新の動作処理を示すタイミングチャートである。
【図１２Ａ】実施の形態１に係る修復方法における巡回プロセスの動作処理を示すタイミングチャートである。
【図１２Ｂ】実施の形態１に係る修復方法における巡回プロセスの動作処理を示すタイミングチャートである。
【図１３Ａ】実施の形態２に係る自己修復回路の構成を示す図である。
【図１３Ｂ】実施の形態２に係る自己修復回路の変形構成を示す図である。
【図１４】実施の形態３に係る自己修復回路の構成を示す図である。
【図１５】実施の形態４に係る自己修復回路の構成を示す図である。
【図１６】実施の形態５に係る修復方法の動作処理を示すフローチャートである。
【図１７】実施の形態６に係る修復方法の動作処理を示すフローチャートである。
【図１８】実施の形態７に係る修復方法の動作処理を示すフローチャートである。
【発明を実施するための形態】
【００２０】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一又は対応する要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
【００２１】
＜発明の実施の形態１＞
図１は、本実施の形態に係る自己修復メモリ回路の構成例を示すブロック図である。
自己修復メモリ回路は、自己修復回路１と、メモリインタフェース回路２と、ＥＣＣ回路３と、メモリ４と、を備えている。
【００２２】
自己修復回路１は、チップイネーブルＡ、ライトイネーブルＡ、アドレスＡ、およびライトデータＡが入力される。チップイネーブルＡ、ライトイネーブルＡ、アドレスＡ、およびライトデータＡは、メモリインタフェース回路２から出力される。第１のメモリアクセス制御信号は、メモリインタフェース回路２から出力されて自己修復回路１に入力されるメモリアクセス制御信号に相当し、チップイネーブルＡ、ライトイネーブルＡ、アドレスＡ、およびライトデータＡを含む。
【００２３】
また、自己修復回路１は、ＥＣＣ回路３から出力されたリードデータＡおよび誤り検出信号が入力される。また、自己修復回路１は、チップイネーブルＢ、ライトイネーブルＢ、アドレスＢ、およびライトデータＢをＥＣＣ回路３に出力する。同時に、自己修復回路１は、チップイネーブルＢ、ライトイネーブルＢ、およびアドレスＢをメモリ４に出力する。第３のメモリアクセス制御信号は、自己修復回路１から出力されてＥＣＣ回路３およびメモリ４に入力されるメモリアクセス制御信号に相当し、チップイネーブルＢ、ライトイネーブルＢ、アドレスＢ、およびライトデータＢを含む。
【００２４】
自己修復回路１は、メモリインタフェース回路２から出力された第１のメモリアクセス制御信号と、その第１のメモリアクセス制御信号に応答してＥＣＣ回路３から出力されるメモリアクセス応答信号と、を監視する。メモリアクセス応答信号は、リードデータＡおよび誤り検出信号を含む。
【００２５】
自己修復回路１は、監視結果に応じて後述する各動作処理を行い、第３のメモリアクセス制御信号を生成する。さらに、自己修復回路１は、その生成した第３のメモリアクセス制御信号をＥＣＣ回路３およびメモリ４に出力する。自己修復回路１の構成および動作の詳細についは後述する。
【００２６】
メモリインタフェース回路２は、第１のメモリアクセス制御信号を自己修復回路１に出力する。詳細は後述するが、第１のメモリアクセス制御信号は、自己修復回路１を介して、ＥＣＣ回路３およびメモリ４に出力される。また、メモリインタフェース回路２は、ＥＣＣ回路３からのメモリアクセス応答信号に含まれるリードデータＡが入力される。メモリインタフェース回路２の構成および動作の詳細については後述する。
【００２７】
ＥＣＣ回路３は、自己修復回路１から出力された第３のメモリアクセス制御信号が入力される。また、ＥＣＣ回路３は、ライトデータＣをメモリ４に出力する。また、ＥＣＣ回路３は、メモリ４から出力されたリードアクセス応答信号が入力される。リードアクセス応答信号は、リードデータＢを含む。ＥＣＣ回路３は、メモリアクセス応答信号（リードデータＡおよび誤り検出信号）を自己修復回路１に出力する。また、ＥＣＣ回路３は、メモリアクセス応答信号のうちのリードデータＡをメモリインタフェース回路２に出力する。
【００２８】
ＥＣＣ回路３は、ＥＣＣ生成回路３１およびＥＣＣ訂正回路３２を備えている。ＥＣＣ生成回路３１は、ライトデータＢに基づき誤り訂正符号（ＥＣＣ）を生成し、生成したＥＣＣを本来のライトデータであったライトデータＢに付加する。ＥＣＣ生成回路３１は、ＥＣＣが付加されたライトデータＢをライトデータＣとしてメモリ４に出力する。
【００２９】
ＥＣＣ訂正回路３２は、リードデータＢからＥＣＣを分離して、リードデータＢに誤りが発生しているか否かを判断する。ＥＣＣ訂正回路３２は、リードデータＢに誤りが発生していた場合にはその誤りを訂正した上で、ＥＣＣを分離したデータをリードデータＡとして自己修復回路１およびメモリインタフェース回路２に出力する。また、ＥＣＣ訂正回路３２は、誤りを訂正した場合には、誤り検出信号のレベルをアクティブに設定して出力する。なお、ＥＣＣ訂正回路３２は、リードデータＢに誤りが発生していなかった場合には、リードデータＢからＥＣＣを分離したデータを、リードデータＡとして自己修復回路１に出力する。
【００３０】
メモリ４は、チップイネーブルＢ、ライトイネーブルＢ、アドレスＢ、およびアドレスＢが入力される。チップイネーブルＢ、ライトイネーブルＢ、アドレスＢ、およびアドレスＢは、自己修復回路１から出力された第３のメモリアクセス制御信号に含まれる。また、メモリ４は、ＥＣＣ回路３から出力されたライトデータＣが入力される。
【００３１】
メモリ４は、チップイネーブルＢ、ライトイネーブルＢ、アドレスＢ、およびライトデータＣと、に基づいてメモリアクセス制御を行う。メモリ４は、ライトアクセス制御信号に応答して、ライトデータＣをメモリ４にライトする。メモリ４は、リードアクセス制御信号に応答して、リードアクセス応答信号（リードデータＢ）をＥＣＣ回路３に出力する。
【００３２】
図２は、自己修復回路１の詳細な回路構成を示す。
自己修復回路１は、メモリ制御信号選択回路１０と、修復データＦＩＦＯ回路１１と、メモリ制御信号生成回路１２と、ＦＩＦＯ制御回路１３と、一時保存バッファ回路１４と、を備えている。
【００３３】
メモリ制御信号選択回路１０は、第１のメモリアクセス制御信号が入力される。第１のメモリアクセス制御信号は、自己修復回路１の外部から入力される。また、メモリ制御信号選択回路１０は、チップイネーブルＡ'、ライトイネーブルＡ'、アドレスＡ'、およびライトデータＡ'が入力される。チップイネーブルＡ'、ライトイネーブルＡ'、アドレスＡ'、およびライトデータＡ'は、メモリ制御信号生成回路１２から出力される。第２のメモリアクセス制御信号は、メモリ制御信号生成回路１２から出力されてメモリ制御信号選択回路１０に入力されるメモリアクセス制御信号に相当し、チップイネーブルＡ'、ライトイネーブルＡ'、アドレスＡ'、およびライトデータＡ'を含む。
【００３４】
メモリ制御信号選択回路１０は、チップイネーブルＡのレベルに応じて、第１のメモリアクセス制御信号または第２のメモリアクセス制御信号のいずれかのメモリアクセス制御信号を選択する。メモリ制御信号選択回路１０は、選択したメモリアクセス制御信号を第３のメモリアクセス制御信号として、ＥＣＣ回路３およびメモリ４に出力する。
【００３５】
具体的には、メモリ制御信号選択回路１０は、チップイネーブルＡのレベルがアクティブである場合（メモリインタフェース回路２からのメモリアクセスが行われていると判別した場合）、第１のメモリアクセス制御信号を選択する。また、メモリ制御信号選択回路１０は、チップイネーブルＡのレベルがアクティブでない場合（メモリインタフェース回路２からのメモリアクセスが行われていないと判別した場合）、第２のメモリアクセス制御信号を選択する。
【００３６】
図３は、メモリ制御信号選択回路１０の詳細な回路構成を示す。
メモリ制御信号選択回路１０は、チップイネーブルセレクタ１０１と、ライトイネーブルセレクタ１０２と、アドレスセレクタ１０３と、ライトデータセレクタ１０４と、を備えている。
【００３７】
チップイネーブルセレクタ１０１は、チップイネーブルＡおよびチップイネーブルＡ'が入力される。チップイネーブルセレクタ１０１は、チップイネーブルＡがアクティブレベルであればチップイネーブルＡ、チップイネーブルＡがインアクティブレベルであればチップイネーブルＡ'を選択する。チップイネーブルセレクタ１０１は、選択したチップイネーブルをチップイネーブルＢとして、メモリ制御信号選択回路１０の外部に出力する。
【００３８】
ライトイネーブルセレクタ１０２は、ライトネーブルＡ、ライトイネーブルＡ'、およびチップイネーブルＡが入力される。ライトイネーブルセレクタ１０２は、チップイネーブルＡがアクティブレベルであればライトイネーブルーブルＡ、チップイネーブルＡがインアクティブレベルであればチップイネーブルＡ'を選択する。ライトイネーブルセレクタ１０２は、選択したライトイネーブルをライトイネーブルＢとしてメモリ制御信号選択回路１０の外部に出力する。
【００３９】
アドレスセレクタ１０３は、アドレスＡ、アドレスＡ'、およびチップイネーブルＡが入力される。アドレスセレクタ１０３は、チップイネーブルＡがアクティブレベルであればアドレスＡ、チップイネーブルＡがインアクティブレベルであればアドレスＡ'を選択する。アドレスセレクタ１０３は、選択したアドレスをアドレスＢとしてメモリ制御信号選択回路１０の外部に出力する。
【００４０】
ライトデータセレクタ１０４は、ライトデータＡ、ライトデータＡ'、およびチップイネーブルＡが入力される。ライトデータセレクタ１０４は、チップイネーブルＡがアクティブレベルであればライトデータＡ、チップイネーブルＡがインアクティブレベルであればライトデータＡ'を選択する。ライトデータセレクタ１０４は、選択したライトデータをライトデータＢとしてメモリ制御信号選択回路１０の外部に出力する。
【００４１】
なお、図３のメモリ制御信号選択回路１０の回路構成では、チップイネーブルＡのみに応じて出力するメモリアクセス制御信号の選択を行うものとして説明したが、本発明はこれに限定されない。本発明の趣旨は、メモリアクセスの仕様に応じて論理構成を行うことである。すなわち、選択論理の構成はチップイネーブルＡのみに基づくマルチプレクサ構成に限定されず、他の構成としてもよい。
【００４２】
図４は、メモリ制御信号選択回路１０の他の回路構成を示す。
メモリ制御信号選択回路１０は、図３に示した構成と比較して、時分割制御回路１０５を備える点が異なっている。
【００４３】
時分割制御回路１０５は、チップイネーブルセレクタ１０１、ライトイネーブルセレクタ１０２、アドレスセレクタ１０３、およびライトデータセレクタ１０４を制御する。これによって、時分割制御回路１０５は、各セレクタによる信号の選択を制御する。図４に示す例では、チップイネーブルＡのレベルがアクティブにならないクロックサイクルを持つように制御される。そして、時分割制御回路１０５は、チップイネーブルＡのレベルがアクティブでないクロックサイクルにおいてのみ、チップイネーブルＡ'を選択する制御を行う。
【００４４】
図２に戻って説明を続ける。
修復データＦＩＦＯ回路１１は、自己修復回路１の外部から誤り検出信号が入力される。また、修復データＦＩＦＯ回路１１は、一時保存バッファ回路１４から、監視アドレス、監視データ、およびライト上書イネーブル信号が入力される。また、修復データＦＩＦＯ回路１１は、ＦＩＦＯ制御回路１３から、ＦＩＦＯ修復ポインタおよびＦＩＦＯ記録ポインタが入力される。また、修復データＦＩＦＯ回路１１は、修復アドレス、修復データ、および修復待ち制御フラグを、メモリ制御信号生成回路１２に出力する。
【００４５】
修復データＦＩＦＯ回路１１は、修復データバッファを備えている。修復データＦＩＦＯ回路１１は、修復対象のデータおよびメモリアドレスのセットを修復データバッファに保持する。修復対象のデータとは、ＥＣＣ回路３において誤り訂正が行われた誤り訂正済みのリードデータであり、修復対象のメモリアドレスとは、その誤り訂正済みのリードデータのメモリアドレスである。本実施の形態では、修復データＦＩＦＯ回路１１は、データおよびメモリアドレスのセットを複数保持するために、修復データバッファ０−１１０、修復データバッファ１−１１１、...、修復データバッファＮ−１１Ｎ（Ｎは０以上の任意の整数）を備えている。以下、これら複数の修復データバッファを、「修復データバッファ１１０〜修復データバッファ１１Ｎ（Ｎは０以上の任意の整数）」と表記する。
【００４６】
図５に、修復データバッファ１１Ｗ（Ｗは０以上のＮ以下の任意の整数）の詳細な回路構成を示す。修復データバッファ１１Ｗは、修復待ちアドレスレジスタ１１Ｗ０と、修復待ちデータレジスタ１１Ｗ１と、修復待ち制御フラグレジスタ１１Ｗ２と、を備えている。
【００４７】
修復データＦＩＦＯ回路１１は、後述する監視プロセスＳ０または巡回プロセスＳ４において、誤り検出信号のレベルがアクティブとなった場合に、修復対象となるデータおよびアドレスを、ＦＩＦＯ記録ポインタの値に応じた修復データバッファ１１Ｗに保持する。これにより、自己修復回路１は、修復対象となるデータおよびアドレスを修復データＦＩＦＯ回路１１に保持する。
【００４８】
具体的には、修復データＦＩＦＯ回路１１は、誤り検出信号のレベルがアクティブとなったときに、ＦＩＦＯ記録ポインタがｘ（ｘは０以上のＮ以下の任意の整数）であった場合、修復データバッファ１１ｘのみについて、修復待ちアドレスレジスタ１１ｘ０に監視アドレスを保持し、修復待ちデータレジスタ１１ｘ１に監視データを保持し、修復待ち制御フラグレジスタ１１ｘ２をアクティブレベルに設定する。なお、修復待ち制御フラグレジスタ１１ｘ２のレベルがアクティブである場合には、その修復データバッファ１１ｘが修復待ち状態にあることを示す。
【００４９】
修復データＦＩＦＯ回路１１は、修復待ち制御フラグレジスタ１１ｘ２のレベルに応じて、対応する修復待ち制御フラグのビットのレベルを設定する。修復待ち制御フラグは、複数のビット（１１０２、１１１２、…、１１Ｎ２）からなる。修復待ち制御フラグの各ビットは、修復データバッファ１１０〜修復データバッファ１１Ｎの修復待ち制御フラグレジスタにそれぞれ対応する。修復データＦＩＦＯ回路１１は、修復待ち制御フラグレジスタ１１ｘ２がアクティブレベルにある場合には、修復待ち制御フラグのビットのうちの対応するビットのレベルをアクティブに設定し、空き状態となった場合には対応するビットのレベルをインアクティブに設定する。
【００５０】
また、修復データＦＩＦＯ回路１１は、後述する修復プロセスＳ２において、ライト上書イネーブル信号のレベルがアクティブとなった場合に、ＦＩＦＯ修復ポインタの値に応じた修復データバッファ１１Ｗに保持しているデータを出力する。これにより、自己修復回路１は、修復データＦＩＦＯ回路１１に保持した修復対象となるデータおよびアドレスを、メモリ制御信号生成回路１２に出力する。この結果、修復対象のアドレスについて修復対象のデータがメモリ４にライトされ、メモリ４に対する修復が行われる。
【００５１】
具体的には、修復データＦＩＦＯ回路１１は、ＦＩＦＯ修復ポインタがｙ（ｙは０以上のＮ以下の任意の整数）であった場合に、修復データバッファ１１ｙのみについて、修復待ちアドレスレジスタ１１ｙ０に保持した監視アドレスを出力し、修復待ちデータレジスタ１１ｙ１に保持した監視データを出力し、修復待ち制御フラグレジスタ１１ｙ２のレベルにインアクティブを設定する。なお、修復待ち制御フラグレジスタ１１ｙ２のレベルがインアクティブである場合には、その修復データバッファ１１ｙが空き状態にあることを示す。
【００５２】
なお、修復データＦＩＦＯ回路１１が出力する修復アドレスの値は、修復データバッファ１１ｙの修復待ちアドレスレジスタ１１ｙ０の値と等しくなる。また、修復データＦＩＦＯ回路１１が出力する修復データの値は、修復データバッファ１１ｙの修復待ちデータレジスタ１１ｙ１の値に等しくなる。
【００５３】
また、修復データＦＩＦＯ回路１１は、ライト上書イネーブル信号がアクティブである場合、修復データバッファ１１０〜１１Ｎにそれぞれ保持しているアドレスと、監視アドレスとが同一であるか否かを判別する。修復データＦＩＦＯ回路１１は、修復データバッファ１１０〜１１Ｎのいずれかが保持している修復待ちアドレスが、監視アドレスと同一であった場合、保持している修復待ちデータレジスタの値を監視データの値に更新する。
【００５４】
具体的には、修復データＦＩＦＯ回路１１は、ライト上書イネーブル信号がアクティブであるときに、修復データバッファ１1ｚ(ｚは０以上のＮ以下の任意の整数)の修復待ちアドレスレジスタ１１ｚ０の値が、監視アドレスの値と同一であった場合、修復待ちデータレジスタ１１ｚ１の値を、監視データの値に更新する。
【００５５】
図２に戻って説明を続ける。
メモリ制御信号生成回路１２は、自己修復回路１の外部からチップイネーブルＡが入力される。また、メモリ制御信号生成回路１２は、修復データＦＩＦＯ回路１１から、修復アドレス、修復データ、および修復待ち制御フラグが入力される。メモリ制御信号生成回路１２は、第２のメモリアクセス制御信号を出力する。
【００５６】
メモリ制御信号生成回路１２は、チップイネーブルＡのレベルに応じて、メモリインタフェース回路２によりメモリアクセスが行われているか否かを判別する。メモリ制御信号生成回路１２は、チップイネーブルＡがインアクティブレベルである場合（メモリインタフェース回路２によりメモリアクセスが行われていないと判別した場合）、後述する修復プロセスＳ２において、修復データＦＩＦＯ回路１１から出力された修復アドレス、修復データ、および修復待ち制御フラグに基づいて、修復対象となるデータおよびアドレスをメモリ制御信号選択回路１０に出力する。
【００５７】
具体的には、メモリ制御信号生成回路１２は、修復データＦＩＦＯ回路１１から出力された修復アドレスの値をアドレスＡ'の値とし、修復データＦＩＦＯ回路１１から出力された修復データをライトデータＡ'とした、ライトアクセス制御信号を生成する。さらに、メモリ制御信号生成回路１２は、チップイネーブルＡ'にアクティブレベルを出力し、ライトイネーブルＡ'のレベルにアクティブを出力する。
【００５８】
また、メモリ制御信号生成回路１２は、メモリインタフェース回路２によりメモリアクセスが行われていないと判別し、かつ、修復データバッファ１１０〜修復データバッファ１１Ｎのいずれにも誤り訂正済のリードデータＡおよびその誤り訂正済みのリードデータＡのアドレスＡが保持されていない場合、後述する巡回プロセスＳ４において、メモリ４の全メモリアドレスに対するリードアクセスを行うように、第２のメモリアクセス制御信号を生成する。
【００５９】
具体的には、メモリ制御信号生成回路１２は、アドレスＡ'の値としてメモリ４の任意のアドレスの値を設定したリードアクセス制御信号を生成する。メモリ制御信号生成回路１２は、メモリ４の全アドレスを対象とするリードアクセス制御信号を生成するために、設定したアドレスＡ'の値をインクリメントしていく。さらに、メモリ制御信号生成回路１２は、チップイネーブルＡ'にアクティブレベルを出力し、ライトイネーブルＡ'のレベルにインアクティブを出力する。
【００６０】
ＦＩＦＯ制御回路１３は、自己修復回路１の外部から誤り検出信号が入力される。また、ＦＩＦＯ制御回路１３は、メモリ制御信号生成回路１２から、ライトイネーブルＡ'が入力される。また、ＦＩＦＯ制御回路１３は、修復データＦＩＦＯ回路１１から修復待ち制御フラグが入力される。また、ＦＩＦＯ制御回路１３は、ＦＩＦＯ修復ポインタおよびＦＩＦＯ記録ポインタを修復データＦＩＦＯ回路１１に出力する。ＦＩＦＯ制御回路１３は、修復データＦＩＦＯ回路１１に対して、修復データバッファ１１０〜修復データバッファ１１Ｎのうち、使用対象とする修復データバッファの指示を行う。
【００６１】
ＦＩＦＯ記録ポインタは、後述する監視プロセスＳ０および巡回プロセスＳ４において、監視アドレス（すなわち、誤りが発生したメモリ４のアドレス）と、監視データ（すなわち、発生したデータ誤りを訂正済のデータ）とを、修復データバッファ１１０〜修復データバッファ１１Ｎのいずれに保持するかを示すポインタである。ＦＩＦＯ制御回路１３は、監視プロセスＳ０または巡回プロセスＳ４において、修復データバッファ１１０〜修復データバッファ１１Ｎに監視アドレスおよび監視データを入力した場合に、ＦＩＦＯ記録ポインタの値をインクリメントする。
【００６２】
具体的には、ＦＩＦＯ制御回路１３は、誤り検出信号がアクティブであり、かつ、修復待ち制御フラグの複数のビットのうち少なくとも１つのビットのレベルがインアクディブレベルとなった場合に、ＦＩＦＯ記録ポインタの値をインクリメントする。ＦＩＦＯ制御回路１３は、全てのビットのレベルがアクティブである場合には、ＦＩＦＯ記録ポインタの値をインクリメントしない。
【００６３】
ＦＩＦＯ修復ポインタは、後述する修復プロセスＳ２において、修復データおよび修復アドレスを、修復データバッファ１１０〜修復データバッファ１１Ｎのいずれに保持されたデータおよびアドレスから生成するかを示すポインタである。ＦＩＦＯ制御回路１３は、修復プロセスＳ２において、修復データバッファ１１０〜修復データバッファ１１Ｎに保持された監視アドレスおよび監視データを出力した場合に、ＦＩＦＯ修復ポインタの値をインクリメントする。具体的には、ＦＩＦＯ制御回路１３は、ライトイネーブルＡ'がアクティブになった場合（すなわち、修復プロセスＳ２において、メモリ制御信号生成回路１２が修復のためのライト動作を行った場合）、ＦＩＦＯ修復ポインタをインクリメントする。
【００６４】
一時保存バッファ回路１４は、自己修復回路１の外部から、第１のメモリアクセス制御信号（チップイネーブルＡ、ライトイネーブルＡ、アドレスＡ、およびライトデータＡ）およびリードデータＡが入力される。また、一時保存バッファ回路１４は、メモリ制御信号生成回路１２から、第２のメモリアクセス制御信号（チップイネーブルＡ'、ライトイネーブルＡ'、およびアドレスＡ'）が入力される。また、一時保存バッファ回路１４は、監視アドレス、監視データ、およびライト上書イネーブル信号を修復データＦＩＦＯ回路１１に出力する。
【００６５】
一時保存バッファ回路１４は、監視プロセスＳ０ではチップイネーブルＡのレベルに応じて、巡回プロセスＳ４ではチップイネーブルＡ'のレベルに応じて、メモリアクセスが行われているか否かをそれぞれ判別する。また、一時保存バッファ回路１４は、監視プロセスＳ０ではライトイネーブルＡのレベルに応じて、巡回プロセスＳ４ではライトイネーブルＡ'のレベルに応じて、ライトアクセスまたはリードアクセスのいずれのメモリアクセスが行われているかをそれぞれ判別する。
【００６６】
一時保存バッファ回路１４は、メモリアクセスが行われており、かつ、リードアクセスであると判別した場合、アドレスＡおよびリードデータＡを一時的に保持し、アドレスＡを監視アドレス、リードデータＡを監視データ、ライト上書イネーブル信号をインアクティブレベルとしてそれぞれ出力する。また、一時保存バッファ回路１４は、メモリアクセスが行われており、かつ、ライトアクセスであると判別した場合、アドレスＡを監視アドレス、ライトデータＡを監視データ、ライト上書イネーブル信号をアクティブレベルとしてそれぞれ出力する。
【００６７】
ここで、図６を参照して、メモリインタフェース回路２の構成を説明する。図６はメモリインタフェース回路２の詳細な回路構成を示す。
メモリインタフェース回路２は、アクセスポート２０と、システムバス２１と、主回路０−２２０〜主回路Ｍ−２２Ｍ（Ｍは０以上の任意の整数）と、を備えている。
【００６８】
アクセスポート２０は、バス接続２１０を介してシステムバス２１と接続する。アクセスポート２０は、第１のメモリアクセス制御信号をメモリインタフェース回路２の外部に出力する。また、アクセスポート２０は、メモリインタフェース回路２の外部からメモリアクセス応答信号のリードデータＡが入力される。
【００６９】
システムバス２１は、バス接続２１０を介してアクセスポート２０と接続する。また、システムバス２１は、バス接続２３０を介して主回路０−２２０と接続する。また、バス接続２３１を介して主回路１−２２１と接続する。以下同様にして、バス接続２３Ｍを介して主回路Ｍ−２２Ｍと接続する。
【００７０】
主回路０−２２０はバス接続２３０を介してシステムバス２１と接続する。主回路１−２２１はバス接続２３１を介してシステムバス２１と接続する。以下同様にして、主回路Ｍ−２２Ｍはバス接続２３Ｍを介してシステムバス２１と接続する。
【００７１】
主回路０−２２０、主回路１−２２１、...、主回路Ｍ−２２Ｍは、それぞれバスマスタとして機能する。図６に示すように、メモリインタフェース回路２では、主回路０−２２０、主回路１−２２１、...、主回路Ｍ−２２Ｍがメモリ４を共有する構成を採用しており、主回路０−２２０、主回路１−２２１、...、主回路Ｍ−２２Ｍに対するアービトレーションをシステムバス２１が行う。これによって、バススレーブとして機能するアクセスポート２０を、主回路０−２２０、主回路１−２２１、...、主回路Ｍ−２２Ｍが共有する。
【００７２】
アクセスポート２０は、システムバス２１からのアクセス要求に従い、メモリ４に対する第１のメモリアクセス制御信号を生成して出力する。メモリインタフェース回路２は、メモリ４に対するメモリアクセス制御に関して、リードアクセス制御信号またはライトアクセス制御信号を生成して出力する。
【００７３】
続いて以下では、自己修復回路１の動作の一例を説明する。図７は、自己修復回路１により実行される自己修復方法における動作手順の具体例を示すフローチャートである。自己修復方法は、監視プロセスＳ０と、修復プロセスＳ２と、巡回プロセスＳ４と、を含んでいる。
【００７４】
まず、図７を参照して、監視プロセスＳ０の詳細を説明する。監視プロセスＳ０は、ステップＳ００、ステップＳ０１、ステップＳ０２、ステップＳ０３、ステップＳ０４、ステップＳ０５、ステップＳ０６、ステップＳ１を含む。
【００７５】
ステップＳ００において、一時保存バッファ回路１４は、チップイネーブルＡのレベルに応じて、メモリインタフェース回路２によりメモリアクセスが行われているか否かを判別する。一時保存バッファ回路１４は、チップイネーブルＡがアクティブレベルである場合（メモリインタフェース回路２によりメモリアクセスが行われていると判別した場合）、ステップＳ０１へと処理を進める。
【００７６】
また、ステップＳ００において、チップイネーブルＡがインアクティブレベルである場合（メモリインタフェース回路２によりメモリアクセスが行われていないと判別した場合）、後述する修復プロセスＳ２におけるステップＳ２０へと処理が進められる。
【００７７】
ステップＳ０１において、一時保存バッファ回路１４は、ライトイネーブルＡのレベルに応じて、メモリアクセスがライトアクセスまたはリードアクセスのいずれであるかを判別する。一時保存バッファ回路１４は、ライトイネーブルＡがアクティブレベルである場合（ライトアクセスであると判別した場合）、アドレスＡの値を監視アドレスの値とし、ライトデータＡの値を監視データの値とし、ライト上書イネーブルをアクティブレベルとして、修復データＦＩＦＯ回路１１に出力する。また、一時保存バッファ回路１４は、ライトイネーブルＡがインアクティブレベルである場合（リードアクセスであると判別した場合）、ステップＳ０５へと処理を進める。
【００７８】
ステップＳ０２において、修復データＦＩＦＯ回路１１は、修復データバッファ１１０〜修復データバッファ１１Ｎに、修復待ちデータが存在するか否かを判別する。修復データＦＩＦＯ回路１１は、全ての修復データバッファ１１０〜修復データバッファ１１Ｎについて、それぞれの修復待ち制御フラグレジスタのレベルを確認する。修復データＦＩＦＯ回路１１は、いずれか１の修復待ち制御フラグレジスタのレベルがアクティブである場合（修復待ち状態の修復待ちデータが存在すると判別した場合）、ステップＳ０３へと処理を進める。また、修復データＦＩＦＯ回路１１は、全ての修復待ち制御フラグレジスタのレベルがインアクティブである場合（修復待ち状態の修復待ちデータが存在しないと判別した場合）、監視プロセスＳ０を終了する。
【００７９】
ステップＳ０３において、修復データＦＩＦＯ回路１１は、修復データバッファ１１０〜修復データバッファ１１Ｎのうちで修復待ち制御フラグレジスタのレベルがアクティブである修復データバッファについて、その修復データバッファの修復待ちアドレスレジスタの値と、一時保存バッファ回路１４から出力された監視アドレスの値（ライトされたアドレスＡの値に等しい。）と、を比較する。修復データＦＩＦＯ回路１１は、修復データバッファ１１０〜修復データバッファ１１Ｎのうちで修復待ちアドレスレジスタが監視アドレスと等しいものが存在した場合には、ステップＳ０４へと処理を進める。修復データＦＩＦＯ回路１１は、修復データバッファ１１０〜修復データバッファ１１Ｎのうちで修復待ちアドレスレジスタが監視アドレスと等しいものが存在しない場合には、監視プロセスＳ０を終了する。
【００８０】
ステップＳ０４において、修復データＦＩＦＯ回路１１は、修復データバッファ１１０〜修復データバッファ１１Ｎのうちで修復待ちアドレスレジスタと監視アドレスの値が等しかったものについて、その修復データバッファの修復待ちデータレジスタの値を、監視データ（ライトデータＡの値に等しい。）の値によって上書する。
【００８１】
他方、ステップＳ０５において、一時保存バッファ回路１４は、メモリインタフェース回路２から出力されたアドレスＡと、ＥＣＣ回路３から出力されたリードデータＡと、を一時的に保持し、ステップＳ０６へと処理を進める。
【００８２】
ステップＳ０６において、修復データＦＩＦＯ回路１１は、誤り検出信号のレベルに応じて、リードデータＡが訂正されているか否かを判別する。修復データＦＩＦＯ回路１１は、誤り検出信号のレベルがアクティブである場合（監視データ（一時保存バッファ回路１４が一時的に保持しているリードデータＡに等しい）が訂正されていると判別した場合）、ステップＳ１へと処理を進める。
【００８３】
修復データＦＩＦＯ回路１１は、誤り検出信号のレベルがインアクティブである場合（リードデータＡが訂正されていないと判別した場合）、監視プロセスＳ０を終了する。なお、ステップＳ１でのＦＩＦＯ入力処理の詳細は後述する。
【００８４】
図８は、ステップＳ１のＦＩＦＯ入力処理を示すフローチャートである。図８を参照して、ステップＳ１のＦＩＦＯ入力の詳細を説明する。ＦＩＦＯ入力処理は、ステップＳ１０、ステップＳ１１、ステップＳ１２、ステップＳ１３を含む。
【００８５】
ステップＳ１０において、修復データＦＩＦＯ回路１１は、修復待ち制御フラグレジスタのレベルに応じて、修復データバッファが空き状態であるか否かを判別する。修復データＦＩＦＯ回路１１は、例えば、ＦＩＦＯ記録ポインタの値をｘ（ｘ＝０〜Ｎのいずれか）としたときに、修復データバッファｘ−１１ｘの修復待ち制御フラグレジスタ１１ｘ２のレベルがインアクティブである場合、修復データバッファｘ−１１ｘは空き状態であると判別し、ステップＳ１１へと処理を進める。
【００８６】
修復データＦＩＦＯ回路１１は、修復待ち制御フラグレジスタ１１ｘ２のレベルがアクティブである場合、修復データバッファｘ−１１ｘは空き状態でない（つまり、修復待ちである。）と判別し、ＦＩＦＯ入力を終了する。なお、このような場合は、全ての修復データバッファが修復待ち状態であり、新たにデータを入力することができない状態である。
【００８７】
ステップＳ１１において、修復データＦＩＦＯ回路１１は、ＦＩＦＯ記録ポインタの値に対応する修復データバッファについて、修復対象となるデータを記録する。具体的には、修復データＦＩＦＯ回路１１は、監視アドレス（すなわち、一時保存バッファ回路１４がステップＳ０５で一時的に保持して出力したアドレスＡ）を、修復データバッファｘ−１１ｘの修復待ちアドレスレジスタ１１ｘ０に保持する。また、修復データＦＩＦＯ回路１１は、監視データ、すなわち、一時保存バッファ回路１４がステップＳ０５で保持して出力したリードデータＡを、修復データバッファｘ−１１ｘの修復待ちデータレジスタ１１ｘ１に保持する。そして、修復データＦＩＦＯ回路１１は、ステップＳ１２へと処理を進める。
【００８８】
ステップＳ１２において、修復データＦＩＦＯ回路１１は、修復データバッファｘ−１１ｘの修復待ち制御フラグレジスタ１１ｘ２のレベルをアクティブに設定する。そして、ステップＳ１３へと処理を進める。ステップＳ１３において、ＦＩＦＯ制御回路１３は、ＦＩＦＯ記録ポインタの値をインクリメントし、ステップＳ１での処理を終了する。
【００８９】
次に、図７に戻って、修復プロセスＳ２の詳細を説明する。修復プロセスＳ２は、ステップＳ２０、ステップＳ３を含む。
【００９０】
ステップＳ２０において、メモリ制御信号生成回路１２は、チップイネーブルＡのレベルがインアクティブである場合（メモリインタフェース回路２によりメモリアクセスが行われていない場合）、修復データＦＩＦＯ回路１１から出力された修復待ち制御フラグのレベルに応じて、修復データＦＩＦＯ回路１１の修復データバッファに修復待ちデータが保持されているか否かを判別する。
【００９１】
メモリ制御信号生成回路１２は、修復待ち制御フラグのいずれか１ビットのレベルがアクティブである場合（修復待ちデータが保持されていると判別した場合）、ステップＳ３へと処理を進める。メモリ制御信号生成回路１２は、修復待ち制御フラグのいずれか１ビットのレベルがインアクティブである場合（修復待ちアドレスおよび修復待ちデータを保持していないと判別した場合）、後述する巡回プロセスＳ４のステップＳ４０へと処理を進める。なお、ステップＳ３でのＦＩＦＯ出力処理の詳細は後述する。
【００９２】
図９は、ＦＩＦＯ出力処理を示すフローチャートである。図９を参照して、ステップＳ３のＦＩＦＯ出力の詳細を説明する。ＦＩＦＯ出力処理は、ステップＳ３０、ステップＳ３１、ステップＳ３２、ステップＳ３３を含む。
【００９３】
ステップＳ３０において、メモリ制御信号生成回路１２は、修復データバッファ１１ｙ（ｙはＦＩＦＯ修復ポインタが示す値。）に保持された修復対象のデータおよびアドレスを用いて、メモリ４に対するライト（すなわち修復処理）を行う。具体的には、メモリ制御信号生成回路１２は、チップイネーブルＡ'にアクティブレベルを出力し、ライトイネーブルＡ'にアクティブレベルを出力し、修復データバッファ１１ｙの修復アドレスの値をアドレスＡ'の値として出力し、修復データバッファ１１ｙの修復データの値をライトデータＡ'の値として出力する。
【００９４】
そして、チップイネーブルＡのレベルがアクティブでないため（つまり、メモリインタフェース回路２によりメモリアクセスが行われていないため）、メモリ制御信号選択回路１０は、メモリ制御信号生成回路１２から出力された第２のメモリアクセス制御信号を第３のメモリアクセス制御信号として選択し、選択した第３のメモリアクセス制御信号をＥＣＣ回路３およびメモリ４に対して出力する。ステップＳ３１へと処理を進める。
【００９５】
ステップＳ３１において、修復データＦＩＦＯ回路１１は、修復データバッファ１１ｙの修復待ち制御フラグレジスタ１１ｙ２の値をクリアする。そして、ステップＳ３２へと処理を進める。
【００９６】
ステップＳ３２において、ＦＩＦＯ制御回路１３は、ＦＩＦＯ修復ポインタの値をインクリメントし、ステップＳ３での処理を終了する。
【００９７】
次に、図７に戻って、巡回プロセスＳ４の詳細を説明する。巡回プロセスＳ４は、ステップＳ４０、ステップＳ４１、ステップＳ４２、ステップＳ４３、ステップＳ１を含む。
【００９８】
ステップＳ４０において、メモリ制御信号生成回路１２は、チップイネーブルＡのレベルがインアクティブである場合（メモリインタフェース回路２によりメモリアクセスが行われていない場合）、メモリ４の全てのメモリアドレスに対するリード（すなわち、巡回処理）を行う。具体的には、ステップＳ４０において、メモリ制御信号生成回路１２は、チップイネーブルＡ'にアクティブレベルを出力し、ライトイネーブルＡ'のレベルにインアクティブレベルを出力し、アドレスＡ'の値として任意のメモリアドレスの値を設定して出力する。
【００９９】
また、ステップＳ４０において、メモリ制御信号選択回路１０は、チップイネーブルＡのレベルがアクティブでないため（つまり、メモリインタフェース回路２によりメモリアクセスが行われていないため）、メモリ制御信号生成回路１２から出力された第２のメモリアクセス制御信号を、ＥＣＣ回路３およびメモリ４に対して出力する第３のメモリアクセス制御信号として選択および出力する。そして、ステップＳ４３へと処理を進める。
【０１００】
ステップＳ４３において、メモリ制御信号生成回路１２は、ステップＳ４０で出力したアドレスＡ'について、そのアドレスＡ'のメモリアドレスの値をインクリメントする。そして、ステップＳ４１へと処理を進める。
【０１０１】
ステップＳ４１において、一時保存バッファ回路１４は、メモリ制御信号生成回路１２から出力されたアドレスＡ'と、ＥＣＣ回路３から出力されたリードデータＡと、を一時的に保持し、ステップＳ４２へと処理を進める。
【０１０２】
ステップＳ４２において、修復データＦＩＦＯ回路１１は、誤り検出信号のレベルに応じて、リードデータＡ'が訂正されているか否かを判別する。修復データＦＩＦＯ回路１１は、誤り検出信号のレベルがアクティブである場合（リードデータＡ'が訂正されていると判別した場合）、ステップＳ１へと処理を進める。ステップＳ１でのＦＩＦＯ入力処理は上述した処理と同様であるため、ここではその説明を省略する。修復データＦＩＦＯ回路１１は、誤り検出信号のレベルがインアクティブである場合（リードデータＡ'が訂正されていないと判別した場合）、巡回プロセスＳ４を終了する。
【０１０３】
ステップＳ４３において、メモリ制御信号生成回路１２は、ステップＳ４０で出力したアドレスＡ'について、そのアドレスＡ'のメモリアドレスの値をインクリメントし、巡回プロセスＳ４を終了する。
【０１０４】
上述したステップＳ００、Ｓ０１、Ｓ０２、Ｓ０５、Ｓ０６、Ｓ１での動作処理によって、「監視プロセスＳ０において、リードデータの誤り訂正が検出された場合に、自己修復回路１が、修復待ちデータを修復データＦＩＦＯ回路１１に保持する」という動作処理を実現することができる。
【０１０５】
また、上述したステップＳ００、Ｓ２０、Ｓ３での動作処理によって、「メモリインタフェース回路２がメモリ４にアクセスしていないタイミングにおいて、修復データＦＩＦＯ回路１１に保持しておいた誤り訂正済のデータを、自己修復回路１がメモリ４に上書する。」という動作処理を実現することができる。これにより、修復プロセスを実現することができる。
【０１０６】
また、上述したステップＳ００、Ｓ０１、Ｓ０２、Ｓ０３、Ｓ０４での動作処理によって、「監視プロセスＳ０において、誤り訂正済のデータが保持されて修復待ち状態であるときに、メモリインタフェース回路２が修復予定のアドレスにライトアクセスを行い上書する場合であっても、自己修復回路１が、保持している誤り訂正済のデータをそのライトアクセスに追従して修復する。これにより、自己修復回路１が、修復待ちデータを自動的に更新する。」という動作処理を実現することができる。
【０１０７】
また、上述したＳ００、Ｓ２０、Ｓ４０、Ｓ４１、Ｓ４２、Ｓ４３での動作処理によって、「メモリインタフェース回路２がメモリ４にアクセスしていないタイミングにおいて、自己修復回路１が、メモリ４の全てのアドレスを順次リードする。これにより、自己修復回路１が、メモリ４内のデータ誤り発生の有無をチェックすると共に、誤り発生を検出した際には修復待ちデータとして修復データＦＩＦＯ回路１１に保持する。」という動作処理を実現することができる。これにより、巡回プロセスを実現することができる。
【０１０８】
図１０Ａ、図１０Ｂ、図１０Ｃは、自己修復回路１による修復方法における、監視プロセスおよび修復プロセスの動作処理を示すタイミングチャートである。図１０Ａ、図１０Ｂ、図１０Ｃを参照して、自己修復回路１の監視プロセスと修復プロセスの動作例を説明する。
【０１０９】
図１０Ａを参照する。ｔ０１に示す監視プロセス期間において、ＥＣＣ誤り検出が検出される（同図の６０２）。この場合、自己修復回路１は、メモリインタフェース回路２により出力されたアドレスＡを誤りの発生したアドレス値（同図の６００）として、修復データバッファ１１０の修復待ちアドレスレジスタ１１００(同図の６０３)に保持する。また、自己修復回路１は、ＥＣＣ回路３により訂正済のリードデータＡ（同図の６０１）を、修復データバッファ１１０の修復待ちデータレジスタ１１０１(同図の６０４)に保持する。
【０１１０】
続けて誤りが発生し、ＥＣＣ誤りが検出される（同図の６２２）。この場合、自己修復回路１は、上記と同様に、誤りの発生したアドレスの値(同図の６２０)を、修復データバッファ１１１の修復待ちアドレスレジスタ１１１０(同図の６２３)に保持する。また、自己修復回路１は、訂正済のリードデータＡ（同図の６２２）を、修復データバッファ１１１の修復待ちデータレジスタ１１１１(同図の６２４)に保持する。
【０１１１】
図１０Ｂを参照する。自己修復回路１は、修復待ちデータを保持した状態のまま、メモリインタフェース回路２とメモリ４の間でメモリアクセスが行われていない未使用時間(同図のｔ１０)を検出する。この場合、メモリ制御信号生成回路１２が、チップイネーブルＡ'をアクティブレベルにし(同図の６０５)、ライトイネーブルＡ'のレベルをアクティブにし(同図の６０６)、誤りの発生したアドレスの値(同図の６０７)をアドレスＡ'の値にし、訂正済のリードデータの値(同図の６０８)をライトデータＡ'の値にして出力する。
【０１１２】
図１０Ｃを参照する。自己修復回路１は、ＥＣＣ回路３およびメモリ４に対して、チップイネーブルＢ（同図の６０９）、ライトイネーブルＢ（同図の６１０）、アドレスＢ（同図の６１３）、およびライトデータＢ（同図の６１４）を出力する。これにより、ライトデータＢによってメモリ４のデータがライトされることで、誤りの発生したデータが修復される。
【０１１３】
自己修復回路１は、修復データバッファ１１０に保持したデータおよびアドレスを用いて、修復対象データのライト動作に必要とする第２のメモリアクセス制御信号を生成する。そして、自己修復回路１は、第２のメモリアクセス制御信号を出力した後、修復データバッファ１１０内の修復待ち制御フラグレジスタ１１０２のレベルをクリアする。
【０１１４】
同様にして、自己修復回路１は、修復データバッファ１１１に保持したデータおよびアドレスを用いて、修復対象データのライト動作に必要とする第２のメモリアクセス制御信号（同図の６２９、６３０、６３３、６３４）を生成する。そして、自己修復回路１は、第２のメモリアクセス制御信号を出力した後、修復データバッファ１１１内の修復待ち制御フラグレジスタ１１１２のレベルをクリアする。
【０１１５】
上述した動作処理によって、メモリ４に対するメモリアクセスが行われていない未使用期間ｔ１０において、誤りが発生したメモリ４のアドレスに対して、訂正済のデータを上書することができる。
【０１１６】
図１１Ａ、図１１Ｂは、自己修復回路１による修復方法における、修復待ち期間における修復データ更新の動作処理を示すタイミングチャートである。図１１Ａ、図１１Ｂを参照して、自己修復回路１が修復待ちデータを保持しているときに、メモリインタフェース回路２が修復対象となるメモリアドレスにデータを上書する場合の監視プロセスおよび修復プロセスの動作例を説明する。
【０１１７】
図１１Ａを参照する。ｔ０４に示す監視プロセス期間において、誤り検出信号のレベルがアクティブになる（同図の６４４）。この場合、自己修復回路１は、メモリインタフェース回路２により出力されたアドレスＡを誤りの発生したアドレスの値（同図の６４０）として、修復データバッファ１１０の修復待ちアドレスレジスタ１１００(同図の６４５)に保持する。また、自己修復回路１は、ＥＣＣ回路３により訂正済のリードデータＡ（同図の６４２）を、修復データバッファ１１０の修復待ちデータレジスタ１１０１(同図の６４６)に保持する。
【０１１８】
図１１Ｂを参照する。修復データバッファ１１０に修復待ちデータが存在するときに、その修復待ちデータのアドレスについて同じ値のアドレスであるデータが上書きされる（同図の６４１のアドレスおよび同図の６４３のデータに関して、同じ値のアドレスのデータについてライトアクセスがあった場合。）。この場合、自己修復回路１は、修復データバッファ１１０内に既に保持されている訂正済データの値(同図の６４６)を、メモリインタフェース回路２が出力したライトデータＡの値（同図の６４７）によって上書する。
【０１１９】
自己修復回路１は、メモリインタフェース回路２とメモリ４の間でメモリアクセスが行われていない未使用時間(同図のｔ１２)を検出する。この場合、自己修復回路１は、メモリ制御信号生成回路１２において、チップイネーブルＡ'をアクティブレベルにし(同図の６４８)、ライトイネーブルＡ'をアクティブレベルにし(同図の６４９)、誤りの発生したアドレスの値(図の６５０)をアドレスＡ'の値にし、訂正済のリードデータの値(同図の６５１)をライトデータＡ'の値にして出力する。
【０１２０】
そして、自己修復回路１は、ＥＣＣ回路３およびメモリ４に対して、チップイネーブルＢ（同図の６５６）、ライトイネーブルＢ（同図の６５７）、アドレスＢ（同図の６５８）、およびライトデータＢ（同図の６５９）を出力する。これにより、ライトデータＢによってメモリ４のデータがライトされることで、誤りの発生したデータが修復される。
【０１２１】
自己修復回路１は、修復データバッファ１１０に保持したデータおよびアドレスを用いて、修復対象データのライト動作に必要とする第２のメモリアクセス制御信号を生成する。そして、自己修復回路１は、第２のメモリアクセス制御信号を出力した後、修復データバッファ１１０内の修復待ち制御フラグレジスタ１１０２のレベルをクリアする。
【０１２２】
上述した動作処理によって、メモリ４に対するメモリアクセスが行われていない未使用期間ｔ１２において、修復待ち中にデータが更新された場合においても、誤りの発生したアドレスに対して、更新された訂正済のデータを上書することができる。
【０１２３】
図１２Ａ、図１２Ｂは、自己修復回路１による修復方法における、巡回プロセスの動作処理を示すタイミングチャートである。図１２Ａ、図１２Ｂを参照して、自己修復回路１の動作タイミングにおける巡回プロセスの動作例を説明する。
【０１２４】
図１２Ａを参照する。ｔ２０に示す巡回プロセス期間において、修復データバッファ１１０に修復データが存在しない状態で、かつ、メモリインタフェース回路２とメモリ４の間でメモリアクセスが行われていない未使用時間になる。この場合、メモリ制御信号生成回路１２は、チップイネーブルＡ'のレベルをＬｏｗ(同図の６８０)にし、ライトイネーブルＡ'のレベルをＬｏｗ(図の６８１)にし、任意の値をアドレスＡ'の値(同図の６８２)にして出力する。これにより、メモリ制御信号生成回路１２は、メモリ４に対するリードアクセス制御信号を生成する。
【０１２５】
図１２Ｂを参照する。メモリ制御信号生成回路１２からのリードアクセス制御信号に対して、メモリ４はリードアクセス応答としてリードデータＢを出力する。リードデータＢに対して誤りの訂正が検出される（同図の６８３）。この場合、自己修復回路１は、誤りの発生したアドレスの値を、修復データバッファ１１０の修復待ちアドレスレジスタ１１００の値（同図の６８４）として保持する。また、自己修復回路１は、訂正済リードデータＢの値を、修復待ちデータレジスタ１１０１の値(同図の６８５)として保持する。
【０１２６】
修復データバッファ１１０に修復データを保持した状態で、かつ、メモリインタフェース回路２とメモリ４の間でメモリアクセスが行われていない未使用時間(同図のｔ２１期間)になる。この場合、自己修復回路１は修復プロセスに移行する。自己修復回路１は、メモリ制御信号生成回路１２において、チップイネーブルＡ'をアクティブレベルにし(同図の６８０)、ライトイネーブルＡ'をアクティブレベルにし(図の６８６)、誤りの発生したアドレスの値(同図の６８７)をアドレスＡ'の値にし、訂正済のリードデータの値(同図の６８８)をライトデータＡ'の値にして出力する。これにより、メモリ制御信号生成回路１２は、メモリ４に対するライトアクセス制御信号を生成する。
【０１２７】
そして、自己修復回路１は、ＥＣＣ回路３およびメモリ４に対して、チップイネーブルＢ（同図の６８９）、ライトイネーブルＢ（同図の６９０）、アドレスＢ（同図の６９１）、およびライトデータＢ（同図の６９２）を出力する。これにより、ｔ２１期間において訂正済のリードデータを、誤りの発生したメモリ４のアドレスに対して上書する。修復プロセスを完了する。
【０１２８】
修復プロセスの完了後、再度、メモリインタフェース回路２とメモリ４の間でメモリアクセスが行われていない未使用時間(同図のｔ２２期間)になる。自己修復回路１は、再び巡回プロセスに移行する。自己修復回路１において、メモリ制御信号生成回路１２は、ｔ２０期間での手順と同様にして、メモリ４に対するリードアクセス制御信号の生成を再開する。このとき、メモリ制御信号生成回路１２は、アドレスＡ'の値(同図の６８２)をインクリメントして出力する。
【０１２９】
上述した動作処理によって、メモリ４に対するメモリアクセスが行われていない未使用期間ｔ２０において、巡回プロセスの動作処理と、巡回プロセス中に誤りが検出された後のｔ２１期間における修復プロセスの動作処理と、以降のｔ２２期間における再度の巡回プロセスの動作処理と、を実現することができる。
【０１３０】
以上に説明したように、自己修復回路１によるメモリ４の誤りデータの修復方法では、メモリインタフェース回路２がメモリ４にリードアクセスするときに、リードデータの誤りが検出された場合、誤りが訂正されたデータを自己修復回路１に蓄積する。そして、修復方法では、メモリインタフェース回路２とメモリ４の間でライトアクセスおよびリードアクセスのいずれもが行われていないタイミングを検出し、蓄積しておいた訂正済データをメモリ４に上書きする動作処理を行う。上述した本実施の形態によって奏する効果を、以下により具体的に説明する。
【０１３１】
第１の効果として、自己修復回路１は、メモリインタフェース回路２とメモリ４の間で行われる通常のメモリアクセス制御動作（ライトアクセスおよびリードアクセス)を阻害することなく、メモリ４のデータ誤りのチェックを行うことができる。このため、システムの応答時間の低下を防止することができる。したがって、本発明に関連する技術の問題点を解決することができる。
【０１３２】
第２の効果として、ソフトエラーなどのメモリに発生したデータ誤りに対する誤動作を防止することができる。上述した監視プロセス、修復プロセス、および巡回プロセスが継続して動作することによって、メモリ４に発生するデータ誤りを、順次修復することができる。これにより、メモリ４に保持されたデータの信頼性を高めることができる。その結果、メモリ４のデータ誤りに起因して発生する予期不可能な制御ソフトウェア上の誤動作を防ぐことができる。
【０１３３】
第３の効果として、メモリの面積を小型化することができる。自己修復回路１によるデータ誤りの修復を行わずに、メモリ４にデータ誤りのない状態を長時間にわたって維持するためには、多ビット訂正可能なＥＣＣ回路を必要とする。しかし、これは、メモリ面積の増大を招くことになる。これに対して本実施の形態では、上述した監視プロセス、修復プロセス、および巡回プロセスが継続して動作することによって、メモリ４に発生したデータ誤りが蓄積されないうちに順次修復されていくために、ＥＣＣ回路の訂正能力が低いものであってもメモリ４にデータ誤りのない状態を維持することができる。この結果、多ビット訂正可能なＥＣＣ回路が不要となり、メモリの面積を小型化することができる。
【０１３４】
＜発明の実施の形態２＞
本実施の形態では、上述した発明の実施の形態１に係る自己修復回路１の変形例について説明する。上述した実施の形態１と比較して、本実施の形態では、自己修復回路１の構成が相違する。このため、以下では、自己修復回路１の構成を中心に説明し、他の構成についてはその説明を省略する。
【０１３５】
図１３Ａは、本実施の形態に係る自己修復回路１の構成を示す。本実施の形態に係る自己修復回路１の構成は、上述した実施の形態１および後述する実施の形態３、４と比較して、最も基本的な構成を示す。
【０１３６】
自己修復回路１は、メモリ制御信号選択回路１０と、修復データＦＩＦＯ回路１１と、メモリ制御信号生成回路１２と、を備えている。修復データＦＩＦＯ回路１１は、修復データバッファ１１０を備えている。
【０１３７】
メモリ制御信号選択回路１０は、メモリ４へのメモリアクセスが行われているか否かに応じて、第１のメモリアクセス制御信号または第２のメモリアクセス制御信号のいずれかを選択する。メモリ制御信号選択回路１０は、選択したメモリアクセス制御信号を第３のメモリアクセス制御信号として出力する。
【０１３８】
メモリ制御信号選択回路１０は、メモリ４へのメモリアクセスが行われている場合に、第１のメモリアクセス制御信号を選択する。メモリ制御信号選択回路１０は、メモリ４へのメモリアクセスが行われていない場合に、第２のメモリアクセス制御信号を選択する。
【０１３９】
修復データＦＩＦＯ回路１１は、メモリ４へのリードアクセスが行われており、かつ、ＥＣＣ回路３において誤り訂正が行われた場合に、ＥＣＣ回路３において誤り訂正が行われた誤り訂正済のリードデータＡと、その誤り訂正済みリードデータＡのアドレスＡと、を修復データバッファ１１０に保持する。
【０１４０】
また、修復データＦＩＦＯ回路１１は、修復データバッファ１１０に保持した誤り訂正済のリードデータＡおよびその誤り訂正済みリードデータＡのアドレスＡを、修復データおよび修復アドレスとしてメモリ制御信号生成回路１２に出力する。さらに、修復データＦＩＦＯ回路１１は、修復データバッファ１１０に誤り訂正済のリードデータＡおよびその誤り訂正済みリードデータＡのアドレスＡを保持した場合には、修復待ち制御フラグのビットのレベルをアクティブに設定して、メモリ制御信号生成回路１２に出力する。
【０１４１】
メモリ制御信号生成回路１２は、メモリ４へのメモリアクセスが行われておらず、かつ、修復待ち制御フラグのビットのレベルがアクティブである場合に、修復データバッファ１１０に保持された誤り訂正済のリードデータＡおよびその誤り訂正済みのリードデータＡのアドレスＡを、ライトデータＡ'およびアドレスＡ'としてメモリ制御信号選択回路１０に出力する。さらに、この場合、メモリ制御信号生成回路１２は、チップイネーブルＡ'にアクティブレベルを出力し、ライトイネーブルＡ'にアクティブレベルを出力する。
【０１４２】
本実施の形態によっても、上述した第１の効果、第２の効果、および第３の効果を奏することができる。また、本実施の形態によれば、自己修復による回路規模のオーバーヘッドを最小限に抑制することができる。また、本実施の形態では、ユースケース上、メモリに対するアクセス頻度が低いため、未使用期間が多い場合に特に好適である。また、本実施の形態は、メモリリード・ライトアクセスに対してメモリが同一サイクルにより応答する場合において使用すると好適である。
【０１４３】
なお、図１３Ｂは、図１３Ａに示す自己修復回路１の構成の変形例を示す。図１３Ｂに示す自己修復回路１では、図１３Ａに示した自己修復回路１と比較して、メモリ制御信号生成回路１２から出力されたチップイネーブルＡ'、ライトイネーブルＡ'、およびアドレスＡ'が、修復データＦＩＦＯ回路１１に入力される点が相違する。図１３Ｂに示した自己修復回路１によれば、上述した監視プロセスＳ０および修復プロセスＳ２に加えて、上述した巡回プロセスＳ４を実行することができる。他の構成および動作については図１３Ａに示した自己修復回路１の構成および動作と同一であるため、ここではその詳細な説明を省略する。
【０１４４】
＜発明の実施の形態３＞
本実施の形態では、上述した発明の実施の形態１、２に係る自己修復回路１の変形例について説明する。上述した実施の形態１、２と比較して、本実施の形態では、自己修復回路１の構成が相違する。このため、以下では、自己修復回路１の構成を中心に説明し、他の構成についてはその説明を省略する。
【０１４５】
図１４は、本実施の形態に係る自己修復回路１の構成を示す。本実施の形態に係る自己修復回路１の構成は、上述した実施の形態２と比較して、修復データＦＩＦＯ回路１１が、複数の修復データバッファ１１０〜１１Ｎを備えている。複数の修復データバッファ１１０〜１１Ｎは、誤り訂正済のリードデータＡおよびその誤り訂正済みのリードデータＡのアドレスＡのセットをそれぞれ保持する。
【０１４６】
また、本実施の形態に係る自己修復回路１の構成は、上述した実施の形態２と比較して、ＦＩＦＯ記録ポインタおよびＦＩＦＯ修復ポインタを修復データＦＩＦＯ回路１１に出力するＦＩＦＯ制御回路１３をさらに備えている。
【０１４７】
修復データＦＩＦＯ回路１１は、修復データバッファ１１０〜１１Ｎのそれぞれに対応する複数のビットからなる修復待ち制御フラグを、ＦＩＦＯ制御回路１３およびメモリ制御信号生成回路１２に出力する。修復データＦＩＦＯ回路１１は、修復データバッファ１１０〜１１Ｎのうちの対応する修復データバッファにおいて、誤り訂正済のリードデータおよびその誤り訂正済みのリードデータのアドレスを保持している場合には、対応する修復待ち制御フラグのビットのレベルをアクティブに設定する。修復データＦＩＦＯ回路１１は、対応する修復データバッファにおいて誤り訂正済のリードデータおよびその誤り訂正済みのリードデータのアドレスを保持していない場合には、対応する修復待ち制御フラグのビットのレベルをインアクティブに設定する。
【０１４８】
ＦＩＦＯ制御回路１３は、チップイネーブルＡのレベルがアクティブであり、かつ、ライトイネーブルＡのレベルがインアクティブであり（すなわち、リードアクセスであり）、かつ、誤り検出信号のレベルがアクティブとなり、かつ、修復待ち制御フラグの複数ビット（１１０２、１１１２、…、１１Ｎ２）の少なくとも１つのレベルがインアクティブとなった場合に、ＦＩＦＯ記録ポインタの値をインクリメントする。
【０１４９】
修復データＦＩＦＯ回路１１は、メモリ４へのリードアクセスが行われており、かつ、ＥＣＣ回路３において誤り訂正が行われた場合に、誤り訂正済のリードデータＡおよび誤り訂正済みのリードデータＡのアドレスＡのセットを、複数の修復データバッファ１１０〜１１ＮのうちのＦＩＦＯ記録ポインタが指示する修復データバッファに保持する。
【０１５０】
メモリ制御信号生成回路１２は、第２のメモリアクセス制御信号を生成する場合には、ライトイネーブルＡ'のレベルをアクティブに設定して、ＦＩＦＯ制御回路１３およびメモリ制御信号選択回路１０に出力する。
【０１５１】
ＦＩＦＯ制御回路１３は、ライトイネーブルＡ'のレベルがアクティブとなった場合に、ＦＩＦＯ修復ポインタの値をインクリメントする。
【０１５２】
修復データＦＩＦＯ回路１１は、メモリ４へのメモリアクセスが行われていない場合に、複数の修復データバッファ１１０〜１１ＮのうちのＦＩＦＯ修復ポインタが指示する修復データバッファについて、その修復データバッファに保持された誤り訂正済のリードデータＡおよび誤り訂正済みのリードデータＡのアドレスＡのセットを、メモリ制御信号生成回路１２に出力する。
【０１５３】
本実施の形態によっても、上述した第１の効果、第２の効果、および第３の効果を奏することができる。本実施の形態においても、自己修復による回路規模のオーバーヘッドをより効果的に抑制することができる。また、本実施の形態では、ユースケース上、メモリに対するアクセス頻度が高いため、未使用期間が少ない場合に特に好適である。また、本実施の形態は、メモリリード・ライトアクセスに対してメモリが同一サイクルにより応答する場合において使用すると好適である。
【０１５４】
＜発明の実施の形態４＞
本実施の形態では、上述した発明の実施の形態１、２、３に係る自己修復回路１の変形例について説明する。上述した実施の形態１、２、３と比較して、本実施の形態では、自己修復回路１の構成が相違する。このため、以下では、自己修復回路１の構成を中心に説明し、他の構成についてはその説明を省略する。
【０１５５】
図１５は、本実施の形態に係る自己修復回路１の構成を示す。本実施の形態に係る自己修復回路１の構成は、上述した実施の形態２と比較して、一時保存バッファ回路１４をさらに備えている。
【０１５６】
一時保存バッファ回路１４は、第１のメモリアクセス制御信号に基づいて、メモリ４へのリードアクセスが行われているか否かを判別する。また、一時保存バッファ回路１４は、誤り訂正済のリードデータＡおよびその誤り訂正済みのリードデータＡのアドレスを一時的に保存する
【０１５７】
一時保存バッファ回路は、メモリ４へのリードアクセスが行われたと判別した場合に、ライト上書イネーブル信号のレベルをアクティブに設定する。また、この場合、一時保存バッファ回路は、一時的に保存した誤り訂正済のリードデータＡおよびその誤り訂正済みのリードデータＡのアドレスＡを、それぞれ監視データおよび監視アドレスとして、修復データＦＩＦＯ回路１１に出力する。
【０１５８】
修復データＦＩＦＯ回路１１は、誤り検出信号に基づいてＥＣＣ回路３において誤り訂正が行われたか否かを判別する。修復データＦＩＦＯ回路１１は、ＥＣＣ回路３において誤り訂正が行われたと判別した場合に、一時保存バッファ回路１４から出力された監視データおよび監視アドレスを修復データバッファ１１０に保持する。
【０１５９】
また、修復データＦＩＦＯ回路１１は、ライト上書イネーブル信号のレベルがアクティブに設定された場合に、修復データバッファ１１０に保持した監視データおよび監視アドレスを、それぞれ修復データおよび修復アドレスとして設定し、メモリ制御信号生成回路１２に出力する。
【０１６０】
本実施の形態によっても、上述した第１の効果、第２の効果、および第３の効果を奏することができる。本実施の形態においても、自己修復による回路規模のオーバーヘッドをより効果的に抑制することができる。また、本実施の形態では、ユースケース上、メモリに対するアクセス頻度が高いため、未使用期間が少ない場合に特に好適である。また、本実施の形態は、一般的なメモリ(メモリリード・ライトアクセスに対して、メモリが次サイクル以降に応答するメモリである場合)において、使用すると好適である。
【０１６１】
＜発明の実施の形態５＞
本実施の形態では、上述した発明の実施の形態１に係る自己修復回路１の動作の変形例について説明する。上述した実施の形態１と比較して、本実施の形態では、自己修復回路１により実行される自己修復方法における動作手順が相違する。このため、以下では、自己修復方法における動作手順を中心に説明し、他の構成についてはその説明を省略する。なお、本実施の形態に係る自己修復回路１の構成例は、上述した実施の形態１〜４のいずれかの構成例と同様とすればよい。ここでは、実施の形態２に係る自己修復回路１の構成例を備える場合を例に説明する。
【０１６２】
図１６は、本実施の形態に係る自己修復方法における動作手順の具体例を示すフローチャートを示す。本実施の形態に係る自己修復方法における動作手順は、上述した実施の形態１および後述する実施の形態６、７と比較して、最も基本的な動作手順を示す。本実施の形態に係る自己修復方法における動作手順は、監視ステップとしての監視プロセスＳ０と、修復ステップとしての修復プロセスＳ２と、を含む。
【０１６３】
監視プロセスＳ０において、自己修復回路１は、メモリ４へのリードアクセスが行われているか否かを判別する（ステップＳ００、Ｓ０１）。さらに、自己修復回路１は、メモリ４へのリードアクセスが行われている場合、ＥＣＣ回路３において誤り訂正が行われたか否かを判別する（ステップＳ０６）。そして、自己修復回路１は、メモリ４へのリードアクセスが行われており、かつＥＣＣ回路３において誤り訂正が行われた場合、ＥＣＣ回路３において誤り訂正が行われた誤り訂正済のリードデータＡと、その誤り訂正済みリードデータＡのアドレスＡと、を修復データバッファ１１０に保持する（ステップＳ１）。
【０１６４】
なお、ステップＳ１でのＦＩＦＯ入力処理は、図８に示したＦＩＦＯ入力処理と同様とすればよい。ただし、修復データＦＩＦＯ回路１１が備える修復データバッファ１１０の個数が１である場合には、ＦＩＦＯ制御回路１３によるＦＩＦＯ記録ポインタを使用せずに済む。このため、この場合には、図８に示したステップＳ１３を省略することができる。
【０１６５】
修復プロセスＳ２において、自己修復回路１は、メモリ４へのメモリアクセスが行われていない場合に、修復データバッファ１１０に保持した誤り訂正済のリードデータＡおよびその誤り訂正済みのリードデータＡのアドレスＡを含む第２のメモリアクセス制御信号を生成して、その生成した第２のメモリアクセス制御信号を第３のメモリアクセス制御信号として出力する（ステップＳ３）。
【０１６６】
なお、ステップＳ３でのＦＩＦＯ出力処理は、図９に示したＦＩＦＯ出力処理と同様とすればよい。ただし、修復データＦＩＦＯ回路１１が備える修復データバッファ１１０の個数が１である場合には、ＦＩＦＯ制御回路１３によるＦＩＦＯ修復ポインタを使用せずに済む。このため、この場合には、図９に示したステップＳ３２を省略することができる。
【０１６７】
本実施の形態によっても、上述した第１の効果、第２の効果、および第３の効果を奏することができる。また、本実施の形態によれば、回路構成が単純化されるため、自己修復回路そのものの信頼性が向上される。
【０１６８】
＜発明の実施の形態６＞
本実施の形態では、上述した発明の実施の形態１、５に係る自己修復回路１の動作の変形例について説明する。上述した実施の形態１、５と比較して、本実施の形態では、自己修復回路１により実行される自己修復方法における動作手順が相違する。このため、以下では、自己修復方法における動作手順を中心に説明し、他の構成についてはその説明を省略する。なお、本実施の形態に係る自己修復回路１の構成例は、上述した実施の形態１〜４のいずれかの構成例と同様とすればよい。ここでは、実施の形態２に係る自己修復回路１の構成例を備える場合を例に説明する。
【０１６９】
図１７は、本実施の形態に係る自己修復方法における動作手順の具体例を示すフローチャートを示す。本実施の形態に係る自己修復方法における動作手順は、上述した実施の形態５と比較して、巡回ステップとしての巡回プロセスＳ４をさらに含む。巡回プロセスＳ４は、ステップＳ４０、Ｓ４２、Ｓ４３、Ｓ１を含む。（ａ）ステップが、ステップＳ４０、Ｓ４２、Ｓ４３を含む。（ｂ）ステップが、Ｓ４２、Ｓ１を含む。
【０１７０】
まず、上述した修復プロセスＳ２において、自己修復回路１は、修復データバッファ１１０〜１１Ｎに誤り訂正済のリードデータＡおよびその誤り訂正済みのリードデータＡのアドレスＡが保持されているか否かを判別する（ステップＳ２０）。
【０１７１】
巡回プロセスＳ４の（ａ）ステップにおいて、自己修復回路１は、メモリ４へのメモリアクセスが行われておらず、かつ、修復データバッファ１１０に誤り訂正済のリードデータＡおよびその誤り訂正済みのリードデータＡのアドレスＡが保持されていない場合、メモリ４の全メモリアドレスに対するリードアクセスを行うように第２のメモリアクセス制御信号を生成して、その生成した第２のメモリアクセス制御信号を第３のメモリアクセス制御信号として出力する（ステップＳ４０、Ｓ４２、Ｓ４３）。
【０１７２】
巡回プロセスＳ４の（ｂ）ステップにおいて、自己修復回路１は、メモリ４へのメモリアクセスが行われていない場合、ＥＣＣ回路３において誤り訂正が行われたか否かを判別する（ステップＳ４２）。さらに、自己修復回路１は、メモリ４へのメモリアクセスが行われておらず、かつＥＣＣ回路３において誤り訂正が行われた場合、ＥＣＣ回路３において誤り訂正が行われた誤り訂正済のリードデータＡと、その誤り訂正済みリードデータＡのアドレスＡ'と、を修復データバッファ１１０に保持する（ステップＳ１）。
【０１７３】
本実施の形態によっても、上述した第１の効果、第２の効果、および第３の効果を奏することができる。本実施の形態によっても、回路構成が単純化されるため、自己修復回路そのものの信頼性についても相応に向上される。
【０１７４】
＜発明の実施の形態７＞
本実施の形態では、上述した発明の実施の形態１、５、６に係る自己修復回路１の動作の変形例について説明する。上述した実施の形態１、５、６と比較して、本実施の形態では、自己修復回路１により実行される自己修復方法における動作手順が相違する。このため、以下では、自己修復方法における動作手順を中心に説明し、他の構成についてはその説明を省略する。なお、本実施の形態に係る自己修復回路１の構成例は、上述した実施の形態１〜４のいずれかの構成例と同様とすればよい。ここでは、実施の形態２に係る自己修復回路１の構成例を備える場合を例に説明する。
【０１７５】
図１８は、本実施の形態に係る自己修復方法における動作手順の具体例を示すフローチャートを示す。本実施の形態に係る自己修復方法における動作手順は、上述した実施の形態５と比較して、メモリ４へのライトアクセス中に修復データバッファ１１０に保持された修復待ちデータを上書きするステップをさらに含む、
【０１７６】
修復待ちデータを上書きするステップにおいて、自己修復回路１は、メモリ４へのライトアクセスが行われている場合に、修復データバッファ１１０に誤り訂正済のリードデータＡおよびその誤り訂正済みのリードデータＡのアドレスＡが保持されているか否かを判別する（ステップＳ０２）。さらに、自己修復回路１は、その保持されている誤り訂正済みのリードデータＡのアドレスＡとライトアクセスのアドレスＡとが等しいか否かを判別する（ステップＳ０３）。そして、自己修復回路１は、メモリ４へのライトアクセスが行われており、かつ、修復データバッファ１１０に誤り訂正済のリードデータＡおよびその誤り訂正済みのリードデータＡのアドレスＡが保持されていると共に、その保持されている誤り訂正済みのリードデータＡのアドレスＡとライトアクセスのアドレスＡとが等しい場合に、その保持されている誤り訂正済みのリードデータＡをライトアクセスのライトデータの値によって上書きする（ステップＳ０４）。
【０１７７】
本実施の形態によっても、上述した第１の効果、第２の効果、および第３の効果を奏することができる。本実施の形態によっても、回路構成が単純化されるため、自己修復回路そのものの信頼性についても相応に向上される。
【０１７８】
＜その他の実施の形態＞
上述した複数の実施の形態は、適宜組み合わせることも可能である。さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【符号の説明】
【０１７９】
１  自己修復回路、
１０  メモリ制御信号選択回路、
１０１  チップイネーブルセレクタ、
１０２  ライトイネーブルセレクタ、
１０３  アドレスセレクタ、
１０４  ライトデータセレクタ、
１０５  時分割制御回路、
１１  修復データＦＩＦＯ回路、
１１０、１１１、...、１１Ｎ、１１Ｗ  修復データバッファ、
１１Ｗ０  修復待ちアドレスレジスタ、
１１Ｗ１  修復待ちデータレジスタ、
１１Ｗ２  修復待ち制御フラグレジスタ、
１２  メモリ制御信号生成回路、
１３  ＦＩＦＯ制御回路、
１４  一時保存バッファ回路、
２  メモリインタフェース回路、
２０  アクセスポート、
２１  システムバス、
２１０、２３０、２３１、...、２３Ｍ  バス接続、
２２０、２２１、...、２２Ｍ  主回路、
３  ＥＣＣ回路、
３１  ＥＣＣ生成回路、
３２  ＥＣＣ訂正回路、
４  メモリ、
【図１】
2013250594.tif 000003
【図２】
2013250594.tif 000004
【図３】
2013250594.tif 000005
【図４】
2013250594.tif 000006
【図５】
2013250594.tif 000007
【図６】
2013250594.tif 000008
【図７】
2013250594.tif 000009
【図８】
2013250594.tif 000010
【図９】
2013250594.tif 000011
【図１０Ａ】
2013250594.tif 000012
【図１０Ｂ】
2013250594.tif 000013
【図１０Ｃ】
2013250594.tif 000014
【図１１Ａ】
2013250594.tif 000015
【図１１Ｂ】
2013250594.tif 000016
【図１２Ａ】
2013250594.tif 000017
【図１２Ｂ】
2013250594.tif 000018
【図１３Ａ】
2013250594.tif 000019
【図１３Ｂ】
2013250594.tif 000020
【図１４】
2013250594.tif 000021
【図１５】
2013250594.tif 000022
【図１６】
2013250594.tif 000023
【図１７】
2013250594.tif 000024
【図１８】
2013250594.tif 000025