(57)【要約】【課題】パイプラインプロセッサシステムにおいて、多重化コストを削減する。【解決手段】多重化実行が可能な複数のパイプラインプロセッサ１ａ〜１ｅと、前記複数のパイプラインプロセッサの多重化度を適応的に変更する制御部３と、を備えていることを特徴とする多重化実行に対してスケーラブルなパイプラインプロセッサシステム。【選択図】図３
2010049589.tif 000002
【特許請求の範囲】
【請求項１】
多重化実行が可能な複数のパイプラインプロセッサと、
前記複数のパイプラインプロセッサの多重化度を適応的に変更する制御部と、
を備えていることを特徴とする多重化実行に対してスケーラブルなパイプラインプロセッサシステム。
【請求項２】
多重化実行している複数のパイプラインプロセッサにおける故障を検出する故障検出手段を更に備え、
前記制御部は、前記故障検出手段によって故障が検出されると、パイプラインプロセッサの多重化度を上げる多重化度変更手段
を備える請求項１記載のパイプラインプロセッサシステム。
【請求項３】
前記多重化度変更手段は、パイプラインプロセッサの一時故障が検出されても、パイプラインプロセッサの多重化度を上げず、パイプラインプロセッサの永久故障が検出されると、パイプラインプロセッサの多重化度を上げるものである請求項２記載のパイプラインプロセッサシステム。
【請求項４】
パイプラインプロセッサの故障が検出されると、多重化実行している複数のパイプラインプロセッサのうち故障しているパイプラインプロセッサを特定する故障部位特定手段
を更に備える請求項２又は３記載のパイプラインプロセッサシステム。
【請求項５】
前記制御部は、
多重化実行しているパイプラインプロセッサにおける永久故障が検出されると、永久故障をしているパイプラインプロセッサを多重化実行している複数のパイプラインプロセッサから切り離す故障部位切離手段
を更に備える請求項２又は３記載のパイプラインプロセッサシステム。
【請求項６】
前記制御部は、
前記故障部位切離手段によって切り離されたパイプラインプロセッサに対して、電源遮断を行う電源遮断手段
を更に備える請求項５記載のパイプラインプロセッサシステム。
【請求項７】
前記制御部は、
電源遮断手段によって電源遮断されたプロセッサに対して、電源再投入を行う電源再投入手段
を更に備える請求項６記載のパイプラインプロセッサシステム。
【請求項８】
前記制御部は、
パイプラインプロセッサが他のパイプラインプロセッサとの多重化実行を行う高信頼性モードと、単一パイプラインプロセッサでパイプライン処理の実行を行う高性能モードと、を切り替える切替手段
を更に備える請求項１〜７のいずれか１項に記載のパイプラインプロセッサシステム。
【請求項９】
前記制御部は、
パイプラインプロセッサが他のパイプラインプロセッサとの多重化実行を行う高信頼性モードと、複数のパイプラインプロセッサによる２−ｗａｙイン・オーダ実行スーパスカラモードと、を切り替える切替手段
を更に備える請求項１〜８のいずれか１項に記載のパイプラインプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多重化実行に対してスケーラブルなパイプラインプロセッサシステムに関するものである。
【背景技術】
【０００２】
プロセッサにおけるパイプライン処理は、プログラム中の命令をパイプライン・ステージ毎に流れ作業で処理することで、処理の高速化を図るための技術である。
一つの命令は、例えば、プログラム・カウンタに従い命令をメモリから読み出す「フェッチ」、命令を解釈して処理を同定する「デコード」、演算対象となる数値を読み出す「レジスタ読み出し」、解釈された命令に応じて演算を実行する「実行」、演算結果の格納を行う「ライトバック」などのステージがある。また、命令によっては実行の際にメモリ・アクセスが行われる場合があり、この場合「メモリ・アクセス」のステージが含まれることもある。
なお、ＶＬＩＷプロセッサに高信頼性モードを持たせて、高信頼性と高性能性を切換使用する高信頼性モード動作併用長命令実行プロセッサが、特許文献１に開示されている。
【０００３】
【特許文献１】特開２００３−３１６５９８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
さて、近年の半導体製造技術の微細化に伴って、プロセッサの故障の増加が問題となっている。
プロセッサの故障には、放射線の影響等による一時故障と、エレクトロ・マイグレーション等による永久故障と、がある。
【０００５】
一時故障は、一時的にプロセッサ内における信号の０／１（Ｌｏｗ／Ｈｉｇｈ）の状態が放射線等によって反転するために生じる故障であり、半導体の微細化によって回路中の静電容量の減少が大きく影響している。ただし、この一時故障は、放射線等の環境的要因によって一時的に故障するだけであり、回復する見込みのある故障である。
【０００６】
一方、永久故障は、回路自体の故障であり、回復の見込みがない故障である。永久故障の原因としては、回路配線が断線する現象であるエレクトロ・マイグレーションがある。半導体の微細化によって、配線も微細化し、エレクトロ・マイグレーションが生じやすくなっている。
【０００７】
また、故障としては、負バイアス温度不安定性（Ｎｅｇａｔｉｖｅ  Ｂｉａｓ  Ｔｅｍｐｅｒａｔｕｒｅ  Ｉｎｓｔａｂｉｌｉｔｙ；ＮＢＴＩ）等によるトランジスタ特性劣化によるものがある。ただし、ＮＢＴＩによる特性劣化は、通電を停止することによって回復することができる。
【０００８】
故障が発生しても信頼性を確保するための技術としては、多重化が一般に知られている。
多重化は、例えば、図９（ａ）に示すように、同一の組み合わせ論理回路Ａ，Ａ’，Ａ”を３系統準備して処理を三重化し、各系統の論理回路Ａ，Ａ’，Ａ”の出力に基づいて、多数決論理回路による多数決をとることで行われる（Ｔｒｉｐｌｅ  Ｍｏｄｕｌａｒ  Ｒｅｄｕｎｄａｎｃｙ；ＴＭＲ）。
【０００９】
図９（ａ）の構成によれば、３系統のうち、１系統で故障（一時故障又は永久故障）が発生しても、他の２系統が正常であれば、多数決論理によって、正しい出力が得られ、正常動作を維持することができる。
なお、いずれかの系統で故障発生したことを検出するだけでよいのであれば、２系統準備すれば足りる（Ｄｕａｌ  Ｍｏｄｕｌａｒ  Ｒｅｄｕｎｄａｎｃｙ；ＤＭＲ）。２系統を持つ２重化の場合、各系統の論理回路の出力を比較して、一致しなければ故障であることがわかる。このような２重化では、故障が検出された場合、一時故障であれば、命令を再度実行することで正しい結果を得られる可能性が高いが、３重化よりは信頼性が低くなる。
【００１０】
ここで、従来の多重化手法では、パイプラインプロセッサの高信頼性を実現する場合、高コストであるという問題がある。
すなわち、多重化を実現するには、同じ処理を行うパイプラインプロセッサが多重化度に応じた数ほど必要であり、高い信頼性を確保しようとすると、より多くのプロセッサが必要となって、回路面積コストや消費電力コストが増大する。
【００１１】
さらに、従来の多重化手法では、多重化を行っても、いずれかの系統に永久故障が発生すると、その後の信頼性が低下するという問題もある。
すなわち、プロセッサを３重化したとしても、例えば図９（ｂ）に示すように、いずれか一つの系統にでも永久故障が発生すると、正常な系統は、残る２系統だけとなる。したがって、残る２系統のいずれかに一時故障が発生すると、正常な系統は、１つだけとなり、多数決論理では、正しい出力は得られなくなる。
【００１２】
そこで、本発明は、パイプラインプロセッサシステムにおいて、多重化コストを削減するための新たな技術を提供することを目的とする。
また、本発明の他の目的は、永久故障が発生しても、信頼性を確保することである。
【課題を解決するための手段】
【００１３】
本発明は、多重化実行が可能な複数のパイプラインプロセッサと、前記複数のパイプラインプロセッサの多重化度を適応的に変更する制御部と、を備えていることを特徴とする多重化実行に対してスケーラブルなパイプラインプロセッサシステムである。
【００１４】
上記本発明によれば、適応的に多重度を変更できるため、必要に応じて動的に多重化度を高めたり、低くしたりすることができる。したがって、高い多重化が必要な場合には、多重化度を高くし、低い多重化で十分な場合には、多重化度を低くすることができる。多重化度を低くすることで余ったパイプラインプロセッサは、他の処理に用いたり、パイプラインプロセッサの経時劣化を抑制したり消費電力を削減するために電源遮断したりすることができる。
よって、常に高い多重化度のパイプラインプロセッサを固定的に設ける場合に比べて、平均的な多重化度が低下し、多重化コストを削減することができる。
【００１５】
本発明のパイプラインプロセッサシステムは、多重化実行している複数のパイプラインプロセッサにおける故障を検出する故障検出手段を更に備え、前記制御部は、前記故障検出手段によって故障が検出されると、パイプラインプロセッサの多重化度を上げる多重化度変更手段を備えるのが好ましい。
この場合、故障が検出されていない通常状態では、比較的低い多重化度で処理を行うことで平均的な多重化度を抑える一方、多重化実行している複数のパイプラインプロセッサに故障が検出されると、パイプラインプロセッサの多重化度を上げることで、より高い信頼性を確保することができる。
【００１６】
本発明のパイプラインプロセッサにおける処理の実行は、通常は、多重化は二重化（ＤＭＲ）とし、永久故障検出時の多重化は三重化（ＴＭＲ）とするのが好ましい。つまり、通常時は、故障の有無が検出可能な二重化とし、故障が検出されると、故障が一時故障か永久故障かを判別するため命令の実行を再実行することができる。故障が一時故障の場合、再実行によって故障は回復する。再実行を繰り返しても故障が継続する場合、その故障は永久故障と判断し、永久故障したパイプラインプロセッサを特定可能な三重化（ＴＭＲ）とするのが好ましい。ただし、多重化度がこれらに限定されるものではない。
【００１７】
つまり、前記多重化度変更手段は、前記故障検出手段によってパイプラインプロセッサの一時故障が検出されても、パイプラインプロセッサの多重化度を上げず、パイプラインプロセッサの永久故障が検出されると、パイプラインプロセッサの多重化度を上げるものであるのが好ましい。
この場合、一時故障が検出されても多重化度は上がらず、永久故障が検出された場合に多重化度が上がる。つまり、一時故障は命令の再実行によって対処できるため、多重化度を上げる必要性は低い。そこで、一時故障があっても多重化度を上げずに、多重化度を抑制し、永久故障が検出されたときに多重化度を上げることで、時間平均的な多重化度を抑制しつつ信頼性を確保することができる。
【００１８】
前記パイプラインプロセッサシステムは、パイプラインプロセッサの故障が検出されると、多重化実行している複数のパイプラインプロセッサのうち故障しているパイプラインプロセッサを特定する故障部位特定手段を更に備えるのが好ましい。
この場合、故障検出がなされると、多重化度が上がっている状態で故障しているパイプラインプロセッサを特定する処理が行えるため、故障している部位の特定が容易になる。
なお、故障検出手段の実装の例として、各パイプラインプロセッサの出力を２入力比較器で比較し、不一致となる比較結果に必ず含まれるパイプラインプロセッサが故障しているものと判断する方法がある。
【００１９】
前記制御部は、多重化実行しているパイプラインプロセッサにおける永久故障が検出されると、永久故障をしているパイプラインプロセッサを多重化実行している複数のパイプラインプロセッサから切り離す故障部位切離手段を更に備えるのが好ましい。この場合、永久故障が検出されると、永久故障をしているパイプラインプロセッサを多重化実行している複数のパイプラインプロセッサから切り離すことができる。また、故障したパイプラインプロセッサを切り離すことで多重化実行しているパイプラインプロセッサの数が減少しても、故障部位検出のために予め多重化度が上げられているため、代替パイプラインプロセッサを追加した形となっており、永久故障が発生しても信頼性低下を防止できる。
【００２０】
前記制御部は、前記故障部位切離手段によって切り離されたパイプラインプロセッサに対して、電源遮断を行う電源遮断手段を更に備えるのが好ましい。この場合、故障したパイプラインプロセッサに電源供給を行うことによる電力ロスを防止できる。
また、前記制御部は、電源遮断手段によって電源遮断されたプロセッサに対して電源再投入を行う電源再投入手段を更に備えるのが好ましい。切り離されたパイプラインプロセッサの電源遮断を行うことによって、ＮＢＴＩ等の特性劣化から回復することができる場合ある。したがって、電源遮断の後、必要に応じて電源再投入を行うことで、そのパイプラインプロセッサの利用が可能となる可能性がある。故障が、電源遮断によっても回復不可能なものであった場合、制御部はそのパイプラインプロセッサを、以後使用不可能なものとして取り扱うのが好ましい。
【００２１】
前記制御部は、パイプラインプロセッサが他のパイプラインプロセッサとの多重化実行を行う高信頼性モードと、単一パイプラインプロセッサでパイプライン処理の実行を行う高性能モードと、を切り替える切替手段を更に備えるのが好ましい。この場合、高信頼性が必要ない場合には、高性能化が可能である。
【００２２】
また、前記制御部は、パイプラインプロセッサが他のパイプラインプロセッサとの多重化実行を行う高信頼性モードと、複数のパイプラインプロセッサによる２−ｗａｙイン・オーダ実行スーパスカラモードと、を切り替える切替手段を更に備えるのが好ましい。この場合も、高信頼性が必要ない場合には、高性能化が可能である。
【発明の効果】
【００２３】
本発明によれば、適応的に多重度を変更できるため、必要に応じて多重化度を高めたり、低くしたりすることができ、常に高い多重化度の回路を固定的に設ける場合に比べて、多重化コストを削減することができる。
【発明を実施するための最良の形態】
【００２４】
以下、本発明の実施形態を図面に基づいて説明する。
［パイプラインプロセッサシステムの全体構成］
図１は、パイプラインプロセッサシステム（以下、単に「システム」という）の全体構成図を示している。このシステムは、複数のパイプラインプロセッサ（以下、単に「プロセッサ」ともいう）１ａ〜１ｅと、各プロセッサ１ａ〜１ｅの協調状態等を制御する制御回路（制御部）３と、各プロセッサ１ａ〜１ｅの周囲に位置するようにメッシュ状に形成された配線ネットワーク４と、を有している。
なお、図１においてパイプラインプロセッサ１ａ〜１ｅは、５個しか図示されていないが、実際には、システム内において２次元アレイ状に多数配置されている。
【００２５】
［パイプラインプロセッサについて］
図２に示すように、各パイプラインプロセッサ１ａ〜１ｅは、プログラム・カウンタ＋更新論理部１０と、複数のパイプライン・ステージ１１〜１５と、を有している。なお、これらのパイプラインプロセッサの構成要素１０〜１５は、組み合わせ論理回路によって構成されている。また、複数のパイプラインプロセッサ１ａ〜１ｅは、それぞれ、プロセッサ内制御部２１を有しており、このプロセッサ内制御部２１は、命令の実行の制御やプロセッサの故障検出などを行う。
【００２６】
複数のパイプライン・ステージ１１〜１５としては、命令キャッシュ１１、デコード論理部１２、レジスタ・ファイル１３、ＡＬＵ１４、及びデータ・キャッシュ１５が設けられている。
なお、命令キャッシュ１１は、必要に応じて、図示しないプロセッサ外部のキャッシュから、配線ネットワーク４を介して、命令を取得し、保持する。なお、プロセッサ外部のキャッシュは、システム内に存在するが、複数のプロセッサ間で共有されるため、図２には示していない。
また、データ・キャッシュ１５についても、図示しないプロセッサ外部のキャッシュへのライトバックが、配線ネットワーク４を介して行われる場合がある。
【００２７】
各ステージ１１〜１５の出力は、各ステージ１１〜１５の後段に設けられたパイプライン・レジスタ１６〜２０に与えられて保持されるほか、プロセッサ外部の配線ネットワーク４へ出力されるとともに、後述の比較器１１ａ〜１５ａへ出力される。
また、プログラム・カウンタ＋更新論理部１０も、配線ネットワーク４を介して、外部入力を受付可能であるとともに、配線ネットワーク４へ外部出力可能となっている。
【００２８】
各パイプライン・ステージ１１〜１５は、それぞれ比較器１１ａ〜１５ａを備えている。これらの比較器１１ａ〜１５ａは、比較器１１ａ〜１５ａが設けられているステージ１１〜１５の出力と、他のプロセッサにおける同一のステージ１１〜１５の出力と、を比較するものである。
【００２９】
プロセッサ間で各ステージの出力の比較を行うため、各比較器１１ａ〜１５ａは、比較器１１ａ〜１５ａが設けられているステージ１１〜１５の出力を受け付け可能であるとともに、配線ネットワーク４を介して、他のプロセッサのステージ出力を外部入力として受け付け可能である。
比較器１１ａ〜１５ａでの比較は、多重化実行している複数のプロセッサにおける同一ステージ１１〜１５の出力が一致するか否かを確認するためのものであり、一致しなければ、いずれかのプロセッサが故障していることになる。
このため、各比較器１１ａ〜１５ａの出力（比較結果）は、プロセッサ内の制御部２１に与えられ、その制御部２１において、プロセッサ又はステージの故障の検出に用いられる。制御部２１は、故障を検出すると、故障情報を出力する。故障情報は、配線ネットワーク４を介して、プロセッサ外の制御回路３に与えられる。
【００３０】
また、各ステージ１１〜１５の後段に設けられたパイプライン・レジスタ１６〜２０の出力側は、それぞれ、配線ネットワーク４に接続されており、パイプライン・レジスタ１６〜２０にそれぞれ保持された各ステージ１１〜１５の出力を、他のプロセッサに与えることが可能である。
さらに、各ステージ１１〜１６への入力は、各ステージ１１〜１６の前段にあるパイプライン・レジスタ１６〜２０から受け取ることができるほか、配線ネットワーク４を介して、他のプロセッサのパイプライン・レジスタ１６〜２０から受け取ることもできる。
なお、プログラム・カウンタ＋更新論理部１０と命令キャッシュ１１との間にも同様の配線ネットワーク４への接続が存在する。
【００３１】
本実施形態では、上記のように、パイプライン・レジスタ１６〜２０に保持された各ステージ１１〜１５の出力が外部出力可能であるとともに、各ステージ１１〜１５の入力を他のプロセッサのパイプライン・レジスタ１６〜２０から受け取ることもできるように構成されているため、後述のステージ単位でのプロセッサの再構成が可能となっている。この再構成の詳細については後述する。
【００３２】
［制御回路について］
図１の制御回路３は、各プロセッサ１ａ〜１ｅの協調状態を制御するため、各プロセッサ１ａ〜１ｅに対して動作モード（動作状態）を指示する機能と、ネットワーク４上の各スイッチ５，６にプロセッサ間の接続情報を指示して、接続状態を切り替える機能とを有している。
【００３３】
図３に示すように、プロセッサ１ａ〜１ｅの動作モードとしては、単一モード（多重化なし）、二重化モード、三重化モード、２−ｗａｙイン・オーダ実行スーパスカラモード、及び電源遮断が設けられている。これらのモードの詳細については後述する。
制御回路３は、これらの動作モードを、各プロセッサ１ａ〜１ｅへ指示し、各プロセッサを指示した動作モードで実行させる。
【００３４】
［配線ネットワークについて］
配線ネットワーク４は、プロセッサのプログラム・カウンタ＋更新論理部１０又は各ステージ１１〜１５の外部出力部１０ｂ〜１５ｂを、それぞれ、他のプロセッサのプログラム・カウンタ＋更新論理部１０又は各ステージ１１〜１５の外部入力部１０ｃ〜１５ｃに接続するための配線を有している。この配線ネットワーク４上には、あるプロセッサからの外部出力部１０ｂ〜１５ｂからの出力を、どのプロセッサの外部入力部１０ｃ〜１５ｃに与えるかを切り替えるスイッチ５，６が設けられている。
【００３５】
制御回路３は、あるプロセッサの外部出力部１０ｂ〜１５ｂからの出力が、そのプロセッサと協調動作（多重化実行又は２−ｗａｙイン・オーダ実行スーパスカラ）している他のプロセッサの対応する外部入力部１０ｃ〜１５ｃに与えられるように、前記スイッチ５，６の切り替え制御を行う。
【００３６】
したがって、二重化モード又は三重化モードのような多重化モードの場合には、配線ネットワーク４によって、あるプロセッサのあるステージの外部出力を、他のプロセッサにおいて対応するステージの比較器に与えることができる。
また、２−ｗａｙイン・オーダ実行スーパスカラモードの場合には、配線ネットワーク４によって、あるプロセッサのあるステージの外部出力を、他のプロセッサに直接与えることができる。
【００３７】
さらに配線ネットワーク４は、プロセッサの各パイプライン・レジスタ１６〜２０の出力を、他のプロセッサにおける任意のステージ１１〜１５の入力に与えるための配線も含んでいる。なお、パイプライン・レジスタ１６〜２０の出力を、どのプロセッサのどのステージ１１〜１５の入力に与えるかは、スイッチ５，６によって切り替えられる。
これにより、あるプロセッサのあるステージの出力を保持するパイプライン・レジスタ１６〜２０から、他のプロセッサの次ステージの入力へ与えることが可能であり、後述のステージ単位でのプロセッサの再構成が可能となる。
なお、配線ネットワーク４は、比較器１１ａ〜１５ａの出力（比較結果）を制御回路３に与えるための配線、制御回路３から動作モードを指示するための配線、その他システムの動作に必要な配線を含んでいる。
【００３８】
［プロセッサの動作モード］
プロセッサ１ａ〜１ｅの前記動作モードのうち、前記二重化モードは、二つのプロセッサでパイプライン処理を二重化実行する高信頼性モードである（ＤＭＲ）。この二重化モードでは、プロセッサの故障の検出は可能であるが、故障しているプロセッサの特定はできない。
前記三重化モードは、三つのプロセッサでパイプライン処理を三重化実行する高信頼性モードである（ＴＭＲ）。この三重化モードでは、いずれか一つのプロセッサに故障が発生した場合、故障したプロセッサの特定が可能である。
【００３９】
前記単一モードは、個々のプロセッサ１ａ〜１ｅが、それぞれ、単一パイプラインで動作するもの高性能モードである。システム内の複数のプロセッサが単一モードにあると、単一パイプラインプロセッサがマルチ・コア構成を採っていることになる。
【００４０】
前記２−ｗａｙイン・オーダ実行スーパスカラモードは、２つのプロセッサを連結して、１スレッドより２命令を同時実行させて、連結された２つのプロセッサを、２−ｗａｙイン・オーダ実行スーパスカラプロセッサとして機能させる高性能モードである。
【００４１】
前記電源遮断は、プロセッサへの電源を遮断した状態とするための休止モードであり、故障したプロセッサや動作不要なプロセッサの電源を遮断することで、電源供給が継続することによる特性劣化を防止することができる。
【００４２】
各プロセッサ１ａ〜１ｅは、制御回路３からの指示により、上記各モードで処理を実行可能であり、そのモードは動的に切替可能である。
図３は、５個のプロセッサ１ａ〜１ｅの多重化構成（協調状態構成）を、動的に変更した例を示している。
【００４３】
図３（ａ）では、５個のプロセッサ１ａ〜１ｅのうち、２個のプロセッサ１ａ，１ｂが二重化モードで動作し、他の２個のプロセッサ１ｃ，１ｄが電源遮断となり、残りの１個のプロセッサ１ｅが単一モード（多重化なし）で動作している。
図３（ｂ）は、図３（ａ）の状態から動的に構成が変更された状態を示している。図３（ａ）の状態において、二重化モードで実行中のプロセッサ１ａ，１ｂに永久故障が起きたという判断が下され、プロセッサ１ｃを追加して三重化モードに移行している。
図３（ｃ）は、図３（ｂ）の三重化モードによって永久故障がプロセッサ１ａで発生したということが分かり、プロセッサ１ａを多重化実行から切り離し、電源遮断としたものである。これにより、プロセッサ１ｂ，１ｃは二重化実行となる。
【００４４】
図５に示すように、二重化モードの場合、同一の処理（命令１、命令１’）が、２個のプロセッサ１ａ，１ｂで並列的にパイプライン処理される。また、二重化モードにある両プロセッサ１ａ，１ｂは、各ステージ１１〜１５の外部出力が、配線ネットワーク４を介して、他方のプロセッサ１ａ，１ｂのステージ１１〜１５の比較器１１ａ〜１５ａに外部入力される。
これにより、両プロセッサ１ａ，１ｂのうち、いずれかのプロセッサ１ａ，１ｂのうちのいずれかのステージ１１〜１５の比較器１１ａ〜１５ａにて、比較結果が不一致になると、プロセッサ内制御部２１では、二重化モードの両プロセッサ１ａ，１ｂのいずれかが故障していることを検出することができる。
【００４５】
故障が検出された場合、その故障が一時故障であれば、命令の再実行により正常な結果が得られる可能性が非常に高いため、両プロセッサ１ａ，１ｂは命令の再実行を行う。この命令の再実行を行う機構は、通常のプロセッサの制御部２１に搭載される例外処理時の命令再実行の機構を拡張する形で行う。よって、この再実行は、比較器１１ａから１５ａにより故障が検出されるとプロセッサ内制御部２１によって自動的に行われ、プロセッサ外の制御回路３は、故障が検出されたこと（故障情報）、及び、故障による再実行を行ったとの報告を受ける。
故障が繰り返し検出された場合（例えば、所定時間内に閾値を超える数の故障が検出された場合）、永久故障の可能性があるため、制御回路３によって永久故障であると判定される。そして、制御回路３は、故障しているプロセッサを特定して、そのプロセッサを多重化実行から切り離すため、三重化実行に移行するための指示をプロセッサ及びスイッチ５，６に対して出力する（図４参照）。三重化実行は、二重化実行している２個のプロセッサに１個のプロセッサを加えた計３個のプロセッサによって行われる。
【００４６】
図６に示すように、三重化実行を行う三重化モードの場合、同一の処理（命令１、命令１’、命令１”）が、３個のプロセッサ１ａ，１ｂ，１ｃで並列的にパイプライン処理される。また、三重化モードにある３個のプロセッサ１ａ，１ｂ，１ｃは、各ステージ１１〜１５の外部出力が、配線ネットワーク４を介して、他のプロセッサ１ａ，１ｂ，１ｃのステージ１１〜１５の比較器１１ａ〜１５ａに外部入力される。
【００４７】
ここで、３個のプロセッサ１ａ，１ｂ，１ｃのうち、例えば、プロセッサ１ｃにて、故障が発生し、プロセッサ１ａ，１ｂは正常であるとする。
この場合、プロセッサ１ａとプロセッサ１ｂの各ステージ出力を比較するためのプロセッサ１ｂの比較器１１ａ〜１５ａは、出力一致の比較結果を出力する。これに対し、プロセッサ１ｃの出力を比較対象とするプロセッサ１ａ，１ｃの比較器では、出力不一致の比較結果を出力する。これらの比較結果は、各プロセッサのプロセッサ内制御部２１を介して、制御回路３へ送信される。これにより、制御回路３は、出力が一致したプロセッサ１ａ，１ｂが正常であり、プロセッサ１ｃが故障していることを検出することができる。
【００４８】
続いて、制御回路３では、故障（永久故障）していると特定されたプロセッサ１ｃを、三重化実行から切り離すべく、プロセッサ１ｃを電源遮断（休止モード）とするとともに、残りの２つのプロセッサ１ａ，１ｂを二重化モードに戻す（図４参照）。
【００４９】
このように、本実施形態では、通常は、二重化モードで実行し、故障が検出されると故障部位を特定するために三重化実行し、故障部位が特定されると、故障していない残りのプロセッサによる二重化実行に戻すことで、平均的な多重化度を抑えつつ、三重化実行を常に行う場合と同様の故障部位特定が可能となる。そして、通常は、多重化度を低く抑えることができるため、余ったプロセッサを別プロセッサとして利用したり、電源遮断して消費電力の削減やプロセッサの特性劣化を防止したりすることができる。
【００５０】
また、本実施形態では、二重化モードにおいて故障が検出されると、常に三重化モードに移行するのではなく、永久故障であることが検出（例えば、所定時間内に閾値を超える数の故障が検出）されてから、三重化モードに移行するため、多重化度が増加する頻度が抑えられている。
つまり、制御回路３では、単に故障が検出されても、前記所定時間内における故障検出回数が、閾値未満であった場合には、一時故障とみなし、二重化モードを維持し、前記所定時間内における故障検出回数が、閾値を超えた場合には、永久故障が検出されたとみなし、永久故障のときにだけ三重化モードに移行する。
【００５１】
さらに、本実施形態では、制御回路３は、故障により多重化実行から切り離されて、電源遮断となったプロセッサ１ｃに対して、電源遮断してから所定時間が経過するか、電源遮断後の必要な時に、電源再投入を行う。
エレクトロ・マイグレーションによる永久故障の場合、故障から回復することはないが、ＮＢＴＩ等の特性劣化の場合、永久故障と判定されても、プロセッサ１ｃへの通電を停止すると特性が回復して、正常に動作することがある。したがって、一旦、永久故障と判定されたプロセッサも、電源遮断／電源再投入によって、正常に動作させることが可能である。
なお、電源遮断／電源再投入を行っても、故障が検出される場合、制御回路３は、エレクトロ・マイグレーション等の回復しない永久故障とみなして、電源再投入を行わないようにプロセッサを制御するのが望ましい。
【００５２】
また、本実施形態では、プロセッサの動作モードとして、高信頼性モードである多重化モード（二重化モード又は三重化モード）と、非多重化モード（単一モード、２−ｗａｙイン・オーダ実行スーパスカラモード、又は電源遮断）と、切り替えることが可能であるため、高信頼性が必要な場合には多重化モードとし、高信頼性が必要ない場合には非多重化モードとすることができる。
【００５３】
例えば、暗号処理、データ圧縮時など、高信頼性が必要なアプリケーション実行時や、放射線の影響を受けやすい飛行中の飛行機の中など故障発生確率が高い環境中の動作時には、信頼性の高い多重化モードとし、それ以外のときには、非多重化モードとすることができる。
【００５４】
しかも、非多重化モードとしても、高性能モード（単一モード、又は２−ｗａｙイン・オーダ実行スーパスカラモード）と、休止モード（電源遮断）と、を選択できるため、状況に応じて、多重化実行していないプロセッサを高性能モードで動作させて高い性能を確保したり、多重化実行していないプロセッサを休止モードとして消費電力を削減したり特性劣化を防止したりすることができる。
【００５５】
図７は、２個のプロセッサ１ａ，１ｂを、それぞれ、単一モードで動作させた状態を示している。両プロセッサ１ａ，１ｂは、それぞれ、別個のパイプラインプロセッサとして動作するため、別スレッドの動作によって、多重化した場合よりも高性能な動作を行うことができる。
なお、単一モードの場合、各ステージ１１〜１５の出力は、他のプロセッサに与える必要はない。
【００５６】
図８は、２個のプロセッサ１ａ，１ｂを、２−ｗａｙイン・オーダ実行スーパスカラモードで動作させた状態を示している。ここでは、プロセッサ１ａで実行中のスレッドにより２命令（命令１，命令２）を発行する。プロセッサ１ｂは、多重化実行時には各パイプラインの結果を外部出力する外部出力部１０ｂ〜１５ｂを利用してプロセッサ１ａとの間でデータのやりとりを行い、データ依存チェック、レジスタ読み出しなどを行う。
２−ｗａｙイン・オーダ実行スーパスカラモードにおいても、多重化した場合よりも高性能な動作を行うことができる。
【００５７】
［プロセッサのステージ単位での再構成］
本実施形態のシステムでは、ステージ毎に設けられた比較器１１ａ〜１５ａによって、制御回路４では、プロセッサ単位だけでなく、ステージ単位で故障を検出することもできる。故障は、ステージ単位で起こることもあるため、例えば、一つのプロセッサを構成する複数のステージのうち、一つのステージだけが故障した場合に、そのプロセッサ全体の電源遮断を行って使用中止とした場合、故障していない正常なステージも使用中止となり、プロセッサ利用効率が低下する。
【００５８】
そこで、故障したステージ以外の正常なステージ同士を組み合わせて、新たにパイプラインプロセッサを再構成することで、システム内のプロセッサ利用効率が上昇する。
例えば、第１のプロセッサ１ａでは、デコード論理部１２とレジスタ・ファイル１３が故障しているものの、他のステージ１０，１１，１４，１５は正常であるとする。また、第２のプロセッサ１ｂでは、ＡＬＵ１４だけが故障し、他のステージ１０，１１，１２，１５は正常であるとする。
この場合、例えば、第２のプロセッサ１ｂのプログラム・カウンタ更新論理部１０及び命令キャッシュ１１及びデコード論理部１２及びレジスタ・ファイル１３、第１のプロセッサ１ａのＡＬＵ１４及びデータ・キャッシュ１５を、一つの新たなパイプラインプロセッサとして再構成することで、故障していないステージを有効活用することができる。
なお、各ステージ１１〜１５の出力を保持するパイプライン・レジスタ１６〜２０の出力が、配線ネットワーク４に接続されているため、このような再構成は、パイプライン・レジスタ１６〜２０の出力を入力として与えるステージを再構成の仕方に合わせて切り替えるように、制御回路３がスイッチ５，６を制御すればよい。
【００５９】
なお、本発明は、上記実施形態に限定されるものではなく、様々な変形が可能である。
例えば、プロセッサの故障を検出する機能は、各プロセッサに設ける必要はなく、比較器の出力を制御回路３が集約して、故障を検出するようにしてもよい。ただし、故障（一時故障）検出時に命令再実行を行う場合には、上記実施形態のように各プロセッサ内部で故障検出及び命令再実行を行う方が、故障時に命令再実行を即座に行えるため好ましい。
また、システム内において、多重化実行しているプロセッサは、一組である必要はなく、多数組存在し得る。
【図面の簡単な説明】
【００６０】
【図１】パイプラインプロセッサシステムの全体構成図である。
【図２】パイプラインプロセッサの構成図である。
【図３】プロセッサのモード切替を示す状態遷移図である。
【図４】多重化構成を動的に変更する様子を示す模式図である。
【図５】二重化実行の説明図である。
【図６】三重化実行の説明図である。
【図７】単一パイプラインのプロセッサのマルチ・コア構成を示す説明図である。
【図８】２−ｗａｙイン・オーダ実行スーパスカラを示す説明図である。
【図９】（ａ）は一般的な多重化の仕方を示す説明図であり、（ｂ）は一般的な多重化における問題点を示す説明図である。
【符号の説明】
【００６１】
１ａ〜１ｅ  パイプラインプロセッサ
３  制御回路（制御部）
４  配線ネットワーク
５，６  スイッチ
【図１】
2010049589.tif 000003
【図２】
2010049589.tif 000004
【図３】
2010049589.tif 000005
【図４】
2010049589.tif 000006
【図５】
2010049589.tif 000007
【図６】
2010049589.tif 000008
【図７】
2010049589.tif 000009
【図８】
2010049589.tif 000010
【図９】
2010049589.tif 000011