(57)【要約】【課題】部分的な経年劣化の予兆を早期に発見することができる半導体装置を提供する。【解決手段】ＬＳＩ１は、複数のモジュールと、複数の遅延モニタを含む遅延モニタ群１５とを備える。各遅延モニタは、複数段のゲート素子を有するリングオシレータを含む。各遅延モニタは、ゲート素子の遅延時間を測定する。ＣＰＵ＃０は、遅延モニタによって測定された遅延時間に基づいて、遅延モニタの近傍のモジュールの経年劣化を判定する。【選択図】図１
2013088394.tif 000002
【特許請求の範囲】
【請求項１】
複数のモジュールと、
複数の遅延モニタとを備え、
各遅延モニタは、複数段のゲート素子を有するリングオシレータを含み、前記ゲート素子の遅延時間を測定し、
前記遅延モニタによって測定された遅延時間に基づいて、前記遅延モニタの近傍のモジュールの経年劣化を判定する制御部とを備えた、半導体装置。
【請求項２】
前記制御部は、前記経年劣化と判定した場合に、アラートを発信する、請求項１記載の半導体装置。
【請求項３】
前記制御部は、前記経年劣化と判定した場合に、前記半導体装置のビルトインセルフテストを実行する、請求項１記載の半導体装置。
【請求項４】
前記制御部は、前記経年劣化と判定した場合に、前記遅延モニタの近傍のモジュールの電源電圧を減少させる、請求項１記載の半導体装置。
【請求項５】
前記制御部は、前記経年劣化と判定した場合に、前記遅延モニタの近傍のモジュールの動作周波数を減少させる、請求項１記載の半導体装置。
【請求項６】
前記制御部は、経年劣化と判定した場合に、前記遅延モニタの近傍に配置されたファンの回転速度を増加させ、または回転頻度を増加させる、請求項１記載の半導体装置。
【請求項７】
前記半導体装置は、
複数のプロセッサを備え、
前記制御部は、前記経年劣化と判定した場合に、前記遅延モニタの近傍のモジュールが、高負荷のタスクを実行しているプロセッサであったときには、前記タスクを別のプロセッサに割り当てる、請求項１記載の半導体装置。
【請求項８】
前記制御部は、前記遅延モニタによって測定された遅延時間が所定の基準値を超えるか否かによって経年劣化を判定する、請求項１記載の半導体装置。
【請求項９】
前記半導体装置は、
複数のプロセッサを備え、前記複数のプロセッサの中の１つのプロセッサは、メインプロセッサとして機能し、残りはサブプロセッサとして機能し、
前記制御部は、前記経年劣化と判定した場合に、前記遅延モニタの近傍のモジュールがプロセッサでありメインプロセッサとして機能しているときには、前記近傍のモジュールであるプロセッサがサブプロセッサとして機能し、サブプロセッサとして機能しているプロセッサがメインプロセッサとして機能するように変更する、請求項１記載の半導体装置。
【請求項１０】
前記複数のプロセッサの各々は識別ＩＤを有し、前記サブプロセッサとして機能しているプロセッサがメインプロセッサとして機能するように変更する際、前記サブプロセッサと前記メインプロセッサの識別ＩＤを入れ替えることにより変更する、請求項９記載の半導体装置。
【請求項１１】
前記半導体装置は、
複数のプロセッサを備え、前記複数のプロセッサの一部は、予備のプロセッサとして機能することが可能であり、
前記制御部は、前記経年劣化と判定した場合に、前記遅延モニタの近傍のモジュールが動作中のプロセッサの場合に、予備のプロセッサとして機能しているプロセッサが存在するときには、前記近傍のモジュールであるプロセッサを停止し、かつ前記予備のプロセッサとして機能しているプロセッサを動作させる、請求項１記載の半導体装置。
【請求項１２】
前記半導体装置は、
複数のプロセッサを備え、前記複数のプロセッサの一部は、予備のプロセッサとして機能することが可能であり、予備のプロセッサを除く２個以上のプロセッサによってプログラムの並列処理が可能であり、
前記制御部は、前記経年劣化と判定した場合に、前記遅延モニタの近傍のモジュールが動作中のプロセッサのときには、予備のプロセッサとして機能しているプロセッサが存在しないときには、前記近傍のモジュールであるプロセッサを停止する、請求項１記載の半導体装置。
【請求項１３】
前記遅延モニタのリングオシレータは、遅延時間の測定期間および前記測定期間の前後の所定サイクル数以外では、発振し続ける、請求項１記載の半導体装置。
【請求項１４】
前記制御部は、前記遅延モニタによって、現時点で測定された遅延時間と、過去に測定された遅延時間との差分に基づいて、前記経年劣化を判定する、請求項１記載の半導体装置。
【請求項１５】
前記複数の遅延モニタは、近接する２個ずつが１つのペアを構成し、
前記ペアの一方の遅延モニタのリングオシレータは、遅延時間の測定期間の前後の所定サイクル数以外では、発振し続け、
前記ペアの他方の遅延モニタのリングオシレータは遅延時間の測定期間のみ発振し、
前記制御部は、前記一方の遅延モニタで測定された遅延時間と、前記他方の遅延モニタで測定された遅延時間との差分に従って、前記経年劣化を判定する、請求項１記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置に関する。
【背景技術】
【０００２】
集積回路などの装置の劣化を検出する方法が知られている。たとえば、特許文献１の方法は、デジタル・システムの最大動作周波数を周期的に求めることと、（ｉ）デジタル・システムの測定または推定最大動作周波数が、デジタル・システムの警告閾値動作周波数を下回る場合であって、当該警告閾値周波数は、デジタル・システムについて製造元によって特定された最小動作周波数以上である場合、および（ｉｉ）デジタル・システムの測定最大動作周波数間の差分の変化率がデジタル・システムについての許容変化率閾値を超える場合のうちの少なくとも１つであった場合にデジタル・システムの信頼性の低下を示す警告信号を生成することとを含む、ことが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２０１０−５２４１０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１のような従来の劣化検出装置は、劣化の予兆を察知したらアラームを発信して、該当システムまたはＬＳＩの修理または交換を行なうものである。前もって故障しそうなことが分かると、部品調達やメンテナンススケジュール調整ができるため、円滑に交換作業を進めることができるメリットがある。
【０００５】
しかしながら、従来の劣化検出回路には、以下の問題がある。
同一パッケージ内に複数のダイチップが実装されている場合は、それぞれのダイは違う製造プロセスで作られているため、信頼性に関するパラメータが相違する。すなわち故障率や寿命が違うため、あるダイチップが劣化しても他のダイチップも同じように劣化するとは限らない。また、アナログ回路、メモリ、高速回路、低速回路が混在する大規模システムＬＳＩでは、同一ダイであっても、場所によって微細度が違うため故障率や寿命が異なるし、また同程度の微細度でも場所によって劣化に大きく関係する電圧、電流密度、温度が異なるため、ある箇所が劣化しても他の箇所が同じように劣化しているとは限らない。このように、従来では、同一半導体チップ内の劣化は均一ではないにもかかわらず、チップ全体の劣化を検出して、チップごとに交換していたため、無駄が生じていた。
【０００６】
それゆえに、本発明の目的は、部分的な経年劣化の予兆を早期に発見することができる半導体装置を提供することである。
【課題を解決するための手段】
【０００７】
本発明の一実施形態の半導体装置は、複数のモジュールと、複数の遅延モニタとを備え、各遅延モニタは、複数段のゲート素子を有するリングオシレータを含み、ゲート素子の遅延時間を測定する。この半導体装置は、遅延モニタによって測定された遅延時間に基づいて、遅延モニタの近傍のモジュールの経年劣化を判定する制御部とを備える。
【発明の効果】
【０００８】
本発明の一実施形態によれば、部分的な経年劣化の予兆を早期に発見することができる半導体装置を提供することである。
【図面の簡単な説明】
【０００９】
【図１】本実施の形態のＬＳＩの構成を表わす図である。
【図２】図１のＬＳＩのレイアウトを表わす図である。
【図３】第１の実施形態の遅延モニタ＃ｉ（ｉ＝００〜１６）の構成を表わす図である。
【図４】第１の実施形態の遅延モニタの動作タイミングを表わす図である。
【図５】第１の実施形態における遅延モニタ＃ｉ（ｉ＝００〜１６）での遅延値のチェック手順を示すフローチャートである。
【図６】第２の実施形態における遅延モニタ＃ｉ（ｉ＝００〜１６）での遅延値のチェック手順を示すフローチャートである。
【図７】第３の実施形態における遅延モニタ＃ｉ（ｉ＝００〜１６）での遅延値のチェック手順を示すフローチャートである。
【図８】電源電圧の制御テーブルを表わす図である。
【図９】第４の実施形態における遅延モニタ＃ｉ（ｉ＝００〜１６）での遅延値のチェック手順を示すフローチャートである。
【図１０】周波数の制御テーブルを表わす図である。
【図１１】第５の実施形態における遅延モニタ＃ｉ（ｉ＝００〜１６）での遅延値のチェック手順を示すフローチャートである。
【図１２】第６の実施形態における遅延モニタ＃ｉ（ｉ＝００〜１６）での遅延値のチェック手順を示すフローチャートである。
【図１３】第７の実施形態における遅延モニタ＃ｉ（ｉ＝００〜１６）での遅延値のチェック手順を示すフローチャートである。
【図１４】第８の実施形態における遅延モニタ＃ｉ（ｉ＝００〜１６）での遅延値のチェック手順を示すフローチャートである。
【図１５】第９の実施形態における遅延モニタ＃ｉ（ｉ＝００〜１６）での遅延値のチェック手順を示すフローチャートである。
【図１６】第１０の実施形態の遅延モニタ＃ｉ（ｉ＝００〜１６）の構成を表わす図である。
【図１７】第１０の実施形態の遅延モニタの動作タイミングを表わす図である。
【図１８】第１１の実施形態における遅延モニタ＃ｉ（ｉ＝００〜１６）での遅延値のチェック手順を示すフローチャートである。
【図１９】第１２の実施形態の遅延モニタを説明するための図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態について図面を参照して説明する。
［第１の実施形態］
図１は、本実施の形態のＬＳＩの構成を表わす図である。
【００１１】
このＬＳＩ１は、マルチプロセッサ構成のＬＳＩである。このＬＳＩ１は、ＣＰＵ（Central Processing Unit）群１４を有する。ＣＰＵ群１４は、ＣＰＵ＃０〜＃８の複数のプロセッサを含む。ＣＰＵ＃０〜ＣＰＵ＃８の各々は、内部に１次キャッシュ（Ｉ-ｃａｃｈｅ，Ｄ-ｃａｃｈｅ）、ＣＰＵコアと、内部メモリ（Ｕ-ＬＭ）、ＭＭＵ（メモリ管理部）、ＳＤＩ（デバッガ）を有する。
【００１２】
ＣＰＵ＃０〜ＣＰＵ＃７は、ＣＰＵバス７２に接続され、ＣＰＵバス７２はＣＰＵバス制御部４を介して２次キャッシュ３に接続されている。また、２次キャッシュ３、ＣＰＵ＃８、遅延モニタ群１５は内部周辺バス１３に接続されている。さらに、２次キャッシュはＤＤＲ２Ｉ/Ｆ２を介して第１外部バスに接続されている。
【００１３】
ＣＰＵ＃０〜ＣＰＵ＃８のうち、ＣＰＵ＃８が本実施の形態で説明するＬＳＩ１の経年劣化の判定、および判定結果に基づいて制御を行なうプログラムを実行することとする。但し、ＣＰＵ＃０〜ＣＰＵ＃７の何れかにおいて本実施の形態で説明するＬＳＩ１の経年劣化の判定、および判定結果に基づいて制御を行なうプログラムを実行することも可能である。
【００１４】
このＬＳＩ１は、ＤＳＰ（Digital Signal Processor）群９と、ＤＭＡＣ（Direct Memory Access Controller）５、外部バス制御部８、電源回路１０、内蔵ＳＲＡＭ（Static Random Access Memory）６と、ＪＴＡＧ（Joint Test Action Group）コントローラ１１と、汎用入出力ポート１２と、クロック供給回路３３と、電源回路１０とを備える。
【００１５】
ＤＳＰ群９に含まれるＤＳＰ＃０およびＤＳＰ＃１は、画像処理などの所定の専用の演算を実行する。
【００１６】
（レイアウト）
図２は、図１のＬＳＩのレイアウトを表わす図である。
【００１７】
図２に示すように、ＣＰＵ＃０、ＣＰＵ＃１、ＣＰＵ＃２、ＣＰＵ＃３、ＣＰＵ＃４、ＣＰＵ＃５、ＣＰＵ＃６、ＣＰＵ＃７、ＣＰＵ＃８、ＤＳＰ＃０、ＤＳＰ＃１、２次キャッシュ３、ＤＤＲ２Ｉ／Ｆ２、内蔵ＳＲＡＭ６、クロック供給回路３３、機能モジュールＡ、機能モジュールＢ、機能モジュールＣ、機能モジュールＤ、機能モジュールＥ、機能モジュールＦがそれぞれ１つのモジュールを構成する。図１のＣＰＵバス制御部４、ＤＭＡＣ５、外部バス制御部８、電源回路１０、ＪＴＡＧコントローラ１１、汎用入出力ポート１２は、機能モジュール＃Ａ〜Ｆのいずれかに属する。
【００１８】
また、ＬＳＩ１の内部には、遅延モニタ＃００〜＃１６が配置されている。これらの遅延モニタ＃００〜＃１６は小さく且つ省電力である。これらの遅延モニタ＃００〜＃１６はレイアウト上全く同じ形状をしている。
【００１９】
各遅延モニタには、１つのモジュールが対応づけられ、割り当てられたモジュールの近傍（内部を含む）に配置される。たとえば、遅延モニタ＃００〜＃０８がそれぞれＣＰＵ＃０〜＃８に対応づけられて、近傍に配置されている。
【００２０】
遅延モニタとその遅延モニタに対応するモジュールは、電源を共通にしたり、あるいはクロック周波数を同じにしたり、あるいは電源とクロック両方を共通にする。各遅延モニタは、対応づけられたモジュールと、温度条件や、製造バラつきが近くなるように、割り当てられたモジュールの近傍に配置される。したがって、経年劣化によって遅延モニタの遅延値が大きくなった場合には、遅延モニタに対応し、近傍に配置されたモジュールも経年劣化していると判断することができる。
【００２１】
上述の１つのモジュール、すなわちＣＰＵ＃０、ＣＰＵ＃１、ＣＰＵ＃２、ＣＰＵ＃３、ＣＰＵ＃４、ＣＰＵ＃５、ＣＰＵ＃６、ＣＰＵ＃７、ＣＰＵ＃８、ＤＳＰ＃０、ＤＳＰ＃１、２次キャッシュ、ＤＤＲ２Ｉ／Ｆ、ＳＲＡＭ、クロック供給回路、機能モジュールＡ、機能モジュールＢ、機能モジュールＣ、機能モジュールＤ、機能モジュールＥ、機能モジュールＦは個別に周波数制御ができる。
【００２２】
ＣＰＵ＃０、ＣＰＵ＃１、ＣＰＵ＃２、ＣＰＵ＃３、ＣＰＵ＃４、ＣＰＵ＃５、ＣＰＵ＃６、ＣＰＵ＃７、ＣＰＵ＃８、ＤＳＰ＃０、ＤＳＰ＃１、２次キャッシュ、ＤＤＲ２Ｉ／Ｆ、ＳＲＡＭ、クロック供給回路、機能モジュールＡ、機能モジュールＦ、機能モジュールＢ＋Ｃ＋Ｄ＋Ｅのセットは、それぞれ個別に電圧制御ができる。
【００２３】
（遅延モニタ）
経年劣化によって、トランジスタの閾値が変化したり、トランジスタのドレイン電流が減少し、配線やビアは配線細りになる。したがって、経年劣化が進むにつれインバータチェーンのゲート遅延が徐々に大きくなる。本実施の形態の遅延モニタは、このような特質を利用する。
【００２４】
図３は、第１の実施形態の遅延モニタ＃ｉ（ｉ＝００〜１６）の構成を表わす図である。
【００２５】
図３を参照して、遅延モニタ＃ｉは、制御レジスタ２２と、フリップフロップ２５と、リングオシレータ２６と、パルスカウンタ２４と、エッジ検出部２３とを備える。
【００２６】
パルスカウンタ２４と、エッジ検出部２３と、ＣＰＵ＃８と、制御レジスタ２２は、内部周辺バス１３によって互いに接続されている。
【００２７】
制御レジスタ２２には、内部周辺バス１３を介してＣＰＵから信号が入力される。さらに、制御レジスタ２２には、基準クロックＣＬＫが入力される。基準クロックＣＬＫとして、たとえば、ＣＰＵ＃８のクロック、内部周辺バス１３のクロック、遅延モニタ専用のクロックなどが用いられる。
【００２８】
制御レジスタ２２は、遅延モニタ＃ｉの起動時に、ＣＰＵ＃８の制御によって、計測開始ビットに「１」が書き込まれる。制御レジスタ２２の計測開始ビットが「１」に設定された場合に、リセット信号ＲＳがパルスカウンタ２４に出力される。
【００２９】
制御レジスタ２２は、リセット信号ＲＳを出力してから一定時間経過後に、計測開始信号ＳＴをフリップフロップ２５に出力する。
【００３０】
フリップフロップ２５には、基準クロックＣＬＫと、計測開始信号ＳＴが入力される。フリップフロップ２５は、計測開始信号ＳＴが入力された場合に、リングオシレータ２６とエッジ検出部２３に、イネーブル信号であるオシレータイネーブル信号ＥＮを基準クロックＣＬＫの１周期Ｔｃの期間出力する。
【００３１】
リングオシレータ２６は、ＮＡＮＤ素子ＮＡと複数段のゲート素子ＩＶ１〜ＩＶ１４と第一の信号線とを有し、第一の信号線にイネーブル信号であるオシレータイネーブル信号ＥＮが入力されている期間、発振信号を出力する。
【００３２】
ＮＡＮＤ素子は２つの端子を有する。ＮＡＮＤ素子の一方の端子は、第一の信号線が接続されたイネーブル端子である。上述したフリップフロップ２５の動作により、オシレータイネーブル信号ＥＮは、基準クロックＣＬＫの１周期の期間、第一の信号線に入力される。そのため、第一の信号線と接続されたイネーブル端子には、オシレータイネーブル信号ＥＮが入力される。ＮＡＮＤ素子の他方の端子には、最終段のインバータ素子から出力される信号が入力される。
【００３３】
パルスカウンタ２４は、リングオシレータ２６の発振信号の発振数、つまり、リングオシレータ２６の出力パルス数Ｃｄｃをカウントする。このカウント値は、たとえば、１６ビット単位で出力される。パルスカウンタ２４には、制御レジスタ２２からリセット信号ＲＳが入力される。パルスカウンタ２４は、リセット信号ＲＳが入力されると、それまで保持していた出力パルス数をリセットする。
【００３４】
エッジ検出部２３は、リングオシレータ２６の各段のゲート素子の出力を、オシレータイネーブル信号ＥＮの終了のタイミングで検出する。具体的には、エッジ検出部２３は、オシレータイネーブル信号ＥＮのエッジが、上記のタイミングで伝播しているゲート素子の段数（以下、ゲート段数）Ｃｄｆを検出する。Ｃｄｆは、リングオシレータ２６内を通過したオシレータイネーブル信号ＥＮのエッジ数が偶数である場合には、イネーブル端子からのゲート段数と対応する。一方、リングオシレータ２６内を通過したオシレータイネーブル信号ＥＮのエッジ数が奇数である場合には、Ｃｄｆは、イネーブル端子からのゲート段数に全ゲート段数を加えた値となる。したがって、Ｃｄｆは、０〜２９までの値を取る。この検出内容は、たとえば、１５ビットで出力される。
【００３５】
ＣＰＵ＃８は、内部周辺バス１３を介して、パルスカウンタ２４と、エッジ検出部２３と接続される。ＣＰＵ＃８は、遅延モニタ＃ｉ内のエッジ検出部２３およびパルスカウンタ２４の出力に基づいて、ゲート素子による遅延に関する所定の数値を算出する。
【００３６】
本実施の形態において、ＣＰＵ＃８は、式（Ａ１）（Ａ２）に基づいて、パルスカウンタ２４のカウント値Ｃｄｃと、エッジ検出部２３の検出内容Ｃｄｆとから、第一の信号線にオシレータイネーブル信号が入力されている期間にオシレータイネーブル信号ＥＮのエッジがリングオシレータ２６の各ゲート素子を伝播可能な段数（以下、伝播可能段数）Ｃｄ、および、ゲート素子１段の平均遅延時間Ｔｄを算出する。
【００３７】
Ｃｄ＝Ｃｄｃ×Ｎ×２＋Ｃｄｆ・・・（Ａ１）
Ｔｄ＝Ｔｃ／Ｃｄ・・・（Ａ２）
ただし、Ｔｃは基準クロックＣＬＫの周期、Ｎはリングオシレータ２６のゲート素子の段数である。本実施の形態では、ゲート素子１段の平均遅延時間Ｔｄを経年劣化の判定のための遅延値として用いる。
【００３８】
（遅延値の算出動作）
次に、図４を用いて、遅延モニタ＃ｉが起動して、ＣＰＵ＃８によってＣｄおよびＴｄを算出する動作について説明する。
【００３９】
まず、制御レジスタ２２は、ＣＰＵ＃８の制御によって、計測開始ビットに「１」が書き込まれると、ハイレベルのリセット信号ＲＳをパルスカウンタ２４に出力する。パルスカウンタ２４は、リセット信号ＲＳを受けると、それまで保持していた検出内容をリセットする。
【００４０】
次に、制御レジスタ２２は、リセット信号ＲＳを出力してから基準クロックＣＬＫの１周期経過後に、ハイレベルの計測開始信号ＳＴをフリップフロップ２５に出力する。フリップフロップ２５は、計測開始信号ＳＴの立下りのタイミングから基準クロックＣＬＫの１周期の間の測定期間において、リングオシレータ２６の第一の信号線に、ハイレベルのオシレータイネーブル信号ＥＮを出力する。
【００４１】
オシレータイネーブル信号ＥＮがハイレベルの期間（すなわち、測定期間）において、パルスカウンタ２４は、リングオシレータ２６の発振信号の発振数Ｃｄｃをカウントする。エッジ検出部２３は、オシレータイネーブル信号ＥＮがロウレベルになるタイミングで、オシレータイネーブル信号ＥＮのエッジが伝播しているゲート段数Ｃｄｆを検出する。
【００４２】
ＣＰＵ＃８は、遅延モニタ＃ｉの出力Ｃｄｃ，Ｃｄｆに基づいて、式（Ａ１）、（Ａ２）に従って、伝播可能段数Ｃｄおよびゲート素子１段の平均遅延時間Ｔｄを求めて、Ｔｄを経年劣化判定のための遅延値として用いる。
【００４３】
（経年劣化の判定）
図５は、第１の実施形態における遅延モニタ＃ｉ（ｉ＝００〜１６）での遅延値のチェック手順を示すフローチャートである。
【００４４】
図５に示すように、まず、ＣＰＵ＃８は、制御レジスタ２２の計測開始ビットに「１」をセットとして、遅延モニタ＃ｉを起動する。遅延モニタ＃ｉ内のリングオシレータ２６が発振動作する（ステップＳ１０１）。
【００４５】
次に、ＣＰＵ＃８は、遅延モニタ＃ｉのエッジ検出部２３およびパルスカウンタ２４からの出力を受けて、式（Ａ１）および式（Ａ２）に従って、遅延値Ｔｄを求めて、遅延値Ｔｄをチェックする（ステップＳ１０２）。
【００４６】
ＣＰＵ＃８は、遅延値Ｔｄが基準値以下の場合には（ステップＳ１０３でＹＥＳ）、チェックを完了する。
【００４７】
ＣＰＵ＃８は、遅延値Ｔｄが基準値を超えた場合には（ステップＳ１０３でＮＯ）、遅延モニタ＃ｉの近傍のモジュールが経年劣化していると判定し、ＬＳＩ１の外部にアラートを発信する（ステップＳ１０４）。
【００４８】
上記の動作において、遅延モニタ＃ｉを起動して遅延値をチェックするタイミングは、システムの立ち上げ時または一定時間ごと（定期的）とする。また、このＬＳＩ１を用いたシステム内の他の動作に連携して（たとえば自動車に関連するＬＳＩの場合には、自動車が動く時、停止する時、エンジンの回転数が一定以上になった時など）、遅延モニタ＃ｉを起動して遅延値をチェックすることとしてもよい。また、コンピューターシステム管理者のメンテナンスの指示によって遅延モニタ＃ｉを起動して遅延値をチェックすることとしてもよい。
【００４９】
基準値は、許容できる上限値に到達するまでの時間を確保できる値を設定する。許容できる上限値に到達するまでの時間、つまり故障までの時間は、ＬＳＩを使用するシステムによって変わる。基準値は、予めシミュレーションで求めたり、あるいはＬＳＩの開発段階またはＬＳＩを使ったシステムの開発段階での試験での結果から求めることができる。また基準値は、ゲート素子１段の平均遅延時間Ｔｄでなくても、その関数になるものでもよい。たとえば、遅延モニタ＃ｉの出力であるＣｄｃ,Ｃｄｆそのものであってもよい。精度がそれほど要求されない場合はＣｄｃだけでもよい。精度がある程度必要な場合には、Ｃｄｃを上位ビットとし、Ｃｄｆを下位ビットとしてコンカチネートしたデータでもよい。Ｃｄｃ,Ｃｄｆをそのまま使う場合は、ＣＰＵの計算負荷が減り、制御が簡単になる。
【００５０】
（効果）
以上のように、本実施の形態によれば、ＣＰＵが遅延モニタを観測することによって、ＬＳＩの経年劣化を検出した場合に、アラートを発信することができる。
【００５１】
［第２の実施形態］
図６は、第２の実施形態における遅延モニタ＃ｉ（ｉ＝００〜１６）での遅延値のチェック手順を示すフローチャートである。
【００５２】
図６に示すように、まず、ＣＰＵ＃８は、制御レジスタ２２の計測開始ビットに「１」をセットとして、遅延モニタ＃ｉを起動する。遅延モニタ＃ｉ内のリングオシレータ２６が発振動作する（ステップＳ２０１）。
【００５３】
次に、ＣＰＵ＃８は、遅延モニタ＃ｉのエッジ検出部２３およびパルスカウンタ２４からの出力を受けて、式（Ａ１）および式（Ａ２）に従って、遅延値Ｔｄを求めて、遅延値Ｔｄをチェックする（ステップＳ２０２）。
【００５４】
ＣＰＵ＃８は、遅延値Ｔｄが基準値以下の場合には（ステップＳ２０３でＹＥＳ）、チェックを完了する。
【００５５】
ＣＰＵ＃８は、遅延値Ｔｄが基準値を超えた場合には（ステップＳ２０３でＮＯ）、ＪＴＡＧコントローラ１１に対して、適切なシーケンスの信号を与えることによって、ＬＳＩ１のセルフテスト(ＢＩＳＴ（Built-In Self Test）)を行ない、劣化によって誤動作する箇所が無いかを調査する（ステップＳ２０４）。
【００５６】
セルフテストで問題がない場合には（ステップＳ２０５でＮＯ）、ＣＰＵ＃８は、チェックを完了する。セルフテストで問題がある場合には（ステップＳ２０５でＹＥＳ）、ＣＰＵ＃８は、ＬＳＩ１の外部にＬＳＩ１が経年劣化していると判定して、アラートを発信する（ステップＳ２０６）。
【００５７】
（効果）
以上のように、本実施の形態によれば、ＣＰＵが遅延モニタを観測することによって、ＬＳＩの経年劣化を検出した場合に、ＢＩＳＴを実行して、経年劣化によって誤動作する箇所がないかを調べることができる。
【００５８】
［第３の実施形態］
図７は、第３の実施形態における遅延モニタ＃ｉ（ｉ＝００〜１６）での遅延値のチェック手順を示すフローチャートである。
【００５９】
図７に示すように、まず、ＣＰＵ＃８は、制御レジスタ２２の計測開始ビットに「１」をセットとして、遅延モニタ＃ｉを起動する。遅延モニタ＃ｉ内のリングオシレータ２６が発振動作する（ステップＳ３０１）。
【００６０】
次に、ＣＰＵ＃８は、遅延モニタ＃ｉのエッジ検出部２３およびパルスカウンタ２４からの出力を受けて、式（Ａ１）および式（Ａ２）に従って、遅延値Ｔｄを求めて、遅延値Ｔｄをチェックする（ステップＳ３０２）。
【００６１】
ＣＰＵ＃８は、遅延値Ｔｄが基準値以下の場合には（ステップＳ３０３でＹＥＳ）、チェックを完了する。
【００６２】
ＣＰＵ＃８は、遅延値Ｔｄが基準値を超えた場合には（ステップＳ３０３でＮＯ）、遅延モニタ＃ｉの近傍のモジュールが経年劣化していると判定し、電源回路１０を制御して遅延モニタ＃ｉの近傍のモジュールの電源電圧を下げる。電源電圧の制御は、電源レギュレータを内蔵するＬＳＩの場合には、ＣＰＵ＃８が、電源レギュレータへ電源電圧を下げるように指示する信号を出力することによって行なわれる。電源レギュレータを持たないＬＳＩの場合には、ＣＰＵ＃８は、ＬＳＩの外部へ電源電圧を減少するように要求して、ＬＳＩの外部のレギュレータが電源電圧を下げるように制御する。ＣＰＵ＃０は、基準値と遅延値Ｔｄとの差分を計算し、差分値に基づいて、電源電圧の下げ幅を決定する。たとえば、ＣＰＵ＃８は、基準値と遅延値Ｔｄとの差分値が１ｎｓごとに基準値を１０ｍＶ下げる。電圧が高いほど経年劣化が進むので、電源電圧を下げることで劣化の進行を遅らせることができる（ステップＳ３０４）。
【００６３】
さらに、ＣＰＵ＃８は、基準値を緩和する（大きくする）。基準値を緩和する理由は、遅延モニタ＃ｉの近傍のモジュールの電源電圧を下げたことによって遅延モニタ＃ｉにおけるゲート遅延が増えるためである（ステップＳ３０５）。
【００６４】
（効果）
以上のように、本実施の形態によれば、ＣＰＵが遅延モニタを観測することによって、ＬＳＩの経年劣化を検出した場合に、遅延モニタの近傍のモジュールの電源電圧を小さくすることによって、ＬＳＩの寿命を延ばすことができる。
【００６５】
なお、電源電圧の制御の別の方法として、図８に示すようなテーブルに従って、パルスカウンタ２４のカウント値Ｃｄｃの値によって、電源電圧の大きさを変更することとしてもよい。
【００６６】
第３の実施形態の電源電圧の下げ幅、および図８のテーブルの電圧は、製造プロセスや使用環境などによって適切な値が変わるので、それぞれのＬＳＩまたはシステムに合ったものを用いることにすればよい。
【００６７】
［第４の実施形態］
図９は、第４の実施形態における遅延モニタ＃ｉ（ｉ＝００〜１６）での遅延値のチェック手順を示すフローチャートである。
【００６８】
図９に示すように、まず、ＣＰＵ＃８は、制御レジスタ２２の計測開始ビットに「１」をセットとして、遅延モニタ＃ｉを起動する。遅延モニタ＃ｉ内のリングオシレータ２６が発振動作する（ステップＳ４０１）。
【００６９】
次に、ＣＰＵ＃８は、遅延モニタ＃ｉのエッジ検出部２３およびパルスカウンタ２４からの出力を受けて、式（Ａ１）および式（Ａ２）に従って、遅延値Ｔｄを求めて、遅延値Ｔｄをチェックする（ステップＳ４０２）。
【００７０】
ＣＰＵ＃８は、遅延値Ｔｄが基準値以下の場合には（ステップＳ４０３でＹＥＳ）、チェックを完了する。
【００７１】
ＣＰＵ＃８は、遅延値Ｔｄが基準値を超えた場合には（ステップＳ４０３でＮＯ）、遅延モニタ＃ｉの近傍のモジュールが経年劣化していると判定し、クロック供給回路３３を制御して遅延モニタ＃ｉの近傍のモジュールの動作周波数を下げる。ＣＰＵ＃８は、基準値と遅延値Ｔｄとの差分を計算し、差分値に基づいて、近傍のモジュール動作周波数の下げ幅を決定する。たとえば、基準値と遅延値Ｔｄとの差分値が５ｎｓごとに、供給するクロックの分周比を大きくする。周波数の制御は、ＬＳＩ内で自動的に下げてもよいし、またＯＳやソフトウェアによってＣＰＵ＃８からクロック周波数を制御することとしてもよい。周波数(＝サイクルタイム）が速いほど経年劣化が進むので、動作周波数を下げることで劣化の進行を遅らせることができる（ステップＳ４０４）。
【００７２】
さらに、ＣＰＵ＃８は、基準値を緩和する（大きくする）。基準値を緩和する理由は、遅延モニタ＃ｉの近傍のモジュールの動作周波数を下げても、劣化したゲートは元には戻らないため、同じ基準値を用いると毎回遅延値Ｔｄが基準値を超えることになるためである（ステップＳ４０５）。
【００７３】
（効果）
以上のように、本実施の形態によれば、ＣＰＵが遅延モニタを観測することによって、ＬＳＩの経年劣化を検出した場合に、遅延モニタの近傍のモジュールの動作周波数を下げることによって、ＬＳＩの寿命を延ばすことができる。
【００７４】
なお、周波数制御の別の方法として、図１０に示すようなテーブルに従って、パルスカウンタのカウント値Ｃｄｃの値によって、分周比を変えることで周波数の大きさを変更することとしてもよい。
【００７５】
なお、第４の実施形態の周波数の下げ幅、および図１０のテーブルの分周比は、製造プロセスや使用環境などによって適切な値が変わるので、それぞれのＬＳＩまたはシステムに合ったものを用いることにすればよい。
【００７６】
［第５の実施形態］
図１１は、第５の実施形態における遅延モニタ＃ｉ（ｉ＝００〜１６）での遅延値のチェック手順を示すフローチャートである。
【００７７】
図１１に示すように、まず、ＣＰＵ＃８は、制御レジスタ２２の計測開始ビットに「１」をセットとして、遅延モニタ＃ｉを起動する。遅延モニタ＃ｉ内のリングオシレータ２６が発振動作する（ステップＳ５０１）。
【００７８】
次に、ＣＰＵ＃８は、遅延モニタ＃ｉのエッジ検出部２３およびパルスカウンタ２４からの出力を受けて、式（Ａ１）および式（Ａ２）に従って、遅延値Ｔｄを求めて、遅延値Ｔｄをチェックする（ステップＳ５０２）。
【００７９】
ＣＰＵ＃８は、遅延値Ｔｄが基準値以下の場合には（ステップＳ５０３でＹＥＳ）、チェックを完了する。
【００８０】
ＣＰＵ＃８は、遅延値Ｔｄが基準値を超えた場合には（ステップＳ５０３でＮＯ）、遅延モニタ＃ｉの近傍のモジュールが経年劣化していると判定し、温度を下げるために、ＬＳＩパッケージに外付けされている冷却ファンの回転速度を上げたり、回転頻度を上げる制御を行なう。
【００８１】
ＣＰＵ＃８は、基準値と遅延値Ｔｄとの差分を計算し、差分値に基づいて、冷却ファンの制御幅を決定する。たとえば、基準値と遅延値Ｔｄとの差分値が１ｎｓごとに、冷却ファンの回転数を１段階上げたり、冷却ファンをオンにするためのセンサの温度設定を１段階上げたりする。温度が高いほど経年劣化が進むものがあるので、温度を下げることで劣化の進行を遅らせることができる（ステップＳ５０４）。
【００８２】
さらに、ＣＰＵ＃８は、基準値を緩和する（大きくする）。基準値を緩和する理由は、冷却ファンを制御しても、劣化したゲートは元には戻らないため、同じ基準値を用いると毎回遅延値が基準値を超えることになるためである（ステップＳ５０５）。
【００８３】
（効果）
以上のように、本実施の形態によれば、ＣＰＵが遅延モニタを観測することによって、ＬＳＩの経年劣化を検出した場合に、ＬＳＩパッケージに外付けされている冷却ファンの回転速度を上げたり、回転頻度を上げる制御を行い、温度を下げることによって、ＬＳＩの寿命を延ばすことができる。
【００８４】
［第６の実施形態］
ＣＰＵ＃０〜ＣＰＵ＃８は、ＯＳによってタスクが割り当てられる。各タスクはその内容によって、ＣＰＵにかかる負荷が違う。たとえば複雑な演算をするタスクを実行するＣＰＵは多くのゲートが速い周波数でスイッチングする。単純な計算を行なうタスクを実行するＣＰＵは少ないゲートが比較的遅い周波数でスイッチングする。外部からの入力を監視するような制御系のタスクを実行するＣＰＵは、ほとんどのゲートが全くスイッチングせず一部のゲートも非常に遅い周波数でしか動かない。
【００８５】
本実施の形態は、経年劣化が判定された場合に、複数のＣＰＵへのタスクの割り当てを切替える。
【００８６】
図１２は、第６の実施形態における遅延モニタ＃ｉ（ｉ＝００〜１６）での遅延値のチェック手順を示すフローチャートである。
【００８７】
図１２に示すように、まず、ＣＰＵ＃８は、制御レジスタ２２の計測開始ビットに「１」をセットとして、遅延モニタ＃ｉを起動する。遅延モニタ＃ｉ内のリングオシレータ２６が発振動作する（ステップＳ６０１）。
【００８８】
次に、ＣＰＵ＃８は、遅延モニタ＃ｉのエッジ検出部２３およびパルスカウンタ２４からの出力を受けて、式（Ａ１）および式（Ａ２）に従って、遅延値Ｔｄを求めて、遅延値Ｔｄをチェックする（ステップＳ６０２）。
【００８９】
ＣＰＵ＃８は、遅延値Ｔｄが基準値以下の場合には（ステップＳ６０３でＹＥＳ）、チェックを完了する。
【００９０】
ＣＰＵ＃８は、遅延値Ｔｄが基準値を超えた場合には（ステップＳ６０３でＮＯ）、遅延モニタ＃ｉの近傍のモジュールが経年劣化していると判定し、遅延モニタ＃ｉの近傍のモジュールが高負荷のタスクを実行しているＣＰＵであったときには（ステップＳ６０４でＹＥＳ）、近傍の遅延モニタの遅延値Ｔｄが基準値以下であり、かつ低負荷なタスクを実行しているか、いずれのタスクも実行していない別のＣＰＵを特定する。ＣＰＵ＃８は、特定した別のＣＰＵに近傍のモジュールであるＣＰＵが実行していた高負荷なタスクを割り当てる。また、ＣＰＵ＃８は、別のＣＰＵが低負荷なタクスを実行していた場合には、その低負荷なタスクを近傍のモジュールのＣＰＵに割り当てる。ＣＰＵの負荷が高いと、ゲートのスイッチング回数や、動作周波数、温度が上がるため、経年劣化がより進む。したがってＣＰＵの負荷を下げることで劣化の進行を遅らせることができる（ステップＳ６０５）。
【００９１】
さらに、ＣＰＵ＃８は、基準値を緩和する（大きくする）。基準値を緩和する理由は、遅延モニタ＃ｉの近傍のモジュールのＣＰＵのタスクを低負荷のタスクに変えても、劣化したゲートは元には戻らないため、同じ基準値を用いると毎回遅延値が基準値を超えることになるためである（ステップＳ６０６）。
【００９２】
（効果）
以上のように、本実施の形態によれば、ＣＰＵが遅延モニタを観測することによって、ＬＳＩの経年劣化を検出した場合に、複数のＣＰＵのタスクの割当てを変更することによって、ＬＳＩの寿命を延ばすことができる。
【００９３】
なお、経年劣化していると判定された遅延モニタの近傍のＣＰＵについては、ＯＳなどのソフトウェアがその遅延値を記憶し、以降もその遅延値に基づいて、そのＣＰＵに適切な負荷のタスクを割り当てることとしてもよい。
【００９４】
［第７の実施形態］
本実施の形態では、ＤＳＰ＃０およびＤＳＰ＃１は、一方がメイン演算器として機能し、他方がサブ演算器として機能するものとする。初期状態では、ＤＳＰ＃０がメイン演算器として機能し、ＤＳＰ＃１がサブ演算器として機能するものとする。
【００９５】
メイン演算器で演算のほとんどすべてが行なわれるが、メイン演算器だけでは処理速度が間に合わない演算を行なう場合には、サブ演算器がメイン演算器を補助するために用いられる。
【００９６】
本実施の形態は、経年劣化が判定された場合に、ＤＳＰ＃０とＤＳＰ＃１の役割を切替える。
【００９７】
図１３は、第７の実施形態における遅延モニタ＃ｉ（ｉ＝００〜１６）での遅延値のチェック手順を示すフローチャートである。
【００９８】
図１３に示すように、まず、ＣＰＵ＃８は、制御レジスタ２２の計測開始ビットに「１」をセットとして、遅延モニタ＃ｉを起動する。遅延モニタ＃ｉ内のリングオシレータ２６が発振動作する（ステップＳ７０１）。
【００９９】
次に、ＣＰＵ＃８は、遅延モニタ＃ｉのエッジ検出部２３およびパルスカウンタ２４からの出力を受けて、式（Ａ１）および式（Ａ２）に従って、遅延値Ｔｄを求めて、遅延値Ｔｄをチェックする（ステップＳ７０２）。
【０１００】
ＣＰＵ＃８は、遅延値Ｔｄが基準値以下の場合には（ステップＳ７０３でＹＥＳ）、チェックを完了する。
【０１０１】
ＣＰＵ＃８は、遅延値Ｔｄが基準値を超えた場合には（ステップＳ７０３でＮＯ）、遅延モニタ＃ｉの近傍のモジュールが経年劣化していると判定し、遅延モニタ＃ｉの近傍のモジュールがメイン演算器として機能しているＤＳＰ＃０であったときには（ステップＳ７０４でＹＥＳ）、サブ演算器として機能しているＤＳＰ＃１の近傍の遅延モニタの遅延値が基準値以下である場合には、ＤＳＰ＃１をメイン演算器に変更し、ＤＳＰ＃０をサブ演算器に変更する。メイン演算器とサブ演算器の切替えは、ＯＳが割り当てを決めている場合は、ＯＳ内で処理することができる。別の切替方法として、アプリケーションソフトウェアで切替えたり、ハードウェアでＤＳＰ０とＤＳＰ１の入出力Ｉ/Ｆを入れ替えたり、ＤＳＰ＃０とＤＳＰ＃１の識別ＩＤを入れ替えるなどの方法でもよい。ＤＳＰの負荷が高いと、ゲートのスイッチング回数や、動作周波数、温度が上がるため、経年劣化がより進む。従ってＤＳＰの負荷を下げることで劣化の進行を遅らせることができる（ステップＳ７０５）。
【０１０２】
さらに、ＣＰＵ＃８は、基準値を緩和する（大きくする）。基準値を緩和する理由は、遅延モニタ＃ｉの近傍のモジュールのＤＳＰ＃０をサブ演算器に変えても、劣化したゲートは元には戻らないため、同じ基準値を用いると毎回遅延値が基準値を超えることになるためである（ステップＳ７０６）。
【０１０３】
（効果）
以上のように、本実施の形態によれば、ＣＰＵが遅延モニタを観測することによって、ＬＳＩの経年劣化を検出した場合に、メイン演算器とサブ演算器の役割を交換することによって、ＬＳＩの寿命を延ばすことができる。
【０１０４】
［第８の実施形態］
本実施の形態では、ＣＰＵ＃０〜ＣＰＵ＃８のうち、１つがメインＣＰＵとして機能し、ＣＰＵ＃１〜ＣＰＵ＃７の７つがサブＣＰＵとして機能し、ＣＰＵ＃８を経年劣化の判定、および判定結果に基づいて制御を行なうプログラムを実行するものとする。初期状態では、ＣＰＵ＃０がメインＣＰＵとして機能し、ＣＰＵ＃１〜ＣＰＵ＃７がサブＣＰＵとして機能するものとする。
【０１０５】
メインＣＰＵで命令のほとんどすべてが行なわれるが、メインＣＰＵだけでは処理速度が間に合わない命令を実行する場合には、サブＣＰＵがメインＣＰＵを補助するために用いられる。
【０１０６】
本実施の形態は、経年劣化が判定された場合に、メインＣＰＵをＣＰＵ＃０から他のＣＰＵに切替える。
【０１０７】
図１４は、第８の実施形態における遅延モニタ＃ｉ（ｉ＝００〜１６）での遅延値のチェック手順を示すフローチャートである。
【０１０８】
図１４に示すように、まず、ＣＰＵ＃８は、制御レジスタ２２の計測開始ビットに「１」をセットとして、遅延モニタ＃ｉを起動する。遅延モニタ＃ｉ内のリングオシレータ２６が発振動作する（ステップＳ８０１）。
【０１０９】
次に、ＣＰＵ＃８は、遅延モニタ＃ｉのエッジ検出部２３およびパルスカウンタ２４からの出力を受けて、式（Ａ１）および式（Ａ２）に従って、遅延値Ｔｄを求めて、遅延値Ｔｄをチェックする（ステップＳ８０２）。
【０１１０】
ＣＰＵ＃８は、遅延値Ｔｄが基準値以下の場合には（ステップＳ８０３でＹＥＳ）、チェックを完了する。
【０１１１】
ＣＰＵ＃８は、遅延値Ｔｄが基準値を超えた場合には（ステップＳ８０３でＮＯ）、遅延モニタ＃ｉの近傍のモジュールが経年劣化していると判定し、遅延モニタ＃ｉの近傍のモジュールがメインＣＰＵとして機能しているＣＰＵ＃０であった場合には（ステップＳ８０４でＹＥＳ）、ＣＰＵ＃１〜ＣＰＵ＃７のうち、近傍の遅延モニタの遅延値が基準値以下であるＣＰＵを特定する（ＣＰＵ＃Ａとする）。ＣＰＵ＃８は、ＣＰＵ＃０をサブＣＰＵに変更し、ＣＰＵ＃ＡをメインＣＰＵに変更する。メインＣＰＵとサブＣＰＵの切替えは、ＯＳが割り当てを決めている場合は、ＯＳ内で処理することができる。別の切替方法として、アプリケーションソフトウェアで切替えたり、ハードウェアでＣＰＵ＃０とＣＰＵ＃Ａの入出力Ｉ/Ｆを入れ替えたり、ＣＰＵ＃０とＣＰＵ＃Ａの識別ＩＤを入れ替えるなどの方法でもよい。ＣＰＵの負荷が高いと、ゲートのスイッチング回数や、動作周波数、温度が上がるため、経年劣化がより進む。従ってＣＰＵの負荷を下げることで劣化の進行を遅らせることができる（ステップＳ８０５）。
【０１１２】
さらに、ＣＰＵ＃Ａは、基準値を緩和する（大きくする）。基準値を緩和する理由は、遅延モニタ＃ｉの近傍のモジュールのＣＰＵ＃０をサブＣＰＵに変えても、劣化したゲートは元には戻らないため、同じ基準値を用いると毎回遅延値が基準値を超えることになるためである（ステップＳ８０６）。
【０１１３】
（効果）
以上のように、本実施の形態によれば、ＣＰＵが遅延モニタを観測することによって、ＬＳＩの経年劣化を検出した場合に、メインＣＰＵとサブＣＰＵの役割を交換することによって、ＬＳＩの寿命を延ばすことができる。
【０１１４】
［第９の実施形態］
本実施の形態では、ＣＰＵ＃０〜ＣＰＵ＃８のうち、ＣＰＵ＃０〜ＣＰＵ＃６の７つはＳＭＰ（Symmetric Multiple Processor）プロセッサとして使用され、ＣＰＵ＃７は予備のＣＰＵとして機能するものとする。ＳＭＰプロセッサによって、プログラムが並列処理される。予備のＣＰＵには、クロックが供給されず、電源電圧も供給されない。
【０１１５】
本実施の形態では、ＳＭＰプロセッサとして動作するＣＰＵ＃０〜ＣＰＵ＃６に経年劣化が観測された場合に、経年劣化したＣＰＵを停止させるとともに、予備のＣＰＵがあればその予備のＣＰＵをＳＭＰプロセッサとして動作させる。
【０１１６】
図１５は、第９の実施形態における遅延モニタ＃ｉ（ｉ＝００〜１６）での遅延値のチェック手順を示すフローチャートである。
【０１１７】
図１５に示すように、まず、ＣＰＵ＃８は、制御レジスタ２２の計測開始ビットに「１」をセットとして、遅延モニタ＃ｉを起動する。遅延モニタ＃ｉ内のリングオシレータ２６が発振動作する（ステップＳ９０１）。
【０１１８】
次に、ＣＰＵ＃８は、遅延モニタ＃ｉのエッジ検出部２３およびパルスカウンタ２４からの出力を受けて、式（Ａ１）および式（Ａ２）に従って、遅延値Ｔｄを求めて、遅延値Ｔｄをチェックする（ステップＳ９０２）。
【０１１９】
ＣＰＵ＃０は、遅延値Ｔｄが基準値以下の場合には（ステップＳ９０３でＹＥＳ）、チェックを完了する。
【０１２０】
ＣＰＵ＃８は、遅延値Ｔｄが基準値を超えた場合には（ステップＳ９０３でＮＯ）、遅延モニタ＃ｉの近傍のモジュールが経年劣化していると判定し、遅延モニタ＃ｉの近傍のモジュールが動作中のＣＰＵ（以下、劣化ＣＰＵとよぶ）であった場合には（ステップＳ９０４でＹＥＳ）、予備のＣＰＵがあるかを調べる。
【０１２１】
ＣＰＵ＃８は、予備のＣＰＵがある場合（ＣＰＵ＃７が予備のままの場合）には（ステップＳ９０５でＹＥＳ）、予備のＣＰＵ（ＣＰＵ＃７）を起動し、劣化ＣＰＵから予備のＣＰＵにデータを移動して（ステップＳ９０６）、劣化ＣＰＵを停止させる（ステップＳ９０７）。
【０１２２】
ＣＰＵ＃８は、予備のＣＰＵがない場合（ＣＰＵ＃７が予備でなくなった場合）には（ステップＳ９０５でＮＯ）、劣化ＣＰＵから他の動作中のＣＰＵにデータを移動して、劣化ＣＰＵを停止させ、動作中のＣＰＵで並列度を１つ下げてプログラムを実行させる（ステップＳ９０６）。
【０１２３】
さらに、ＣＰＵ＃８は、基準値を緩和する（大きくする）。基準値を緩和する理由は、遅延モニタ＃ｉの近傍のモジュールの劣化ＣＰＵを停止させても、劣化したゲートは元には戻らないため、同じ基準値を用いると毎回遅延値が基準値を超えることになるためである（ステップＳ９１０）。
【０１２４】
（効果）
以上のように、本実施の形態によれば、ＣＰＵが遅延モニタを観測することによって、ＣＰＵの経年劣化を検出した場合に、劣化したＣＰＵに代えて予備のＣＰＵを使用することによって、ＬＳＩの寿命を延ばすことができる。
【０１２５】
なお、本実施の形態では、予備のＣＰＵを有し、あるＣＰＵが劣化した場合に、劣化したＣＰＵに代えて予備のＣＰＵを使用する場合について説明したが、ＤＳＰ、他の機能ＩＰ、またはアナログモジュールでも、同様に実行できる。
【０１２６】
［第１０の実施形態］
図１６は、第１０の実施形態の遅延モニタ＃ｉ（ｉ＝００〜１６）の構成を表わす図である。
【０１２７】
第１０の実施形態の遅延モニタ＃ｉが、図３に示す第１の実施形態の遅延モニタ＃ｉと相違する点は、第１の実施形態の遅延モニタ＃ｉのリングオシレータ２６が、遅延値の測定期間のみ発振したのに対して、第１０の実施形態の遅延モニタ＃ｉのリングオシレータ２６が、遅延値の測定期間の前後の所定サイクル以外では、発振し続ける点である。
【０１２８】
具体的には、第１０の実施形態の遅延モニタ＃ｉは、図３の構成に加えて、論理回路４２とフリップフロップ４１とを備える。
【０１２９】
第１の実施形態と同様のフリップフロップ２５の出力であるオシレータイネーブル信号ＥＮ１は、エッジ検出部２３およびパルスカウンタ２４に与えられる。
【０１３０】
論理回路４２は、計測開始信号ＳＴ、リセット信号ＲＳ、基準クロックＣＬＫを受けて、論理演算の結果をフリップフロップ４１へ出力する。フリップフロップ４１の出力であるオシレータイネーブル信号ＥＮ２は、リングオシレータ２６に与えられる。
【０１３１】
（遅延値の算出動作）
次に、図１７を用いて、遅延モニタ＃ｉが起動して、ＣＰＵ＃８によってＣｄおよびＴｄが算出す動作について説明する。
【０１３２】
まず、論理回路４２およびフリップフロップ４１によって、リングオシレータ２６の第一の信号線へのオシレータイネーブル信号ＥＮ２がハイレベルに設定される。オシレータイネーブル信号ＥＮ２がハイレベルになることによって、リングオシレータ２６は発振する。
【０１３３】
制御レジスタ２２は、ＣＰＵ＃８の制御によって、計測開始ビットに「１」が書き込まれると、ハイレベルのリセット信号ＲＳをパルスカウンタ２４に出力する。パルスカウンタ２４は、リセット信号ＲＳを受けると、それまで保持していた検出内容をリセットする。
【０１３４】
論理回路４２およびフリップフロップ４１は、リセット信号ＲＳの立下りのタイミングで、リングオシレータ２６の第一の信号線へのオシレータイネーブル信号ＥＮ２をハイレベルからロウレベルに変更する。オシレータイネーブル信号ＥＮ２がロウレベルになることによって、リングオシレータ２６は発振を停止する。
【０１３５】
次に、制御レジスタ２２は、リセット信号ＲＳを出力してから基準クロックＣＬＫの１周期経過後に、ハイレベルの計測開始信号ＳＴをフリップフロップ２５に出力する。フリップフロップ２５は、計測開始信号ＳＴの立下りのタイミングから基準クロックＣＬＫの１周期の間の測定期間において、エッジ検出部２３にハイレベルのオシレータイネーブル信号ＥＮ１を出力する。
【０１３６】
また、論理回路４２およびフリップフロップ４１は、計測開始信号ＳＴの立下りのタイミングから基準クロックＣＬＫの１周期の間の測定期間において、リングオシレータ２６の第一の信号線にハイレベルのオシレータイネーブル信号ＥＮ２を出力する。オシレータイネーブル信号ＥＮ２がハイレベルになることによって、リングオシレータ２６は発振する。
【０１３７】
オシレータイネーブル信号ＥＮ１がハイレベルの期間（すなわち、測定期間）において、パルスカウンタ２４は、リングオシレータ２６の発振信号の発振数Ｃｄｃをカウントする。エッジ検出部２３は、オシレータイネーブル信号ＥＮ１がロウレベルになるタイミングで、オシレータイネーブル信号ＥＮ２のエッジが伝播しているゲート段数Ｃｄｆを検出する。
【０１３８】
ＣＰＵ＃８は、遅延モニタ＃ｉの出力Ｃｄｃ，Ｃｄｆに基づいて、式（Ａ１）、（Ａ２）に従って、伝播可能段数Ｃｄおよびゲート素子１段の平均遅延時間Ｔｄを求めて、Ｔｄを経年劣化判定のための遅延値として用いる。
【０１３９】
また、論理回路４２およびフリップフロップ４１によって、測定時間の終了後、基準クロックＣＬＫの２周期の間、リングオシレータ２６の第一の信号線へのオシレータイネーブル信号ＥＮ２がロウレベルに設定される。オシレータイネーブル信号ＥＮ２がロウレベルになることによって、リングオシレータ２６は発振を停止する。
【０１４０】
論理回路４２およびフリップフロップ４１によって、基準クロックＣＬＫの２周期の経過後、リングオシレータ２６の第一の信号線へのオシレータイネーブル信号ＥＮ２がハイレベルに設定される。オシレータイネーブル信号ＥＮ２がハイレベルになることによって、リングオシレータ２６は発振を再開する。
【０１４１】
（効果）
以上のように、本実施の形態の遅延モニタのリングオシレータは長時間発振し、劣化の進みが早いので、劣化の進行を早期に検出できる。
【０１４２】
［第１１の実施形態］
図１８は、第１１の実施形態における遅延モニタ＃ｉ（ｉ＝００〜１６）での遅延値のチェック手順を示すフローチャートである。
【０１４３】
図１８に示すように、まず、ＣＰＵ＃８は、制御レジスタ２２の計測開始ビットに「１」をセットとして、遅延モニタ＃ｉを起動する。遅延モニタ＃ｉ内のリングオシレータ２６が発振動作する（ステップＳ１１０１）。
【０１４４】
次に、ＣＰＵ＃８は、遅延モニタ＃ｉのエッジ検出部２３およびパルスカウンタ２４からの出力を受けて、式（Ａ１）および式（Ａ２）に従って、遅延値Ｔｄを求めて、遅延値Ｔｄをチェックする（ステップＳ１１０２）。
【０１４５】
ＣＰＵ＃８は、現在測定された遅延値Ｔｄと前回測定された遅延値Ｔｄとの差分値が基準値以下の場合には（ステップＳ１１０３でＹＥＳ）、遅延値Ｔｄを内蔵ＳＲＡＭ６に記憶して（ステップＳ１１０４）、チェックを完了する。
【０１４６】
ＣＰＵ＃８は、差分値が基準値を超えた場合には（ステップＳ１１０３でＮＯ）、遅延モニタ＃ｉの近傍のモジュールが経年劣化していると判定し、ＬＳＩ１の外部にアラートを発信する（ステップＳ１１０５）。
【０１４７】
（効果）
以上のように、本実施の形態によれば、現在の遅延値と前回測定時の遅延値との差分値に基づいて経年劣化を判定するので、バラつきの大きいＬＳＩでも正確に経年劣化を判定することができる。
【０１４８】
なお、より正確に経年劣化を判断するために、前回測定時の遅延値だけでなく、それ以前の遅延値の履歴も取っておき、これらの遅延値の統計量（移動平均など）に基づいて、経年劣化を判断することとしてもよい。
【０１４９】
［第１２の実施形態］
第１２の実施形態では、図１９に示すように、２個の遅延モニタが１つのペアを構成する。２個の遅延モニタは、近接して配置される。
【０１５０】
ペアの一方の第１遅延モニタ６１は、第１０の実施形態で説明した図１６に示す遅延モニタである。第１遅延モニタ６１のリングオシレータ２６は、遅延値の測定期間の前後の所定サイクル以外では、発振し続ける。
【０１５１】
ペアの他方の第２遅延モニタ６２は、第１の実施形態で説明した図３に示す遅延モニタである。第２遅延モニタ６２のリングオシレータ２６は遅延値の測定期間のみ発振する。
【０１５２】
第１遅延モニタ６１は、発振する時間が長いので、第２遅延モニタ６２よりも早く劣化する。第１遅延モニタ６１と第２遅延モニタ６２は、製造ばらつきや、電圧、温度など周囲環境は非常に近い状態のため、第１遅延モニタ６１と第２遅延モニタ６２の遅延値の差分を見ることで、近接するモジュールが劣化の進行が顕著になる期間（すなわち、遅延値の時間変化量が大きい期間）に入ったか否かを判定することができる。
【０１５３】
ＣＰＵ＃８は、第１遅延モニタ６１で測定された遅延値Ｔｄと、第２遅延モニタ６２で測定された遅延値Ｔｄとの差分値が基準値を超えた場合に、第１遅延モニタ６１と第２遅延モニタ６２の近傍のモジュールが経年劣化したと判定する。
【０１５４】
（効果）
以上のように、本実施の形態によれば、リングオシレータが長時間発振する第１遅延モニタの遅延値と、リングオシレータが短時間発振する第２遅延モニタの遅延値との差分値に基づいて経年劣化を判定するので、バラつきの大きいＬＳＩでも正確に経年劣化を判定することができる。
【０１５５】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１５６】
１  ＬＳＩ、２  ＤＤＲ２Ｉ／Ｆ、３  ２次キャッシュ、４  ＣＰＵバス制御部、５  ＤＭＡＣ、６  内蔵ＳＲＡＭ、８  外部バス制御部、９  ＤＳＰ群、１０  電源回路、１１  ＪＴＡＧコントローラ、１２  汎用入出力ポート、１３  内部周辺バス、１４  ＣＰＵ群、１５  遅延モニタ群、２２  制御レジスタ、２３  エッジ検出部、２４  パルスカウンタ、２５，４１  フリップフロップ、２６  リングオシレータ、３３  クロック供給回路、４２  論理回路、６１  第１遅延モニタ、６２  第２遅延モニタ、ＮＡ  ＮＡＮＤ、ＩＶ１〜ＩＶ１４  ゲート素子。
【図１】
2013088394.tif 000003
【図２】
2013088394.tif 000004
【図３】
2013088394.tif 000005
【図４】
2013088394.tif 000006
【図５】
2013088394.tif 000007
【図６】
2013088394.tif 000008
【図７】
2013088394.tif 000009
【図８】
2013088394.tif 000010
【図９】
2013088394.tif 000011
【図１０】
2013088394.tif 000012
【図１１】
2013088394.tif 000013
【図１２】
2013088394.tif 000014
【図１３】
2013088394.tif 000015
【図１４】
2013088394.tif 000016
【図１５】
2013088394.tif 000017
【図１６】
2013088394.tif 000018
【図１７】
2013088394.tif 000019
【図１８】
2013088394.tif 000020
【図１９】
2013088394.tif 000021