(57)【要約】  少なくとも２つの実行ユニットを備えるコンピュータシステムでプログラムコードの処理を分割する方法および装置であって、少なくとも２つの動作モードの間で切換が行われ、第１の動作モードは比較モードに相当するとともに第２の動作モードはパフォーマンスモードに相当しており、比較モードでは少なくとも２つの実行ユニットが同じプログラムコードを処理する形式のものにおいて、比較モードからパフォーマンスモードへの切換時に、各々の実行ユニットに識別子が割り当てられ、前記識別子に依存して少なくとも２つの実行ユニットに異なるプログラムコードが割り当てられることによって、プログラムコードの分割が行われることを特徴とする。
2008518300.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも２つの実行ユニットを備え、前記実行ユニットは少なくとも２つの動作モード間で切換が可能であり、その場合に、第１の動作モードは比較モードに相当するとともに第２の動作モードはパフォーマンスモードに相当しており、前記比較モードでは少なくとも２つの前記実行ユニットが同じプログラムコードを処理することが可能なように構成されたコンピュータシステムにおけるプログラムコードの処理分割方法において：
前記比較モードから前記パフォーマンスモードへの切換時に、前記各実行ユニットにはそれぞれ固有の識別子が割り当てられ、前記識別子に応じて少なくとも２つの前記実行ユニットに異なるプログラムコードが割り当てられることによって、プログラムコードの分割が行われることを特徴とする方法。
【請求項２】
前記識別子が、前記実行ユニットの記憶装置、特にレジスタにそれぞれ含まれていることを特徴とする、請求項１に記載の方法。
【請求項３】
前記識別子が、前記実行ユニットの状態レジスタにそれぞれ含まれていることを特徴とする、請求項１に記載の方法。
【請求項４】
前記識別子が、前記実行ユニットの割込み状態レジスタにそれぞれ含まれていることを特徴とする、請求項１に記載の方法。
【請求項５】
前記識別子が、前記実行ユニットの割込みマスキングレジスタにそれぞれ含まれていることを特徴とする、請求項１に記載の方法。
【請求項６】
前記各実行ユニットの前記識別子に応じて設定可能なアドレスが参照され、前記アドレスで開始されるプログラムコードを前記各実行ユニットが処理することを特徴とする、請求項１に記載の方法。
【請求項７】
設定可能なアドレスのそのつどの参照がアドレスポインタによって行われることを特徴とする、請求項６に記載の方法。
【請求項８】
設定可能なアドレスのそのつどの参照がジャンプ命令によって行われることを特徴とする、請求項６に記載の方法。
【請求項９】
前記各識別子が少なくとも１つの設定された識別子と比較され、一致している場合には設定されたプログラムコードが割り当てられることを特徴とする、請求項１に記載の方法。
【請求項１０】
前記各識別子が少なくとも１つの設定された識別子と比較され、すべての識別子が一致していない場合には、定義されていない状態の結果であることが認識されることを特徴とする、請求項１に記載の方法。
【請求項１１】
少なくとも２つの実行ユニットを備え、前記実行ユニットは少なくとも２つの動作モードの間で切換可能であり、その場合に、第１の動作モードは比較モードに相当するとともに第２の動作モードはパフォーマンスモードに相当しており、前記比較モードでは少なくとも２つの前記実行ユニットが同じプログラムコードを処理可能なように構成されたコンピュータシステムにおけるプログラムコードの処理分割装置において：
前記装置は、比較モードからパフォーマンスモードへの切換時に、各々の実行ユニットに識別子が割り当てられ、前記識別子に依存して少なくとも２つの実行ユニットに異なるプログラムコードが割り当てられることによって、プログラムコードの分割が行われるように構成されていることを特徴とする装置。
【請求項１２】
前記装置が、前記各実行ユニットの識別子が保存されている記憶装置、特にレジスタを含んでいることを特徴とする、請求項１１に記載の装置。
【請求項１３】
前記各実行ユニットが、前記実行ユニットの識別子がそれぞれ保存されている状態レジスタを含んでいることを特徴とする、請求項１１に記載の装置。
【請求項１４】
前記装置が、前記実行ユニットの識別子が保存されている少なくとも１つの割込み状態レジスタを含んでいることを特徴とする、請求項１１に記載の装置。
【請求項１５】
前記装置が、前記実行ユニットの識別子が保存されている少なくとも１つの割込みマスキングレジスタを含んでいることを特徴とする、請求項１１に記載の装置。
【請求項１６】
請求項１１に記載の装置を備えているコンピュータシステムの実行ユニット。
【請求項１７】
２つの実行ユニットと、請求項１１に記載の装置とを備えているコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
α粒子や宇宙線によって引き起こされる過渡的なエラーは、集積半導体回路にとって大きな問題になりつつある。構造幅の減少、電圧の低下、および高いクロック周波数のために、α粒子や宇宙線によって引き起こされる電圧ピークが、集積回路の論理値を狂わせる確率が高くなる。その結果、誤った計算結果が生じる可能性がある。したがって、特に自動車などの安全性関連のシステムでは、そのようなエラーを確実に検知しなければならない。
【背景技術】
【０００２】
電子装置の誤動作を確実に検知しなければならない、たとえば自動車のＡＢＳコントロールシステムなどの安全性関連のシステムでは、このようなシステムの制御装置において、エラー認識をするための冗長性が利用されるのが普通である。たとえば公知のＡＢＳシステムでは、一式のマイクロコントローラが二重に構成されており、すべてのＡＢＳ機能が冗長的に計算されて、互いに一致しているかどうか検査される。結果に矛盾が生じると、ＡＢＳシステムの動作がオフになる。
【０００３】
マイクロコントローラの主要なコンポーネントは、第１に、記憶装置モジュール（たとえばＲＡＭ，ＲＯＭ、キャッシュ）、コア、入力／出力インタフェース、いわゆる周辺装置（たとえばＡ／Ｄ変換器、ＣＡＮインタフェース）で構成されている。記憶素子は検査コード（パリティまたはＥＣＣ）で効率的に監視することができ、周辺装置はしばしばアプリケーション固有のやり方で、センサ信号経路またはアクチュエータ信号経路の一部として監視されるので、今後の冗長性への取り組みは、マイクロコントローラのコアの単独での二重化に関して進められる。
【０００４】
このように２つのコアが統合されたマイクロコントローラは、デュアルコアアーキテクチャとも呼ばれている。両方のコアは同じプログラムセグメントを冗長的に、かつクロック同期された状態で実行し（ロックステップモジュール）、両方のコアの結果が比較されて、一致しているかどうかの比較の際に誤りが発見される。このようなデュアルコアシステムのコンフィギュレーションは、比較モードと称されている。
【０００５】
デュアルコアアーキテクチャは、さらに別の用途では性能向上のために利用されており、すなわちパフォーマンス向上のために利用されている。両方のコアが異なるプログラム、異なるプログラムセグメント、異なるコマンドを実行し、それによって性能向上を実現することができる。このようなデュアルコアシステムのコンフィギュレーションは、パフォーマンスモードと称されている。このようなシステムは対称型マルチプロセッサシステム（ＳＭＰ）とも呼ばれる。
【０００６】
かかるシステムの１つの拡張形として、特別なアドレスへのアクセスと、専用化されたハードウェア装置とによって、これら両方の方式をソフトウェアで切り換える方式が知られている。比較モードのときには、コアの出力信号が相互に比較される。パフォーマンスモードのときには、両方のコアが対称型マルチプロセッサシステム（ＳＭＰ）として作動し、異なるプログラム、異なるプログラムセグメント、または異なるコマンドを実行する。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、上記のようなシステムでは、比較モードからパフォーマンスモードへ移行するときに、プログラムフローを適正に分割することが問題となる。したがって本発明の課題は、かかる分割処理を簡単な形態で可能にする方法および手段を提供することにある。
【課題を解決するための手段】
【０００８】
少なくとも２つの実行ユニットを備えるコンピュータシステムにおいてプログラムコードの処理を分割する方法であって、少なくとも２つの動作モードの間で切換が行われ、第１の動作モードは比較モードに相当するとともに第２の動作モードはパフォーマンスモードに相当しており、比較モードでは少なくとも２つの実行ユニットが同じプログラムコードを処理する方法において、比較モードからパフォーマンスモードへの切換時に、各々の実行ユニットに識別子が割り当てられ、識別子に依存して少なくとも２つの実行ユニットに異なるプログラムコードが割り当てられることによって、プログラムコードの分割が行われることを特徴とする方法を適用するのが好ましい。
【０００９】
識別子が、実行ユニットの記憶装置、特にレジスタにそれぞれ含まれている方法を適用するのが好ましい。
【００１０】
識別子が、実行ユニットの状態レジスタにそれぞれ含まれている方法を適用するのが好ましい。
【００１１】
識別子が、実行ユニットの割込み状態レジスタにそれぞれ含まれている方法を適用するのが好ましい。
【００１２】
識別子が、実行ユニットの割込みマスキングレジスタにそれぞれ含まれている方法を適用するのが好ましい。
【００１３】
各々の実行ユニットの識別子に依存して設定可能なアドレスが参照され、このアドレスで開始されるプログラムコードを各実行ユニットが処理する方法を適用するのが好ましい。
【００１４】
設定可能なアドレスのそのつどの参照がアドレスポインタによって行われる方法を適用するのが好ましい。
【００１５】
設定可能なアドレスのそのつどの参照がジャンプ命令によって行われる方法を適用するのが好ましい。
【００１６】
各々の識別子が少なくとも１つの設定された識別子と比較され、一致している場合には設定されたプログラムコードが割り当てられる方法を適用するのが好ましい。
【００１７】
各々の識別子が少なくとも１つの設定された識別子と比較され、すべての識別子が一致していない場合には、定義されていない状態につながるはずの結果が認識される方法を適用するのが好ましい。
【００１８】
少なくとも２つの実行ユニットを備えるコンピュータシステムでプログラムコードの処理を分割する装置であって、少なくとも２つの動作モードの間で切換が行われ、第１の動作モードは比較モードに相当するとともに第２の動作モードはパフォーマンスモードに相当しており、比較モードでは少なくとも２つの実行ユニットが同じプログラムコードを処理する装置において、前記装置は、比較モードからパフォーマンスモードへの切換時に、各々の実行ユニットに識別子が割り当てられ、識別子に依存して少なくとも２つの実行ユニットに異なるプログラムコードが割り当てられることによって、プログラムコードの分割が行われるように構成されていることを特徴とする装置を適用するのが好ましい。
【００１９】
各々の実行ユニットの識別子が保存されている記憶装置、特にレジスタを含んでいる装置を適用するのが好ましい。
【００２０】
各々の実行ユニットが、実行ユニットの識別子がそれぞれ保存されている状態レジスタを含んでいる装置を適用するのが好ましい。
【００２１】
実行ユニットの識別子が保存されているとも１つの割込み状態レジスタを含んでいる装置を適用するのが好ましい。
【００２２】
実行ユニットの識別子が保存されているとも１つの割込みマスキングレジスタを含んでいる装置を適用するのが好ましい。
【００２３】
少なくとも２つの実行ユニットを備えるコンピュータシステムでプログラムコードの処理を分割する装置を有しているコンピュータシステムの実行ユニットであって、少なくとも２つの動作モードの間で切換が行われ、第１の動作モードは比較モードに相当するとともに第２の動作モードはパフォーマンスモードに相当しており、比較モードでは少なくとも２つの実行ユニットが同じプログラムコードを処理する実行ユニットにおいて、前記装置は、比較モードからパフォーマンスモードへの切換時に、各々の実行ユニットに識別子が割り当てられ、識別子に依存して少なくとも２つの実行ユニットに異なるプログラムコードが割り当てられることによって、プログラムコードの分割が行われるように構成されていることを特徴とする実行ユニットを適用するのが好ましい。
【００２４】
２つの実行ユニットと、少なくとも２つの実行ユニットを備えるコンピュータシステムでプログラムコードの処理を分割する装置とを備えるコンピュータシステムであって、少なくとも２つの動作モードの間で切換が行われ、第１の動作モードは比較モードに相当するとともに第２の動作モードはパフォーマンスモードに相当しており、比較モードでは少なくとも２つの実行ユニットが同じプログラムコードを処理するコンピュータシステムにおいて、前記装置は、比較モードからパフォーマンスモードへの切換時に、各々の実行ユニットに識別子が割り当てられ、識別子に依存して少なくとも２つの実行ユニットに異なるプログラムコードが割り当てられることによって、プログラムコードの分割が行われるように構成されていることを特徴とするコンピュータシステムを適用するのが好ましい。
【００２５】
その他の利点および有利な実施形態は、特許請求の範囲ならびに発明の詳細な説明の構成要件から明らかである。
【発明を実施するための最良の形態】
【００２６】
以下において、実行ユニットには、プロセッサ、コア、ＣＰＵばかりでなく、ＦＰＵ（浮動小数点演算ユニット）、ＤＳＰ（デジタル信号プロセッサ）、コプロセッサ、ＡＬＵ（算術論理演算ユニット）なども含まれるものとする。
【００２７】
図１には、２つの実行ユニットＧ１０ａ，Ｇ１０ｂと、比較ユニットＧ２０と、切換ユニットＧ５０と、切換要求認識ユニットＧ４０とを備えるマルチプロセッサシステムＧ６０が示されている。
【００２８】
本発明は、少なくとも２つの実行ユニットＧ１０ａ，Ｇ１０ｂと、比較ユニットＧ２０と、切換ユニットＧ５０と、切換要求認識ユニットＧ４０とを備える、図１、図２、図３に示すマルチプロセッサシステムＧ６０に関わるものである。切換ユニットＧ５０は、少なくとも２つのシステムインタフェースＧ３０ａ，Ｇ３０ｂへと通じる少なくとも２つの出力部を有している。これらのインタフェースを介して、レジスタ、メモリ、または周辺装置、たとえばデジタル出力部、Ｄ／Ａコンバータ、通信コントローラなどを制御することができる。このマルチプロセッサシステムは、比較モード（ＶＭ）およびパフォーマンスモード（ＰＭ）という少なくとも２つの動作モードで作動させることができる。
【００２９】
パフォーマンスモードでは、異なる実行ユニットで、異なるコマンド、異なるプログラムセグメント、または異なるプログラムが実行される。この動作モードでは比較ユニットＧ２０は無効になる。この動作モードのとき、切換ユニットＧ５０は、各々の実行ユニットＧ１０ａ，Ｇ１０ｂがシステムインタフェースＧ３０ａ，Ｇ３０ｂと接続されるように構成されている。このとき、実行ユニットＧ１０ａはシステムインタフェースＧ３０ａと接続され、実行ユニットＧ１０ｂはシステムインタフェースＧ３０ｂと接続される。
【００３０】
比較モードのときには、両方の実行ユニットＧ１０ａ，Ｇ１０ｂで同一または同種のコマンド、プログラムセグメント、またはプログラムが処理される。これらのコマンドはクロック同期して処理されるのが通常であるが、非同期状態での処理、もしくは定義されたクロックオフセット状態での処理でも良い。実行ユニットＧ１０ａ，Ｇ１０ｂの出力信号が、比較ユニットＧ２０で比較される。相違していればエラーが認識され、相応の措置を講じることができる。この措置としては、エラー信号を出したり、エラー処置を開始したり、スイッチを操作したりすることであるが、これらの措置およびその他の措置の組み合わせであってよい。切換ユニットＧ５０は、１つの実施形態では、１つの信号だけがシステムインタフェースＧ３０ａ，Ｇ３０ｂに送られるように構成されている。別の構成では、切換ユニットは、比較された信号すなわち同じ信号だけが、システムインタフェースＧ３０ａ，Ｇ３０ｂへ送られるように作用する。
【００３１】
切換要求認識部Ｇ４０は、現在どのモードが有効になっているかに関わりなく、他のモードへの切換要求を検知する。
【００３２】
図２には、２つの実行ユニットＧ１０ａ，Ｇ１０ｂと、比較ユニットＧ２０および切換ユニットＧ５０で構成される組み合わされた比較・切換ユニットＧ７０と、切換要求認識ユニットＧ４０とを備えるマルチプロセッサシステムＧ６０が示されている。
【００３３】
上に説明した事項の１つの実施形態では、図２に示すように、切換ユニットＧ５０と比較ユニットＧ２０を共通の切換・比較ユニット（ＵＶＥ）Ｇ７０にまとめることができる。その場合、この共通のコンポーネントＧ７０は個々のコンポーネントＧ５０，Ｇ２０の役割を担うことになる。図１５、図１６、図１７、図１８、および図１９にはＵＶＥＧ７０の実施形態が示されている。
【００３４】
図３に示す別の実施形態では、切換要求認識部Ｇ４０、比較器Ｇ２０、および切換ユニットＧ５０が、共通のコンポーネントＧ８０にまとめられている。図示省略のさらに別の実施形態では、切換要求認識部Ｇ４０と比較器Ｇ２０が共通のコンポーネントにまとめられていてよい。切換要求認識部４０を切換器Ｇ５０とともに共通のコンポーネントにまとめることも、同様に考えられる。
【００３５】
以下の説明では、別段の記載がない限り、切換要求認識部Ｇ４０と、組み合わされた切換・比較ユニットＧ７０とが設けられていることを前提とする。
【００３６】
２つを超える実行ユニットを用いる場合も含めた、一般的な切換・比較コンポーネントの事例が図２０に示されている。考慮に入れるべきｎ個の実行ユニットから、ｎ個の信号Ｎ１４０，．．．，Ｎ１４ｎが切換・比較コンポーネントＮ１００へ送られる。切換・比較コンポーネントはこれらの入力信号から、最大でｎ個の出力信号Ｎ１６０，．．．，Ｎ１６ｎを生成することができる。もっとも単純なケースである「純粋なパフォーマンスモード」では、すべての信号Ｎ１４ｉが、対応する出力信号Ｎ１６ｉへと導かれる。これと逆の境界事例である「純粋な比較モード」では、すべての信号Ｎ１４０，．．．，Ｎ１４ｎが、それぞれの出力信号Ｎ１６ｉのうちのちょうど１つだけに導かれる。
【００３７】
本図面を参照すると、考えられるさまざまなモードを、どのようにして成立させることができるかを説明することができる。そのために、この図面には切換論理部Ｎ１１０の論理コンポーネントが含まれている。これらのコンポーネントは、独自のコンポーネントとして設けられている必要はない。重要なのは、ここで説明する機能がシステムで具体化されていることである。切換論理部Ｎ１１０は、最初に、どれだけの数の出力信号が存在しているかを判定する。その次に切換論理部は、どの入力信号がどの出力信号に寄与しているかを判定する。このとき、１つの入力信号がちょうど１つの出力信号に寄与することができる。つまり数学的な形で別に表現すれば、集合｛Ｎ１４０，．．．，Ｎ１４ｎ｝の各要素に、集合｛Ｎ１６０，．．．，Ｎ１６ｎ｝の１つの要素が割り当てられる関数が、切換論理部によって定義される。
【００３８】
そして処理論理部Ｎ１２０が、各々の出力Ｎ１６ｉについて、その出力部に入力がどのような形で寄与しているかを判定する。これらのコンポーネントも、独自のコンポーネントとして存在していなくてもよい。やはり重要なのは、ここで説明する機能がシステムで具体化されていることである。さまざまなバリエーションの可能性の一例を説明するために、一般性を限定することなく、信号Ｎ１４１，．．．，Ｎ１４ｍによって出力Ｎ１６０が生成されるものと仮定する。ｍ＝１ならば、これは信号が単純に通過することに相当しており、ｍ＝２であれば、たとえば図１３、図１４の比較器のところで一例を説明するように、信号Ｎ１４１，Ｎ１４２が比較される。この比較は同期または非同期の状態で行うことができ、ビットごとに行うか、または有意なビットに関してだけ行うか、あるいは許容幅を用いて行うこともできる。
【００３９】
第１の選択肢のポイントは、すべての信号を比較し、少なくとも２つの異なる値が存在するときはエラーを検知することにあり、任意選択で、このエラーを報知することができる。
【００４０】
第２の選択肢のポイントは、ｍ個からｋ個を選択することにある（ｋ＞ｍ／２）。この選択は、比較器を使用することによって具体化することができる。任意選択で、信号のうちの１つが相違していると認識されたときに、エラー信号を生起することができる。３つすべての信号が相違しているときは、場合により、これと異なるエラー信号を生起することができる。
【００４１】
第３の選択肢のポイントは、これらの値をアルゴリズムに供給することにある。これは、たとえば平均値の形成、中央値の形成、またはフォールトトレラントアルゴリズム（ＦＴＡ）の使用によって行うことができる。このようなＦＴＡは、入力値の極値を排除して、残りの値で一種の平均化を行うことに依拠している。この平均化は残りの値の集合全体で行うことができ、または特に、ＨＷで容易に形成することができる部分集合で行うことができる。この場合、数値を実際に比較することは必ずしも必要ではない。たとえば平均値形成の場合には加算と除算をするだけでよく、ＦＴＭ，ＦＴＡ，または中央値には一部の選別が必要である。場合により十分に大きい極値があるときは、任意選択で、この場合にもエラー信号を出力することができる。
【００４２】
複数の信号を１つの信号に処理する上に挙げたこれら種々の選択肢を、便宜上、比較演算と呼ぶことにする。
【００４３】
つまり処理論理部の役割は、各々の出力信号について（および、これに伴って付属する入力信号についても）、比較演算の厳密な形態を定めることにある。切換論理部Ｎ１１０の情報（すなわち前述した関数）と処理論理部の情報（すなわち出力信号ごとの、すなわち関数値ごとの比較演算の決定）とを組み合わせたものがモード情報であり、このモード情報がモードを決定する。この情報は一般的なケースでは当然ながら多価であり、つまり１つの論理ビットだけで表すことはできない。理論上考えられるすべてのモードが、所与の具体化形態において有意義なわけではなく、許容されるモードの数を制限しておくのが好ましい。ただ１つの比較モードしか存在しないただ２つの実行ユニットの場合には、すべての情報をただ１つの論理ビットに集約することができるということを強調しておく。
【００４４】
パフォーマンスモードから比較モードへの切換は、一般的な場合、パフォーマンスモードでは異なる出力部へマッピングされる実行ユニットが、比較モードでは同じ出力部にマッピングされるという特徴がある。このことは、パフォーマンスモードでは部分システムで考慮されるべきすべての入力信号Ｎ１４ｉが対応する出力信号Ｎ１６ｉへ直接送られるのに対して、比較モードではすべてが１つの出力部にマッピングされる、実行ユニットの部分システムが存在することによって具体化するのが好ましい。別案として、組み合わせを変更することによって、このような切換を具体化することもできる。その理由は、一般的なケースでは１つのパフォーマンスモードとか１つの比較モードといった表現を使うことはできないが、本発明の所与の特徴として許容されるモードの数を制約して、そのような表現を使えるということによって説明される。ただし、パフォーマンスモードから比較モードへ（およびその逆へ）の切換という表現は、常に使うことができる。
【００４５】
これらのモードの間で、ソフトウェアを通じて制御しながら、動作中にダイナミックに切換を行うことができる。このとき切換は、特別な切換命令の実行、特別な命令シーケンスの実行、明示的に指定された命令の実行によって起動され、あるいは、マルチプロセッサシステムの少なくとも１つの実行ユニットが、特定のアドレスにアクセスすることによって起動される。
【００４６】
エラー回路論理部Ｎ１３０は、たとえば比較器によって生起されるエラー信号を集めて、任意選択で、出力Ｎ１６ｉをたとえばスイッチで遮断することによって受動状態に切り換えることができる。
【００４７】
ただし以下の例では、多くの場合、より単純に大半のコンセプトを説明することができる２つの実行ユニットのケースに絞ることにする。
【００４８】
モード間の切換はさまざまな方法でコーディングすることができる。考えられる１つの方法では、切換要求認識ユニットＧ４０によって検知される特別な切換コマンドが利用される。切換をコーディングするために考えられる別の方法は、同じく切換要求認識ユニットＧ４０が検知する特別なメモリ領域へのアクセスによって定義される。さらに別の方法は、切換を知らせる外部信号を切換要求認識ユニットＧ４０で評価する。以下においては、使用されていないビットコンビネーションがプロセッサの既存のコマンドセットで利用される方法について説明する。この方法の特別な利点は、既存のプログラム開発環境（アセンブラ、コンパイラ、リンカー、デバッガー）を引き続き使用できるという点にある。
【００４９】
図４には、２つの実行ユニットＧ２１０ａ，Ｇ２１０ｂと、切換・比較ユニットＧ２６０とを備えるマルチプロセッサシステムＧ２００が示されている。比較モードとパフォーマンスモード（およびこの逆）を切り換えるために、少なくとも２つの実行ユニットＧ２１０ａ，Ｇ２１０ｂの定義されていないビットコンビネーションがアセンブラで利用される。この意味における定義されていないビットコンビネーション、または未定義のビットコンビネーションとは、コマンドセットの記述で未定義または不正と指定されているあらゆるビットコンビネーションを指す。これはたとえば不正オペランド、不正命令、不正操作などである。このような未定義ビットコンビネーションの一般的な識別の特徴は、正常な実行ユニットがこのようなビットコンビネーションを実行したときにエラー信号を生成するか、または定義されていない挙動を示すことである。つまりこのようなビットコンビネーションは、通常のプログラムのセマンティクスを表現するのに必要とされない。
【００５０】
したがってソフトウェア開発のために、シングルプロセッサシステム用として存在しているような従来のプログラム開発環境を利用することができる。このことは、たとえば上に定義した意味における相応の未定義ビットコンビネーションをコードの適当な個所に挿入するマクロ‘ＳＷＩＴＣＨ  ＭＯＤＥ  ＴＯ  ＰＭ’およびマクロ‘ＳＷＩＴＣＨ  ＭＯＤＥ  ＴＯ  ＶＭ’を定義することによって具体化することができる。
【００５１】
その場合、このようなコンビネーションの使用は一般的なマクロ‘ＳＷＩＴＣＨ’として定義される。そしてこのマクロが、現時点でのモードに依存して、他のモードへの切換を惹起する。システムに２つを超えるモードが存在している場合には、この方法を適用するために、このようなコンビネーションがさらに多く存在していなければならず、その場合、１つのモードごとに１つのコンビネーションを切換認識のために利用できるのが好ましい。
【００５２】
本発明では、コマンドセットで定義されていないビットコンビネーションによって、切換要求がコーディングされる。このビットコンビネーションは、実行ユニットＧ２１０ａ，Ｇ２１０ｂの内部で通常の仕方で処理されてはならない。この理由により、相応のビットコンビネーションを認識し、以後の処理のためにこれをニュートラルなビットコンビネーションと置き換える、追加のパイプライン段階（リプレース段階）Ｇ２３０ａ，Ｇ２３０ｂが提案される。そのために、‘ＮＯＰ’（Ｎｏ  Ｏｐｅｒａｔｉｏｎ）コマンドを利用するのが好ましい。ＮＯＰコマンドは、命令ポインタを除き、実行ユニットの内部状態を変更しないという特徴がある。このときリプレース段階Ｇ２３０ａ，Ｇ２３０ｂは、通常第１の段階であるフェッチ段階Ｇ２２０ａ，Ｇ２２０ｂよりも後、かつ、ここでは１つのユニットにまとめられている、アセンブラで定義されていないビットコンビネーションのための残りのパイプライン段階Ｇ２４０ａ，Ｇ２４０ｂよりも前に挿入されている。
【００５３】
本発明では、ここに図示しているパイプラインユニットＧ２１５ａ，Ｇ２１５ｂの特別なパイプライン段階Ｇ２３０ａ，Ｇ２３０ｂとしての切換要求認識ユニットＧ４０の実装形態は、相応の切換ビットコンビネーションが認識されたときに追加の信号Ｇ２５０ａ，Ｇ２５０ｂを生成し、この信号が、処理モードの切換を行うべきであることを別個の切換ユニットおよび比較ユニットＧ２６０に知らせる。
【００５４】
ＲＥＰ段階Ｇ２３０ａ，Ｇ２３０ｂは、実行ユニットＧ２１０ａ，Ｇ２１０ｂのパイプラインユニットＧ２１５ａ，Ｇ２１５ｂのなかで、ＦＥＴＧ２２０ａ，Ｇ２２０ｂと残りのパイプライン段階Ｇ２４０ａ，Ｇ２４０ｂの間に配置されるのが好ましい。このときＲＥＰ段階Ｇ２３０ａ，Ｇ２３０ｂは相応のビットコンビネーションを認識し、その場合に、ＮＯＰコマンドを残りの段階Ｇ２４０ａ，Ｇ２４０ｂへ転送する。それと同時に、それぞれの信号Ｇ２５０ａまたはＧ２５０ｂが活動化する。これ以外のすべての場合には、ＲＥＰ段階Ｇ２３０ａ，Ｇ２３０ｂはニュートラルに振るまい、すなわち、他のすべてのコマンドは変更されることなく残りの段階Ｇ２４０ａ，Ｇ２４０ｂへ転送される。
【００５５】
図５には、別なパイプライン段階Ｇ２３０ａ，Ｇ２３０ｂの内部で、特別な未定義のビットコンビネーションをＮＯＰまたはその他のニュートラルなビットコンビネーションと交換する方法が、フローチャートとして示されている。フェッチ段階Ｇ３００では、コマンドすなわちビットコンビネーションが記憶装置から取り出される。次いでブロックＧ３１０で、取り出されたビットコンビネーションが、切換をコーディングする特別な未定義のビットコンビネーションに相当しているかどうかが区別される。相当していないときは、次のステップＧ３２０で、そのビットコンビネーションは以後の処理のために、残りのパイプライン段階Ｇ３４０へ変更されないまま送られる。切換をコーディングする特別なビットコンビネーションがステップＧ３１０で認識されたときは、ステップＧ３３０で、このビットコンビネーションがＮＯＰビットコンビネーションによって置き換えられ、これが以後の処理のために次のパイプライン段階Ｇ３４０へ送られる。１つの有利な実施形態では、ブロックＧ３１０，Ｇ３２０，Ｇ３３０は本発明によるリプレース段階Ｇ２３０ａ，Ｇ２３０ｂの機能性を表しており、それ以外の機能性をさらに含んでいてもよい。
【００５６】
図６には、２つの実行ユニットＨ２１０ａ，Ｈ２１０ｂと、切換・比較ユニットＨ２６０とを備えるマルチプロセッサシステムＨ２００が示されている。コンポーネントＨ２２０ａ，Ｈ２２０ｂ，Ｈ２４０ａ，Ｈ２４０ｂは、Ｇ２２０ａ，Ｇ２２０ｂ，Ｇ２４０ａ，Ｇ２４０ｂと同じ意味を有している。ここでは特別なパイプライン段階Ｈ２３０ａ，Ｈ２３０ｂで説明する切換要求認識ユニットＧ４０の別案の実施形態では、これらのパイプライン段階は切換を知らせる信号Ｈ２５０ａ，Ｈ２５０ｂのほか、さらに別の信号を有している。パフォーマンスモードから比較モードへの切換時に、実行ユニットＨ２１０ａ，Ｈ２１０ｂを同期化することができるようにするために、実行ユニットＨ２１０ａ，Ｈ２１０ｂのパイプラインユニットＨ２１５ａ，Ｈ２１５ｂは、処理をストップさせることができる信号入力部Ｈ２８０ａ，Ｈ２８０ｂをそれぞれ有している。この信号は、最初に切換コマンドを認識し、それによって信号Ｈ２５０ａないしＧＨ５０ｂを活動化させたほうのパイプラインユニットＨ２１５ａまたはＨ２１５ｂに対して、切換・比較ユニットＨ２６０によって生成される。実行ユニットＨ２１０ａ，Ｈ２１０ｂの両方のパイプラインユニットＨ２１５ａ，Ｈ２１５ｂが切換コマンドを認識し、ソフトウェアまたはその他のハードウェア措置によってそれぞれの内部状態が同期化されたときに初めて、この信号Ｈ２８０ａ，Ｈ２８０ｂが再び取り消される。比較モードからパフォーマンスモードへの切換時には、同期化が必要ないので、Ｈ２８０ａ，Ｈ２８０ｂは不要である。
【００５７】
ここで説明している提案の前提条件となるのは、各々の実行ユニットが自らの個別番号またはユニットＩＤを確認することができるようにするユニット（ＩＤユニットと呼ぶ）または方法である。２つの実行ユニットを備えるシステムの場合、たとえば一方の実行ユニットは自らについて番号０を確認し、他方の実行ユニットは番号１を確認することができる。２つを超える実行ユニットを備えるシステムでも、これに準じた番号が付与ないし確認される。このＩＤは比較モードとパフォーマンスモードを区別するのではなく、実行ユニットに一義的に名称をつけるものである。ＩＤユニットはそれぞれの実行ユニットに含まれていてよく、たとえばプロセッサ状態レジスタのビットまたはビットコンビネーションとして、または独自のレジスタとして、または複数のビットとして、または問い合わせに応じて相応のＩＤを供給する、実行ユニットの外部のユニットとして実装される。
【００５８】
実行ユニットが切換要求に従ってパフォーマンスモードへの切換を実行した後、比較ユニットはもはや有効ではなくなっているが、実行ユニットは、依然として同一のコマンドを実行し続ける。その理由は、次のステップで実行ユニットが作動する、ないしは現在作動しているプログラムの個所を表示する命令ポインタは、切換による影響を受けることがないからである。実行ユニットが引き続いて種々のＳＷモジュールを実行できるようにするためには、それぞれの実行ユニットのプログラム進行が分割されなくてはならない。したがって実際には、本発明では独立したコマンド、プログラムセグメント、またはプログラムが処理されるので、それぞれの命令ポインタは、パフォーマンスモードのときに異なる値を有しているのが通常である。プログラムフローの分割は、ここで説明している提案では、それぞれの実行ユニット番号の確認によって行われる。実行ユニットがどのＩＤを有しているかに応じて、実行ユニットは特定のソフトウェアモジュールを実行する。それにより、各々の実行ユニットが個別番号またはＩＤを有しているので、関与する実行ユニットのプログラムフローを確実に分割することができる。
【００５９】
図７には、２つの実行ユニットを備えるマルチプロセッサシステムで比較モードからパフォーマンスモードへ切り換えるときに、ユニットＩＤを利用してプログラムフローを分割することができる方法が、フローチャートとして示されている。比較モードからパフォーマンスモードへの切換Ｇ５００が実行された後、ユニットＩＤまたは実行ユニット番号の問い合わせＧ５１０が、両方の実行ユニットによって行われる。本発明では、このとき実行ユニット０には実行ユニット番号０が与えられ、実行ユニット１には実行ユニット番号１が与えられる。Ｇ５１０で、確認された実行ユニット番号と番号０との照合が行われる。これらが等しい場合には、ステップＧ５２０で、この照合が成功したほうの実行ユニットが実行ユニット０の符号化を続行する。この照合が成功しなかったほうの実行ユニットは、Ｇ５３０で番号１との照合を続行する。この照合が成功した場合には、Ｇ５４０で実行ユニット１の符号化が続行される。この照合も成功しなかった場合には、当該実行ユニットについて、０および１に等しくない実行ユニット番号がそれによって確認されたことになる。これはエラーの発生を意味しており、Ｇ５５０で処理が続行される。
【００６０】
図８には、３つの実行ユニットについての考えられる方法が説明されている。比較モードからパフォーマンスモードへの切換Ｈ５００が実行された後、ユニットＩＤまたは実行ユニット番号の問い合わせＨ５１０が各実行ユニットによって行われる。本発明では、このときたとえば実行ユニット０には実行ユニット番号０が与えられ、実行ユニット１には実行ユニット番号１が与えられ、実行ユニット２には実行ユニット番号２が与えられる。Ｈ５１０で、確認された実行ユニット番号と番号０との照合が行われる。これらが等しい場合には、ステップＨ５２０で、この照合が成功した実行ユニットが実行ユニット０の符号化を続行する。この照合が成功しなかった実行ユニットは、Ｈ５３０で番号１との照合を続行する。この照合が成功した実行ユニットでは、Ｈ５４０で実行ユニット１の符号化が続行される。この照合が成功しなかった実行ユニットは、Ｈ５３５で番号２との照合を続行する。この照合が成功した実行ユニットは、Ｈ５３６で実行ユニット２の符号化が続行される。この照合も成功しなかった場合には、当該実行ユニットについて、０，１および２に等しくない実行ユニット番号がそれによって確認されたことになる。これはエラーの発生を意味しており、Ｈ５５０で処理が続行される。番号との照合に代えて、確認された実行ユニット番号を分岐表へのインデックスとして直接利用することもできる。
【００６１】
３つを超える実行ユニットを備えるマルチプロセッサシステムについても、以上の説明に準じて、同じ方法を適用することができる。
【００６２】
パフォーマンスモードから比較モードへ切り換えるときは、複数の事柄に配慮しなければならない。パフォーマンスモードから比較モードへの切換時には、実行ユニットの内部状態が切換後に同種になることを保証しなければならない。そうしないと、異なるスタート状態が異なる出力につながった場合、比較モードで、場合によりエラーが認識されることになる。このことは、ハードウェア、ソフトウェア、ファームウェア、またはこれら３つすべての組み合わせによって行うことができる。そのための前提条件は、比較モードへの切換後に、すべての実行ユニットが同一または同種のコマンド、プログラム、またはプログラムセグメントを実行することである。以下において、同一のコマンドが処理されてビットごとの正確な比較が行われるという特徴を比較モードが備えている場合に適用可能な同期化方法についてする。
【００６３】
図９には、パフォーマンスモードから比較モードへの切換時に実行ユニットを同期化する方法が、フローチャートとして示されている。ステップＧ６００で、特にすべての割込みが禁止される。このことが重要なのは、割込みコントローラが比較モードのために相応に再プログラミングされなければならないという理由からだけではない。ソフトウェアによっても、実行ユニットの内部状態が調整されるのが望ましい。逆に、比較モードへの切換をするための準備中に割込みが惹起されると、さらに多くのコストをかけない限り、調整が不可能になる。
【００６４】
ステップＧ６１０：両方の実行ユニットが別々のキャッシュを有しているときは、比較モードになったときに、一方の実行ユニットを表すアドレスにキャッシュヒットが生じ、他方の実行ユニットについてキャッシュミスが生じるのを防ぐために、キャッシュの内容も切換前に調整されなくてはならない。これがキャッシュハードウェアによって自動的に行われないときは、たとえばすべてのキャッシュラインを無効としてマーキングすることにより、このような調整を行う。そのキャッシュ（または複数のキャッシュ）が完全に無効になるまで待機しなければならない。必要な場合には、プログラムコードの待機ループによってこのことを確保する。これはその他の手段で実現することもでき、決定的に重要なのは、このステップの後にどのキャッシュも同じ状態になっていることである。
【００６５】
ステップＧ６２０では、パフォーマンスモードに由来する実行ユニットの活動が切換後に行われないようにするために、実行ユニットの書込みバッファが空にされる。
【００６６】
ステップＧ６３０では、それぞれの実行ユニットのパイプライン段階の状態が同期化される。そのために、たとえば適当な数のＮＯＰ（Ｎｏ  ｏｐｅｒａｔｉｏｎ）コマンドを、切換シーケンス／切換コマンドの前に実行する。ＮＯＰコマンドの数はパイプライン段階の数に準じて決め、すなわち、そのつどのアーキテクチャに依存して決める。どのようなコマンドがＮＯＰコマンドとして適しているかも、同じくアーキテクチャ依存的である。実行ユニットが命令キャッシュを有しているときは、そのコマンドシーケンスがキャッシュラインの境界に沿って配列されることを保証する（アライメント）。命令キャッシュは、これらのＮＯＰが実行される前に無効としてマーキングされているので、これらのＮＯＰが最初にキャッシュにロードされなくてはならない。キャッシュライン境界にあるこのコマンドシーケンスが開始されると、記憶装置（たとえばＲＡＭ／ＲＯＭ／フラッシュ）からキャッシュへのデータ転送が完了してから、切換のコマンドが行われる。このコマンドシーケンスも、ＮＯＰの必要数を決めるときに考慮しなければならない。
【００６７】
ステップＧ６４０では、比較モードへ切り換えるためのコマンドステップが実際に遂行される。
【００６８】
ステップＧ６５０では、各々の実行ユニットのそのつどのレジスタファイルの内容が調整される。そのために、切換の前または後でレジスタに同一の内容をロードする。その際に重要なのは、レジスタの内容が外部へ転送され、それによって比較ユニットにより比較されるまでに、切換後に各実行ユニットのレジスタの内容が同一になっていることである。
【００６９】
ステップＧ６６０では、相互接続されているどの実行ユニットでも外部の割込み信号が同じ割込みを惹起するように、割込みコントローラが再プログラミングされる。
【００７０】
ステップＧ６７０では割込みが再びリリースされる。
【００７１】
比較モードへの切換がいつ行われるべきなのかがプログラム進行から一義的に明らかでないときは、切換が意図されていることを関与する実行ユニットに知らせなくてはならない。そのために、それぞれの実行ユニットに帰属する割込みコントローラで、たとえばＳＷなどにより割込みが開始されるのが好ましい。そして割込み処理が、上に説明した相互接続のためのシーケンスの実行を指令する。
【００７２】
図１０には、パフォーマンスと比較モード（およびその逆）の切換を表現するステートマシンが示されている。「パワーオン」あるいはリセット（ソフトウェアまたはハードウェア）によって惹起されるシステムの起動時に、移行線Ｇ８００を経由してシステムが状態Ｇ７００へと移される。一般に、リセットを惹起することができる未定義の事象後のシステムは、常に状態Ｇ７００から動作を開始する。リセットを惹起することができる事象の例としては、外部の信号、電圧供給のトラブル、動作の継続を有意義でなくしてしまう内部のエラー事象などがある。このように、切換・比較ユニットＧ７０の状態Ｇ７００、およびパフォーマンスモードで作業が行われるマルチプロセッサシステムＧ６０の状態Ｇ７００は、システムのデフォルト状態である。デフォルト状態にならなければ未定義の状態が成立することになるはずの一切のケースで、デフォルト状態Ｇ７００が成立する。このような状態Ｇ７００のデフォルト位置は、ハードウェア措置によって保証される。たとえばシステム状態ないし切換・比較ユニットＧ６０の状態は、レジスタ、レジスタ内部のビット、レジスタ内部のビットコンビネーション、またはフリップフロップによってコーディングされていてよい。
【００７３】
そうすれば、ハードウェアにより、リセットまたはパワーオンの後に必ず状態Ｇ７００が成立することが保証される。このことは、たとえばリセット信号ないし「パワーオン」信号が、フリップフロップまたはレジスタのリセット入力部もしくはセット入力部に送られることによって保証される。
【００７４】
状態Ｇ７００では、システムはパフォーマンスモードで作動する。したがって実行ユニットＧ１０ａ，Ｇ１０ｂは異なるコマンド、異なるプログラム、または異なるプログラムセグメントを処理する。切換は、たとえば実行ユニットＧ１０ａ，Ｇ１０ｂが、特別な切換コマンドを実行することによって認識することができる。その他の方法としては、特別なメモリアドレスへのアクセス、内部信号、あるいは外部信号による認識がある。切換要求が存在していない限り、マルチプロセッサシステムＧ６０およびこれに伴う切換・比較ユニットＧ７０は、状態Ｇ７００のまま保持される。以下において切換要求とは、この特別なシステムで切換要求が識別表示されるのと同様に識別表示された切換条件の認識を意味している。
【００７５】
状態Ｇ７００での保持は、移行線Ｇ８１０で図示されている。実行ユニットＧ１０ａにより切換要求が認識されると、切換・比較ユニットＧ７０は移行線８２０を介して状態Ｇ７１０へと移行する。すなわち状態Ｇ７１０は、実行ユニットＧ１０ａが切換要求を認識し、実行ユニットＧ１０ｂが同じく切換要求を認識するのを待機している状態を表している。実行ユニットＧ１０ｂが切換要求を認識しなかったときは、切換・比較ユニットＧ７０は状態Ｇ７１０のまま保持され、その様子は移行線Ｇ８３０で図示されている。
【００７６】
状態Ｇ７１０のときに実行ユニットＧ１０ｂも同じく切換要求を認識すると、移行Ｇ８４０が行われる。それにより、切換・比較ユニットＧ７０は状態Ｇ７３０になる。この状態は、両方の実行ユニットＧ１０ａ，Ｇ１０ｂが切換要求を認識したときの状況を表している。状態Ｇ７３０では、２つの実行ユニットＧ１０ａ，Ｇ１０ｂが互いに同期化される同期化方法が実施され、引き続いて比較モードで動作を行う。この工程中、切換・比較ユニットＧ７０は状態Ｇ７３０のまま保持され、その様子は移行線Ｇ８９０で図示されている。
【００７７】
状態Ｇ７００のとき、最初に実行ユニットＧ１０によって切換要求が認識された場合には、移行線Ｇ８６０を介して状態Ｇ７２０への切換が行われる。すなわち状態Ｇ７２０は、実行ユニットＧ１０ｂが切換要求を認識し、実行ユニットＧ１０ａが同じく切換要求を認識するのを待機している状態を表している。実行ユニットＧ１０ａが切換要求を認識しなかったときは、切換・比較ユニットＧ７０は状態Ｇ７２０のまま保持され、その様子は移行線Ｇ８７０で図示されている。状態Ｇ７２０のときに実行ユニットＧ１０ａも同じく切換要求を認識すると、移行Ｇ８８０が行われる。それにより、切換・比較ユニットは状態Ｇ７３０になる。状態Ｇ７００のときに両方の実行ユニットＧ１０ａ，Ｇ１０ｂが同時に切換要求を認識した場合には、ただちに状態Ｇ７３０への移行が行われる。このケースは移行線Ｇ８５０である。
【００７８】
切換・比較ユニットＧ７０が状態Ｇ７３０になっているときは、両方の実行ユニットＧ１０ａ，Ｇ１０ｂが切換要求をすでに認識している。この状態のときに実行ユニットＧ１０ａ，Ｇ１０ｂの内部状態が同期化され、この同期化工程の終了後に、比較モードで作動する。この同期化作業の終了と同時に、移行Ｇ９００が行われる。この移行は同期化の終了を表している。状態Ｇ７４０では、実行ユニットＧ１０ａ，Ｇ１０ｂは比較モードで作動する。同期化作業の終了は、実行ユニットＧ１０ａ，Ｇ１０ｂ自体によって通知することができる。このことは、両方の実行ユニットＧ１０ａ，Ｇ１０ｂが比較モードで作動する準備ができたことを通知したときに、移行Ｇ９００が行われることを意味している。一定に設定された時間にわたって終了を通知することもできる。このことは、状態Ｇ７３０をどれだけ長く保持するかが切換・比較ユニットＧ７０で不変にコーディングされていることを意味している。この時間は、両方の実行ユニットＧ１０ａ，Ｇ１０ｂが確実に同期化作業を終えているように設定される。そして、この時間の経過後に移行Ｇ９００が開始される。別の変形例では、切換・比較ユニットＧ７０が実行ユニットＧ１０ａ，Ｇ１０ｂの状態を監視しており、両方の実行ユニットＧ１０ａ，Ｇ１０ｂが同期化作業をいつ終えたのかを自ら認識することができる。そして、この認識の後に移行Ｇ９００が開始される。
【００７９】
切換要求が認識されない限り、マルチプロセッサシステムＧ６０は比較モードのままに保持され、その様子は移行線Ｇ９１０で図示されている。状態７４０のときに切換要求が認識されると、切換・比較ユニットは移行線Ｇ９２０を介して状態Ｇ７００へと移される。すでに説明したとおり、状態Ｇ７００ではシステムはパフォーマンスモードで作動する。そして、状態Ｇ７４０から状態Ｇ７００へ移行するときのプログラムフローの分割は、上述したのと同じ方法で実施することができる。
【００８０】
図１１には、２つの実行ユニットＧ４１０ａ，Ｇ４１０ｂならびに２つの割込みコントローラＧ４２０ａ，Ｇ４２０ｂ、およびその内部に含まれる割込みマスキングレジスタＧ４３０ａ，Ｇ４３０ｂと、さまざまな割込みソースＧ４４０ａからＧ４４０ｎとを備えるマルチプロセッサシステムＧ４００が示されている。さらに、特別な割込みマスキングレジスタＧ４６０を備える切換・比較ユニットＧ４５０が図示されている。
【００８１】
各々の実行ユニットＧ４１０ａ，Ｇ４１０ｂは、パフォーマンスモードのとき同時に２つの割込みを処理できるように、それぞれ独自の割込みコントローラＧ４２０ａ，Ｇ４２０ｂを有しているのが好ましい。このことは、割込み処理がシステムパフォーマンスのボトルネックとなっているシステムで特別に好ましい。このとき割込みソースＧ４４０ａからＧ４４０ｎは、両方の割込みコントローラＧ４２０ａ，Ｇ４２０ｂにそれぞれ同等に接続されるのが好ましい。このような接続形式により、他に措置を講じなくても、両方の実行ユニットＧ４１０ａ，Ｇ４１０ｂで同等な割込みが惹起される。パフォーマンスモードのとき、割込みコントローラＧ４２０ａ，Ｇ４２０ｂは、相応の割込みソースＧ４４０ａからＧ４４０ｎがアプリケーションに応じて異なる実行ユニットＧ４１０ａ，Ｇ４１０ｂへ分配されるようにプログラミングされる。このことは、割込みマスキングレジスタＧ４３０ａ，Ｇ４３０ｂの適当なプログラミングによって行われる。マスキングレジスタは、各々の割込みソースＧ４４０ａからＧ４４０ｎについてレジスタの１ビットを用意している。このビットがオンになっていると割込みがロックされ、すなわち、接続されている実行ユニットＧ４１０ａ，Ｇ４１０ｂへ転送されない。パフォーマンスモードでは、所与の割込みソースＧ４４０ａからＧ４４０ｎがちょうど１つの実行ユニットＧ４１０ａまたはＧ４１０ｂで処理されるのが好都合である。このことは、少なくともいくつかの割込みソースについて該当するのが好ましい。それにより、割込みネスティング（割込み処理が２番目の割込みによって中断される）や割込み待ち（最初の割込みの処理が終わるまで、２番目の割込みの処理が延期される）を行うことなく、複数の割込みソースＧ４４０ａからＧ４４０ｎを同時に処理できるようにすることができる。
【００８２】
比較モードでは、割込みコントローラＧ４２０ａ，Ｇ４２０ｂがすべての実行ユニットＧ４１０ａ，Ｇ４１０ｂで同じ割込みを同時に惹起することが保証されなくてはならない。そうしないと、比較モードに応じてエラーが認識されることになる。このことは、パフォーマンスモードから比較モードへ切り換えるとき、同期化段階で割込みマスキングレジスタＧ４３０ａ，Ｇ４３０ｂが同一であることを確保しなければならないことを意味している。この同期化については、図９のステップＧ６６０で説明されている。このような同期化は、両方の割込みマスキングレジスタＧ４３０ａ，Ｇ４３０ｂを相応に等しい値でプログラミングすることによって、ソフトウェアで行うことができる。切換工程を迅速にするために、特別なレジスタＧ４６０を利用することが提案される。１つの実施形態では、このレジスタＧ４６０は切換・比較ユニットＧ４６０のなかに配置されるが、切換要求認識部Ｇ４０、組み合わされた切換要求認識部、比較器、切換ユニットＧ８０、ならびにこれらのあらゆる組み合わせに含まれていてもよい。このレジスタがこれら３つのコンポーネントの外部で、他の適当な個所に配置されていることも同様に考えられる。レジスタＧ４６０は、比較モードのとき有効になるべき割込みマスキングを含んでいる。切換・比較ユニットＧ４５０は、パフォーマンスモードから比較モードへの切換をするための信号を切換要求認識部Ｇ４０から受けとる。ステップＧ６００で割込みをロックできるようになってから、割込みコントローラＧ４２０ａ，Ｇ４２０ｂの割込みマスキングレジスタＧ４３０ａ，Ｇ４３０ｂが再プログラミングされる。このことは、切換信号が受信されて割込みコントローラＧ４２０ａ，Ｇ４２０ｂがロックされてから、切換・比較ユニットＧ４５０により他の同期化ステップと並行してハードウェアで行われる。割込みマスキングレジスタＧ４３０ａ，Ｇ４３０ｂが比較モードで個々に再プログラミングされるのではなく、常に中枢のレジスタＧ４６０が再プログラミングされるのが好都合である。そして、この中枢のレジスタから両方の割込みマスキングレジスタＧ４３０ａ，Ｇ４３０ｂへ、ハードウェアにより同期して転送が行われる。ここで割込みマスキングレジスタについて説明している方法は、割込みコントローラに配置されている、あらゆる割込み状態レジスタにも同様に転用することができる。当然ながら、レジスタＧ４６０に代えて、割込みマスキングレジスタＧ４３０ａ，Ｇ４３０ｂへできるだけ迅速に転送を行うことができる、別の記憶媒体を使用することも考えられる。
【００８３】
図１２では、２つの実行ユニットＧ１０１０ａ，Ｇ１０１０ｂと、切換・比較ユニットＧ１０２０と、３つの異なるレジスタセットＧ１０４０ａ，Ｇ１０４０ｂ，Ｇ１０５０を含む割込みコントローラＧ１０３０とを備えるマルチプロセッサシステムＧ１０００が提案されている。上に説明した解決法の代替案として、図１２に示すような特別な割込みコントローラＧ１０３０が提案される。この割込みコントローラは、本例では２つの実行ユニットＧ１０１０ａ，Ｇ１０１０ｂと、比較モードとパフォーマンスモードの間で切換を行うことができる切換・比較ユニットＧ１０２０とを備えるように構成された、マルチプロセッサシステムＧ１０００で用いられる。
【００８４】
このとき、パフォーマンスモードでは、レジスタセットＧ１０４０ａ，Ｇ１０４０ｂが用いられる。この場合、割込みコントローラＧ１０３０は、２つの割込みコントローラＧ４２０ａ，Ｇ４２０ｂとまったく同じように作用する。この挙動については図１１に図示され、説明されている。このときレジスタセットＧ１０４０ａは実行ユニットＧ１０１０ａに付属しており、レジスタセットＧ１０４０ｂは実行ユニットＧ１０１０ｂに付属している。割込みソースＧ１０６０ａからＧ１０６０ｎは、マスキングにより、実行ユニットＧ１０１０ａ，Ｇ１０１０ｂへ適当に配分される。パフォーマンスモードから比較モードへの切換時には、切換・比較ユニットＧ１０２０が信号Ｇ１０７０を生成する。この信号は、比較モードへ切換が行われること、ないしはシステムがこの時点まで比較モードで作動することを、割込みコントローラＧ１０３０に知らせる。その後、割込みコントローラＧ１０３０はレジスタセットＧ１０５０を使用する。それにより、両方の実行ユニットＧ１０１０ａ，Ｇ１０１０ｂで同じ割込み信号が発生することが保証される。比較モードから、切換・比較ユニットＧ１０２０が再び信号Ｇ１０７０を介して割込みコントローラＧ１０３０に通知をするパフォーマンスモードへ切り換わると同時に、レジスタセットＧ１０４０ａ，Ｇ１０４０ｂへの切換が再び行われる。このように、パフォーマンスモードではレジスタセットＧ１０４０ａ，Ｇ１０４０ｂへの書込みだけが許容され、比較モード用に留保されているレジスタセットＧ１０５０への書込みはハードウェアで禁じられることによって、相応のレジスタセットの保護を実現できるという利点がある。同様のことは逆の方向でも可能であり、比較モードではレジスタセットＧ１０５０への書込みだけが許容され、レジスタセットＧ１０４０ａ，Ｇ１０４０ｂへの書込みは禁じられる。
【００８５】
図１３には、比較器Ｍ５００，Ｇ２０のもっとも単純な形態が示されている。パフォーマンスモードと比較モードの間で切換が行われる少なくとも２つの実行ユニットＧ１０ａ，Ｇ１０ｂを備えるマルチプロセッサシステムＧ６０の主要なコンポーネントは、比較器Ｍ５００である。比較器がもっとも単純な形態で図１３に図示されている。この比較コンポーネントＭ５００は、２つのパルス信号Ｍ５１０およびＭ５１１を受けとることができ、これらの信号が同じかどうかを比較し、ここで説明しているコンテキストで言えば、特にビットごとに同じかどうかを比較する。同じである場合には、パルス信号Ｍ５１０，Ｍ５１１の値が出力信号Ｍ５２０へ送られ、エラー信号Ｍ５３０は有効にならず、すなわち「良好」の状態を通知する。信号が同じでないことを比較コンポーネントが検知すると、エラー信号Ｍ５３０が有効になる。その後、任意選択で、信号Ｍ５２０を無効にすることができる。このことは、エラーが相応のシステムから外へ出ないという利点がある（「故障封じ込め」）。すなわち、実行ユニットの外部にある他のコンポーネントが、潜在的にエラーを含んだ信号による被害を受けることがない。ただし、信号Ｍ５２０を無効にする必要のないシステムも存在している。それは、たとえばシステムレベルではフェールサイレンスしか求められていない場合に当てはまる。その場合には、たとえばエラー信号を外部へ送ることができる。
【００８６】
この基本システムを前提としたうえで、数多くの実施形態が考えられる。まず最初に、コンポーネントＭ５００をいわゆるＴＳＣコンポーネント（ｔｏｔａｌｌｙ  ｓｅｌｆ  ｃｈｅｃｋｉｎｇ）として製作することができる。この場合、エラー信号Ｍ５３０は少なくとも２本の回線（「デュアルレール」）で外部へと送られ、内部の設計・エラー発見対策により、比較コンポーネントの考えられる各々のエラー発生事例でこの信号が正しい状態で存在するか、または、明らかに正しくない状態で存在することが保証される。このときデュアルレール信号は２本の回線を介してバイナリー信号を提供し、エラーのない場合に両方の回線が互いに反転されるように提供するのが好ましい。本発明のシステムを適用するときの有利な１つの実施態様は、このようなＴＳＣ比較器を使用することである。
【００８７】
２番目の種類の実施形態は、両方のパルスＭ５１０，Ｍ５１１（ないしＭ６１０，Ｍ６１１）がどの程度の同期性を有していなくてはならないかという点で、上記と区別することができる。考えられる１つの実施形態は、クロック単位での同期性を特徴としており、すなわち、データの比較を１つのクロックで行うことができる。
【００８８】
それぞれのインプットの間に一定の位相ずれがあるときに、相応の信号をたとえば半整数または整数のクロック周期だけ遅延させる同期遅延素子を使用することによって、若干の変形例が得られる。このような位相ずれは、共通原因故障、すなわち複数の処理ユニットが同時に同種の影響を受ける可能性がある故障原因を回避するために有用である。
【００８９】
そこで図１４はさらに別の実施形態を示している。コンポーネントおよび信号Ｍ６００，Ｍ６１０，Ｍ６１１，Ｍ６２０，Ｍ６３０は、図１３の対応するコンポーネントおよび信号Ｍ５００，Ｍ５１０，Ｍ５１１，Ｍ５２０，Ｍ５３０と同じ意味を有している。そして図１４では、これらのコンポーネントに加えて、時間的に早いほうのインプットを位相ずれの分だけ遅延させるコンポーネントＭ６４０が挿入されている。この遅延素子は、比較モードのときにだけ使用するために、比較器に格納されているのが好ましい。その代替または補足として、純粋なクロックずれまたは位相ずれとして現れるのではない非同期性も、同じく許容できるようにするために、中間バッファＭ６５０，Ｍ６５１をインプットチェーンへ置くことができる。このような記憶装置は入力部と出力部を有しており、複数のメモリワードを記憶することができる。入ってきたメモリワードは、新しいメモリワードが到着すると位置をずらされていき、最後の位置（バッファの深度）の後に「記憶装置から外へ」押し出される。このようなバッファが設けられている場合、バッファの最大の深度まで非同期性を許容することができる。この場合には、バッファがオーバーフローになったときにもエラー信号が出力されなければならない。
【００９０】
さらに比較器の内部では、信号Ｍ５２０（またはＭ６２０）がどのようにして生起されるかという観点で実施形態を区別することができる。１つの有利な実施形態は、インプット信号Ｍ５１０，Ｍ５１１（ないしＭ６１０，Ｍ６１１）を出力部へと送り、スイッチによって接続部を遮断可能なようにすることにある。この実施形態の格別な利点は、パフォーマンスモードと、考えられる種々の比較モードとの間で切換をするために、同一のスイッチを利用できることである。別案として、比較器内部の中間記憶装置から信号を生起することもできる。
【００９１】
最後の種類の実施形態は、どれだけ多くのインプットが比較器に存在しており、比較器がどのように反応すべきか、という点で区別することができる。インプットが３つの場合、多数決投票を行うことができ、すなわち３つの信号すべての比較、または２つの信号だけの比較を行うことができる。４つまたはそれ以上のインプットがある場合には、これに対応する数の実施形態が考えられる。可能な実施形態の詳細な説明は、図２０の説明の部分に含まれている。
【００９２】
実施形態の厳密な選択は、システム全体のさまざまな動作モードと組み合わせて行うのが好ましい。すなわち、複数の異なるパフォーマンスモードまたは比較モードがあるときには、これらを比較器の対応するモードと組み合わせるのが好ましい。
【００９３】
本発明のいくつかの部位では、比較器またはより一般的な投票素子／処理素子／分類素子を、無効化もしくは受動化することが必要または有利である（以下においては便宜上常に比較器と呼ぶ）。そのためには数多くの方法がある。第１に、比較器が有効化または無効化される信号を比較器に送ることができる。そのために、これを実行することができる追加のロジックが比較器に挿入される。さらに別の方法は、比較されるべきデータを比較器に供給しないことである。３番目の方法は、比較器のエラー信号をシステムレベルで無視することにある。さらには、エラー信号そのものを遮断することもできる。どの方法にも共通しているのは、潜在的に比較される２つまたはそれ以上のデータが異なっていても、それがシステム内部で何の役割も演じないことである。これが該当するとき、比較器は受動的または無効であるとみなされる。
【００９４】
以下においては、比較器と接続された切換器の実装、すなわち切換・比較ユニットの実装について考察する。このような実装は、これらが実行ユニットＧ１０ａ，Ｇ１０ｂとともに１つのチップ内部で製作されている場合に格別に好都合である。
【００９５】
比較器および切換器の各コンポーネントをまとめることにより、チップ内部に実装したときに、非常に小さいハードウェアオーバーヘッドしか生じない。したがって実装の１つの有利な態様は、両方の部品を１つのコンポーネントにまとめることである。このことは、少なくとも入力信号（アウトプット実行ユニット１、アウトプット実行ユニット２）と、少なくとも出力信号（アウトプット１、アウトプット２）と、論理アウトプット信号「アウトプット全体」（これは物理的にアウトプット１またはアウトプット２と一致していてよい）と、比較器とを備えるコンポーネントである。このコンポーネントはモードを切り換える能力を有しており、パフォーマンスモードのときにはすべての信号を通過させ、比較モードのときには複数の信号を比較して、場合により通過させる。さらに、別の入力信号および出力信号を追加すると好ましい。すなわち、検知されたエラーを通知するためのエラー信号、このコンポーネントで成立しているモードを通知するためのモード信号、およびコンポーネントに出入りする制御信号である。
【００９６】
１つの有利な実施例では、パフォーマンスモードのとき、２つまたはそれ以上の実行ユニットがマスタとしてプロセッサ内部のバスに接続される。比較ユニットは無効化されるか、または、各実行ユニットの挙動が異なっている場合に、考えられる比較モードのうちの１つで生成されるエラー信号がマスキングされる。このことは、切換・比較ユニットがソフトウェアにとって透明であることを意味している。着目される比較モードでは、比較されるべき物理的な実行ユニットが論理的な実行ユニットとしてバスで処理され、すなわちマスタだけがバスに現れる。比較器のエラー信号は有効化される。そのために切換・比較ユニットは、１つを除くすべての実行ユニットをスイッチによってプロセッサ内部のバスから切り離し、この１つの論理的な実行ユニットの入力を複製して、比較モードに関与するすべての実行ユニットにこれらの入力を提供する。バスへ書込みをするときは、それぞれの出力が比較ユニットで比較され、同じであれば、これらのデータが既存の１つのアクセス部を介してバスへ書き込まれる。
【００９７】
図１５と図１６には、有利なコンポーネントＭ７００（切換・比較ユニット、Ｇ７０に相当）の原理的な挙動が説明されている。便宜上、この図面は２つの実行ユニットについてのみ描かれている。図１５は比較モード、図１６はパフォーマンスモードにおける各コンポーネントの状態をそれぞれ示している。これらのモードにおける異なるスイッチ位置は、制御部Ｍ７６０によってＭ７００で具体化される。両方の実行ユニットＭ７３０，Ｍ７３１は、当初、図１６に示すようにスイッチＭ７５０およびＭ７５１が閉じているときに、パフォーマンスモードでデータ・アドレスバスＭ７１０に書込みをすることができる。場合により生じる書込みのコンフリクトは、バスプロトコルによって解消されるか、または、図示しないそれ以外のコンポーネントによって解消されることを前提とする。比較モードでは、挙動が少なくとも論理的な視点から、別の挙動になる。図１５に示すようにスイッチＭ７５０，Ｍ７５１が開いており、したがって直接的なアクセス手段が遮断されている。逆に、図１６とは異なり、図１５ではスイッチＭ７５２，Ｍ７５３は閉じている。実行ユニットＭ７３０，Ｍ７３１の信号Ｍ７４０，Ｍ７４１は比較コンポーネントＭ７２０へと導かれる。比較コンポーネントは少なくとも、図１３に示すように、図１４に説明されているような拡張部も含むことができるように構成されている。ただし、比較コンポーネントのエラー信号あるいはその他の信号の図示は、図１５と図１６では省略されている。両方の信号が一致している場合にはスイッチＭ７５４が閉じ、一致している両方の信号のうちの一方がアドレス／データバスＭ７１０へ転送される。すなわち、そのためには切換・比較ユニットＭ７００が、スイッチＭ７５０−Ｍ７５４へ介入できることが必要である。そのつどのスイッチ位置は、モードとエラー認識とに依存して決まる。スイッチＭ７５４が常に閉じていてエラー信号により適当なシステム反応が生起される変形例も、上記の説明に包含される。
【００９８】
図１７には、切換・比較ユニットの変形例が示されている。２つの実行ユニットＧ１０ａ，Ｇ１０ｂだけを備える単純なシステムについてと同様に、切換・比較ユニットの具体化には数多くの態様がある。比較器でバッファが使用されない場合に格別に好ましい別の変形例が、図１７に示されている。図１５、図１６と同じく、実行ユニットの信号Ｍ８４０，Ｍ８４１がある。これらの信号は本図では図示されていない。本発明のコンポーネントＭ８００には、このコンポーネントのモードを設定するモードロジックＭ８１０がある。パフォーマンスモードでは、モードロジックがスイッチＭ８３１を閉じ、比較モードではこれを開く。さらにモードロジックは比較器Ｍ８２０にモード信号を送る。この具体化形態では比較器は常に比較を行うが、スイッチＭ８３０を制御するために、比較の結果とモード信号とを利用する。パフォーマンスモードではスイッチが常に閉じており、比較モードでは、エラーが発生していないときは常に閉じている。当然ながら、いったんエラーが確認された場合にも、相応のリセットが行われるまでスイッチを引き続き開いた状態に保つことができる。
【００９９】
図１８には、切換・比較ユニットのさらに別の実施形態が示されている。この代替案は、さらに多くのスイッチを備えているものの、その代わりに、パフォーマンスモードのときに比較器を無効にするので、いっそう簡単に非同期性を取り扱うことができる。さらに、実行ユニットの両方の信号Ｍ９４０，Ｍ９４１が存在している。これらの信号は、この図面でもやはり図示されていない。本発明のコンポーネントＭ９００には、このコンポーネントのモードを設定するモードロジックＭ９１０がある。パフォーマンスモードでは、モードロジックがスイッチＭ９３１を閉じ、スイッチＭ９３２，Ｍ９３３を開く。それにより、このモードでは比較コンポーネントＭ９２０にデータが供給されない。このことは、非同期が生じた場合にいっそう長いバッファ時間を可能にし、ないしは、１つの具体化形態ではいっそう小さいバッファ深度を可能にする。パフォーマンスモードでは、スイッチＭ９３０は常に閉じている。比較モードでは、コンポーネントＭ９１０はスイッチＭ９３２，Ｍ９３３を閉じて、スイッチＭ９３１の開放によるバスへの直接的なアクセスを遮断する。任意選択で、モードロジックＭ９１０は比較器Ｍ９２０にモードを通知することができる。比較モードでは、エラーが発生していない場合にはスイッチＭ９３０が閉じている。エラー発生時には、比較コンポーネントＭ９２０が、スイッチＭ９３０の開放によってバスへの信号Ｍ９４０の転送を遮断する。
【０１００】
上に説明した各図面では、モードまたはエラー信号を外部に送り出すことが、コストを要することなく可能である。さらには、特に内部のモード状態を生起するために、さらに別の信号をコンポーネントに送ることが問題なく可能である。
【０１０１】
つまり要約して言えば、このコンポーネントの有利な具体化形態は、出力信号をバス（たとえばアドレス／データバス）に書き込むことができる複数の処理ユニットが存在することを特徴としている。重要なのは、実行ユニットの出力信号のうち少なくとも２つをコンポーネントが処理することができ（たとえば比較し、あるいは場合により投票もしくは分類することができ）、コンポーネントが少なくとも１つのスイッチに介入することができ、このスイッチによって、少なくとも１つの直接的なバスアクセスが遮断されることである。このことは、実行ユニットがコンピュータのＣＰＵである場合に格別に有用である。さらに、介入可能なスイッチの状態が、計算ユニットの動作モードを特徴づけるのが好ましい。
【０１０２】
コンポーネントがアドレス・データバスに信号を送ることができると、システム特性、特に可能な比較モードを格別にうまく具体化することができる。これは、１つの実行ユニットの１つの出力信号の導通であるのが好ましい。別案として、このことは、異なる実行ユニットの異なる出力信号の処理の結果として行うこともできる。
【０１０３】
たとえばすでに図１７、図１８に関する説明で明らかとなっているように、システムにおいて、および（コンポーネントへの分割状態に応じて）各コンポーネントのうちの１つにおいて、モード情報を識別することができる。このモード情報は、具体化形態によっては、明らかに部分コンポーネントに存在することさえできる。１つの有利な具体化形態では、この信号をコンポーネントから導出して、システムの他の部分に提供することができる。
【０１０４】
一般的なケースでは、本発明に基づく挙動を図２１を参照して説明することができる。信号およびコンポーネントＮ１００，Ｎ１１０，Ｎ１２０，Ｎ１３０，Ｎ１４０，Ｎ１４１，Ｎ１４２，Ｎ１４３，Ｎ１４ｎ，Ｎ１６０，Ｎ１６１，Ｎ１６２，Ｎ１６３，Ｎ１６ｎは、図２０と同じ意味を有している。これに加えて、モード信号Ｎ１５０およびエラー信号Ｎ１７０が本図には図示されている。任意選択のエラー信号は、エラー信号を集めるエラー回路ロジックＮ１３０によって生起されるものであり、個々のエラー信号をそのまま転送したものか、またはそこに含まれるエラー情報を束ねたものである。モード信号Ｎ１５０は任意選択であるが、このコンポーネント外部でのモード信号の利用は多くの個所で有利であり得る。切換ロジックＮ１１０の情報（すなわち図２０の説明で述べた機能）と、処理ロジックの情報（すなわち出力信号ごとの、つまり関数値ごとの比較演算の決定）とを組み合わせたのがモード情報であり、モード情報がモードを決定する。この情報は、一般的なケースでは当然ながら多価であり、つまり１つの論理ビットだけで表すことはできない。理論上考えられるすべてのモードが所与の具体化形態で有意義なわけではなく、許容されるモードの数を制限しておくのが好ましい。そしてモード信号は、関連するモード情報を外部へと運び出す。ＨＷの具体化形態は、外部で目に見えるモード信号をコンフィギュレーションできるように構成されているのが好ましい。処理ロジックと切換ロジックをコンフィギュレーション可能に構成することも、同じく好ましい。これらのコンフィギュレーションが相互に調整されていると好ましい。別案として、モード信号の変更だけを外部に知らせるか、もしくは、モード信号の変更を補足的に外部に知らせることもできる。このことは、特にデュアル式のコンフィギュレーションで利点を有している。
【０１０５】
このモード信号は防護されるのが好ましい。デュアルシステムでの１つの具体化形態が、一例として図１７に示す具体化形態をベースとしたうえで、図１９に示されている。ここでは、信号Ｍ８５０が切換・比較ユニットから導出される。デュアルシステムでは、この情報は論理的に１つのビットで表すことができる。そして、特にデュアルレール信号によって防護を行うことができる。一般的なケースでは、任意選択で反転された二重化によっても、同じく防護を行うことができる。別案として、特に内部で本質安全性をもって生起される、またはＣＲＣ（巡回冗長検査）もしくはＥＣＣ（誤り訂正符合）を使用する、パリティを生起することもできる。
【０１０６】
モード信号は、コンポーネントの外部で利用することができる。第１に、オペレーティングシステムの自己監視のためにモード信号を利用することができる。オペレーティングシステムは、ＳＷの視点から見て切換の責任を負っており、システムがどのモードになっているかを常に知っているべきであり、また、そのモードにシステムを移すべきである。したがってこの信号のチェックを、防護のために利用することができる。このことは、まず第１に直接的に行うことができる。あるいは別案の方法は、タイマーまたはその他の「独立した」ユニットを介して、オペレーティングシステムへの問い合わせの妥当性をこの信号で判断することである。
【０１０７】
一般に、この信号は任意選択で、μＣ（あるいはより一般的な計算ユニット）の他のデータシンクで利用することもできる。たとえばＭＰＵ（メモリ保護ユニット）は、特定の（特定の実行ユニットからの）メモリアクセスを特定のモードでしか許容しないようにプログラミングされていてよい。このときＭＰＵとは、たとえば特定のプログラム部分について特定のアドレス空間へのアクセスを禁止することによって、データ／アドレスバスへ許容されたアクセスだけが行われることを保証することができるユニットである。モード信号をＭＰＵへ送り込み、このＭＰＵを相応にコンフィギュレーションおよびプログラミングし、このコンフィギュレーションデータとモード信号を評価することで、追加的な防護を行うことができる。モード信号がすでに監視のための十分な情報となっている場合、状況によっては、このことがプログラミングを簡素化する場合さえある。そうすれば、μＣを初期化する時間に準静的なプログラミングをするだけで足りる。周辺装置ユニットについても同様のことが当てはまる。その場合にも、相応の周辺素子へのアクセスが特定のモードでしか許容されないアプリケーションが存在している。モード信号を周辺素子へ送り込み、周辺素子を相応にコンフィギュレーションおよびプログラミングし、このコンフィギュレーションデータとモード信号を評価することで、追加的な防護を行うことができる。モード信号がすでにチェックのための十分な情報となっている場合、状況によっては、このことがプログラミングを簡素化する場合さえある。そうすれば、μＣを初期化する時間に準静的なプログラミングをするだけで足りる。同様に、この信号の評価を割込みコントローラでも利用することができる。その場合、このような監視は安全性コンセプトの土台もしくは主要な構成要素をなすことができる。適当な施工形態とＳＷの構造化によって、着目されるアプリケーションにおける故障の種類全体の安全性コンセプトを、このモード信号可能を基礎として構成することができる。このことは、特にモード信号が適当な形態で、上に説明したように本質安全性を備えている場合に好ましい。さらにこの場合、着目するコンポーネントが、モード信号と自分自身へのアクセスとの間に不一致を検知した場合にエラー信号を送信する手段、または遮断経路を操作する手段を有していると好ましい。
【０１０８】
さらに別の重要な利用目的は、計算ユニットの外部でモード信号を評価することである。１つの直接的な用途は、減分式のウォッチドッグで評価をすることにある。このような「ウォッチドッグ」は、マイクロプロセッサによって整数の値にセットすることができる少なくとも１つの（カウンタ）レジスタで構成されている。このようなレジスタがセットされた後、「ウォッチドッグ」がレジスタの値を定まった周期で自動的に減分していく。レジスタの値がゼロになると、またはオーバーフローが発生すると、「ウォッチドッグ」がエラー信号を生成する。エラー信号が生成されないようにするには、マイクロプロセッサがレジスタの値を適時に再びリセットしなければならない。それにより、マイクロプロセッサがソフトウェアを正しく実行しているかどうかを、（一定の限度内で）チェックすることができる。マイクロプロセッサがソフトウェアを正しく実行しなくなると、この場合には「ウォッチドッグ」も正しく操作されておらず、そのために「ウォッチドッグ」によってエラー信号が生成されると想定される。ハードウェアとデータ構造の完全性を、比較モードのときに高い信頼度でチェックすることができるが、そのためには、マイクロプロセッサが規則的に比較モードへ再び復帰することが保証されていなければならない。したがって、ここで説明している「ウォッチドッグ」の役割は、定義された期間内にウォッチドッグがリセットされなかったときにエラー信号を生成するだけでなく、定義された期間内にマイクロプロセッサが定義された比較モードへ復帰しなかったときにも、エラー信号を生成することにある。たとえば、モード信号が、定義された計算ユニットの比較モードを表示したときにだけ、「ウォッチドッグ」をリセットすることができる。それにより、計算ユニットが規則的にこのモードへ復帰することが保証される。この代替または補足として、マイクロプロセッサで特定の割込みが惹起されたときに初めて、「ウォッチドッグ」のレジスタの値が減分される。そのためには、μＣの外部割込み信号がウォッチドッグにも結合されなくてはならない。ウォッチドッグには、μＣのどの割込みが定義された比較モードに切り換わるかが記憶されている。このような割込みがかけられると、ウォッチドッグはただちに「巻き戻され」、正しいモード信号の存在によってリセットされる。
【０１０９】
ごく一般的に、特に安全性コンセプトに適用する場合には、μＣ外部のソースでモード信号を評価するのが有用である。本発明で説明しているようなコンピュータでの、ソフトウェアの正しい進行の確保に関して重要な点は、許容されるさまざまなモード間での正しい切換である。まず初めに切換能力そのものがチェックされ、さらに、正しい切換がチェックされるのが望ましい。上に説明したように、特別なモードが規則的に成立するかどうかに注目することもできる。モード信号そのものが本質安全性を備える構成となっている場合には、常にこのような方法が格別に好ましい。
【０１１０】
１つの可能性は、モード信号をＡＳＩＣまたはその他のμＣへ送ることにある。このようなＡＳＩＣまたはその他のμＣは、タイマーと単純なロジックを介して、少なくとも次のような事項をこの信号を用いてチェックすることができる：
計算ユニットは十分な頻度で（たとえば遅くとも１０００μｓごと）１つまたは複数の定義されたモードに変わっているか？
何らかのモードへ切り換わるとき、特定の信号が常に出力されているか？
計算ユニットは規則的に１つのモードから他のモードになっているか？
各モードの順序の特定の単純なパターンが有効になっているか？
一般的な時間的パターンが有効になっているか（たとえばモード１では平均＜７０％、モード２では＜５０％）。
【０１１１】
場合により追加の信号の利用によって補足される、モード信号の論理的、時間的な特性の何らかの組み合わせ。
【０１１２】
図２２には、上記の範囲をさらに超える提案の基本コンフィギュレーションが説明されている。このようなパートナーＡＳＩＣまたはパートナーμＣと、本発明を備えている着目する計算ユニットとの間で、特別な照会応答サイクルが行われる。Ｎ３００は、このようなモード信号を出力することができる計算ユニットである。これは、たとえば複数の実行ユニットと、このモード信号を生起することができる別のコンポーネントとを備えるμＣであってよい。この別のコンポーネントは、たとえば図１９または図２１に示すように具体化されていてよい。Ｎ３００は、この信号Ｎ３１０をパートナー（たとえば他の計算ユニット、他のμＣまたはＡＳＩＣ）へ送る。パートナーは、信号Ｎ３２０によってＮ３００に照会を行うことができ、Ｎ３００は、Ｎ３２１によってこれに応答しなければならない。このような照会は計算タスクであってよく、その正しい結果が、Ｎ３２１を介して、定義された時間インターバル内にＮ３００から供給される。Ｎ３３０はＮ３００に関わりなく、この結果の正しさを検査する。この結果はたとえばＮ３３０に保存されるか、またはＮ３３０は結果を自ら算出することができる。正しくない値が検知されると、エラーが生じているものと認識される。ここで提案される照会応答通信の特別な点は、応答と並行してモード信号が観察されることである。照会は、Ｎ３００による応答のために、この特定のモードを成立させなくてはならないように行うのが好ましい。それにより、すべてのモード切換に機能性があり、プログラム進行のなかで意図されているモード切換が実行されていることを、高い信頼度でチェックすることができる。これは特にシステムが初期化されるとき、あるいは動作中にでも、安全性コンセプトの主要な要素としての役目を果たすことができる。
【０１１３】
この理念のさらに別の用途は、アクチュエータ制御部でモード信号を評価することにある。今日、自動車分野の多くの用途では、いわゆるインテリジェントアクチュエータが用いられる傾向がある。これは、アクチュエータ調節コマンドを受信し、そしてこの調節コマンドが遂行されるようにアクチュエータを制御するのに十分な、最低限の範囲の電子装置を備えているアクチュエータである。
【０１１４】
この基本的理念が図２３に示されている。本発明を備えている計算ユニットＮ４００が、接続部Ｎ４２０を介して、（インテリジェント）アクチュエータまたはアクチュエータ制御部Ｎ４３０に調節コマンドを送る。これと並行して計算ユニットは、接続部Ｎ４１０を介して、モード信号をこのアクチュエータに送る。アクチュエータＮ４３０は、モード信号を参照して、制御が許容されているかどうかを検査し、任意選択で、信号Ｎ４４０を通じてエラー状態を送り返す。制御にエラーが含まれているときは、システム内部でクリティカルでないフェールサイレンス状態をとる。
【図面の簡単な説明】
【０１１５】
【図１】２つの実行ユニットＧ１０ａ，Ｇ１０ｂと、比較ユニットＧ２０と、切換ユニットＧ５０と、切換要求認識ユニットＧ４０とを備えるマルチプロセッサシステムＧ６０を示す図である。
【図２】２つの実行ユニットＧ１０ａ，Ｇ１０ｂと、比較ユニットＧ２０および切換ユニットＧ５０で構成される組み合わされた比較・切換ユニットＧ７０と、切換要求認識ユニットＧ４０とを備えるマルチプロセッサシステムＧ６０を示す図である。
【図３】２つの実行ユニットＧ１０ａ，Ｇ１０ｂと、比較ユニットＧ２０および切換ユニットＧ５０および切換要求認識ユニットＧ４０で構成される組み合わされた切換要求・比較・切換ユニットＧ８０とを備えるマルチプロセッサシステムＧ６０を示す図である。
【図４】２つの実行ユニットＧ２１０ａ，Ｇ２１０ｂと、切換・比較ユニットＧ２６０とを備えるマルチプロセッサシステムＧ２００である。
【図５】特別なパイプライン段階Ｇ２３０ａ，Ｇ２３０ｂの内部で、特別なビットコンビネーションがＮＯＰまたはその他のニュートラルなビットコンビネーションと交換される方法を示すフローチャートである。
【図６】２つの実行ユニットＨ２１０ａ，Ｈ２１０ｂと、切換・比較ユニットＨ２６０とを備えるマルチプロセッサシステムＨ２００を示す図である。
【図７】２つの実行ユニットを備えるマルチプロセッサシステムで比較モードからパフォーマンスモードへ切り換えるときに、ユニットＩＤを利用してプログラムフローを分割することができる方法を示すフローチャートである。
【図８】３つの実行ユニットを備えるマルチプロセッサシステムで比較モードからパフォーマンスモードへ切り換えるときに、ユニットＩＤを利用してプログラムフローを分割することができる、考えられる方法を示す図である。
【図９】パフォーマンスモードから比較モードへの切換時に実行ユニットを同期化する方法を示すフローチャートである。
【図１０】パフォーマンスと比較モードの間の切換を表現するステートマシンを示す図である。
【図１１】２つの実行ユニットならびに２つの割込みコントローラＧ４２０ａ，Ｇ４２０ｂ、およびその内部に含まれる割込みマスキングレジスタＧ４３０ａ，Ｇ４３０ｂと、さまざまな割込みソースＧ４４０ａからＧ４４０ｎとを備えるマルチプロセッサシステムＧ４００を示す図である。
【図１２】２つの実行ユニットと、切換・比較ユニットと、３つのレジスタセットを含む割込みコントローラとを備えるマルチプロセッサシステムを示す図である。
【図１３】比較器のもっとも単純な形態を示す図である。
【図１４】位相ずれを補正するためのユニットを備える比較器を示す図である。
【図１５】有利なコンポーネントＭ７００（切換・比較ユニット）の比較モードのときの原理的な挙動を説明する図である。
【図１６】有利なコンポーネントＭ７００（切換・比較ユニット）のパフォーマンスモードのときの原理的な挙動を説明する図である。
【図１７】切換・比較ユニットの１つの実施形態を示す図である。
【図１８】切換・比較ユニットの別の実施形態を示す図である。
【図１９】モード信号を生成する切換・比較ユニットを示す図である。
【図２０】切換・比較ユニットの一般的な図面を示す図である。
【図２１】一般的なモードと一般的なエラー信号を生成する切換・比較ユニットの一般的な図面を示す図である。
【図２２】外部ユニットとの質問・応答コミュニケーションを示す図である。
【図２３】インテリジェントなアクチュエータとのコミュニケーションを示す図である。
【図１】
2008518300.tif 000003
【図２】
2008518300.tif 000004
【図３】
2008518300.tif 000005
【図４】
2008518300.tif 000006
【図５】
2008518300.tif 000007
【図６】
2008518300.tif 000008
【図７】
2008518300.tif 000009
【図８】
2008518300.tif 000010
【図９】
2008518300.tif 000011
【図１０】
2008518300.tif 000012
【図１１】
2008518300.tif 000013
【図１２】
2008518300.tif 000014
【図１３】
2008518300.tif 000015
【図１４】
2008518300.tif 000016
【図１５】
2008518300.tif 000017
【図１６】
2008518300.tif 000018
【図１７】
2008518300.tif 000019
【図１８】
2008518300.tif 000020
【図１９】
2008518300.tif 000021
【図２０】
2008518300.tif 000022
【図２１】
2008518300.tif 000023
【図２２】
2008518300.tif 000024
【図２３】
2008518300.tif 000025
【国際調査報告】
2008518300.tif 000026
2008518300.tif 000027
2008518300.tif 000028
2008518300.tif 000029
2008518300.tif 000030
2008518300.tif 000031