JP2008518300A - 少なくとも2つの実行ユニットを備えるコンピュータシステムにおけるプログラムコードの処理分割方法および装置 - Google Patents
少なくとも2つの実行ユニットを備えるコンピュータシステムにおけるプログラムコードの処理分割方法および装置 Download PDFInfo
- Publication number
- JP2008518300A JP2008518300A JP2007537292A JP2007537292A JP2008518300A JP 2008518300 A JP2008518300 A JP 2008518300A JP 2007537292 A JP2007537292 A JP 2007537292A JP 2007537292 A JP2007537292 A JP 2007537292A JP 2008518300 A JP2008518300 A JP 2008518300A
- Authority
- JP
- Japan
- Prior art keywords
- mode
- switching
- unit
- comparison
- execution unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 64
- 238000012545 processing Methods 0.000 claims abstract description 25
- 230000008569 process Effects 0.000 claims abstract description 14
- 230000000873 masking effect Effects 0.000 claims description 18
- 238000003860 storage Methods 0.000 claims description 11
- 238000004148 unit process Methods 0.000 claims description 2
- 238000000926 separation method Methods 0.000 abstract 1
- 230000007704 transition Effects 0.000 description 18
- 239000000872 buffer Substances 0.000 description 9
- 230000006399 behavior Effects 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 7
- 230000009977 dual effect Effects 0.000 description 7
- 230000002093 peripheral effect Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 230000001360 synchronised effect Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000010363 phase shift Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 230000001960 triggered effect Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000007935 neutral effect Effects 0.000 description 4
- 241000761456 Nops Species 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 108010020615 nociceptin receptor Proteins 0.000 description 3
- 238000012935 Averaging Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- JJWKPURADFRFRB-UHFFFAOYSA-N carbonyl sulfide Chemical compound O=C=S JJWKPURADFRFRB-UHFFFAOYSA-N 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 239000013589 supplement Substances 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1629—Error detection by comparing the output of redundant processing systems
- G06F11/1641—Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1629—Error detection by comparing the output of redundant processing systems
- G06F11/1654—Error detection by comparing the output of redundant processing systems where the output of only one of the redundant processing components can drive the attached hardware, e.g. memory or I/O
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1695—Error detection or correction of the data by redundancy in hardware which are operating with time diversity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/845—Systems in which the redundancy can be transformed in increased performance
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Multimedia (AREA)
- Hardware Redundancy (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
- Advance Control (AREA)
Abstract
少なくとも2つの実行ユニットを備えるコンピュータシステムでプログラムコードの処理を分割する方法および装置であって、少なくとも2つの動作モードの間で切換が行われ、第1の動作モードは比較モードに相当するとともに第2の動作モードはパフォーマンスモードに相当しており、比較モードでは少なくとも2つの実行ユニットが同じプログラムコードを処理する形式のものにおいて、比較モードからパフォーマンスモードへの切換時に、各々の実行ユニットに識別子が割り当てられ、前記識別子に依存して少なくとも2つの実行ユニットに異なるプログラムコードが割り当てられることによって、プログラムコードの分割が行われることを特徴とする。
Description
α粒子や宇宙線によって引き起こされる過渡的なエラーは、集積半導体回路にとって大きな問題になりつつある。構造幅の減少、電圧の低下、および高いクロック周波数のために、α粒子や宇宙線によって引き起こされる電圧ピークが、集積回路の論理値を狂わせる確率が高くなる。その結果、誤った計算結果が生じる可能性がある。したがって、特に自動車などの安全性関連のシステムでは、そのようなエラーを確実に検知しなければならない。
電子装置の誤動作を確実に検知しなければならない、たとえば自動車のABSコントロールシステムなどの安全性関連のシステムでは、このようなシステムの制御装置において、エラー認識をするための冗長性が利用されるのが普通である。たとえば公知のABSシステムでは、一式のマイクロコントローラが二重に構成されており、すべてのABS機能が冗長的に計算されて、互いに一致しているかどうか検査される。結果に矛盾が生じると、ABSシステムの動作がオフになる。
マイクロコントローラの主要なコンポーネントは、第1に、記憶装置モジュール(たとえばRAM,ROM、キャッシュ)、コア、入力/出力インタフェース、いわゆる周辺装置(たとえばA/D変換器、CANインタフェース)で構成されている。記憶素子は検査コード(パリティまたはECC)で効率的に監視することができ、周辺装置はしばしばアプリケーション固有のやり方で、センサ信号経路またはアクチュエータ信号経路の一部として監視されるので、今後の冗長性への取り組みは、マイクロコントローラのコアの単独での二重化に関して進められる。
このように2つのコアが統合されたマイクロコントローラは、デュアルコアアーキテクチャとも呼ばれている。両方のコアは同じプログラムセグメントを冗長的に、かつクロック同期された状態で実行し(ロックステップモジュール)、両方のコアの結果が比較されて、一致しているかどうかの比較の際に誤りが発見される。このようなデュアルコアシステムのコンフィギュレーションは、比較モードと称されている。
デュアルコアアーキテクチャは、さらに別の用途では性能向上のために利用されており、すなわちパフォーマンス向上のために利用されている。両方のコアが異なるプログラム、異なるプログラムセグメント、異なるコマンドを実行し、それによって性能向上を実現することができる。このようなデュアルコアシステムのコンフィギュレーションは、パフォーマンスモードと称されている。このようなシステムは対称型マルチプロセッサシステム(SMP)とも呼ばれる。
かかるシステムの1つの拡張形として、特別なアドレスへのアクセスと、専用化されたハードウェア装置とによって、これら両方の方式をソフトウェアで切り換える方式が知られている。比較モードのときには、コアの出力信号が相互に比較される。パフォーマンスモードのときには、両方のコアが対称型マルチプロセッサシステム(SMP)として作動し、異なるプログラム、異なるプログラムセグメント、または異なるコマンドを実行する。
しかし、上記のようなシステムでは、比較モードからパフォーマンスモードへ移行するときに、プログラムフローを適正に分割することが問題となる。したがって本発明の課題は、かかる分割処理を簡単な形態で可能にする方法および手段を提供することにある。
少なくとも2つの実行ユニットを備えるコンピュータシステムにおいてプログラムコードの処理を分割する方法であって、少なくとも2つの動作モードの間で切換が行われ、第1の動作モードは比較モードに相当するとともに第2の動作モードはパフォーマンスモードに相当しており、比較モードでは少なくとも2つの実行ユニットが同じプログラムコードを処理する方法において、比較モードからパフォーマンスモードへの切換時に、各々の実行ユニットに識別子が割り当てられ、識別子に依存して少なくとも2つの実行ユニットに異なるプログラムコードが割り当てられることによって、プログラムコードの分割が行われることを特徴とする方法を適用するのが好ましい。
識別子が、実行ユニットの記憶装置、特にレジスタにそれぞれ含まれている方法を適用するのが好ましい。
識別子が、実行ユニットの状態レジスタにそれぞれ含まれている方法を適用するのが好ましい。
識別子が、実行ユニットの割込み状態レジスタにそれぞれ含まれている方法を適用するのが好ましい。
識別子が、実行ユニットの割込みマスキングレジスタにそれぞれ含まれている方法を適用するのが好ましい。
各々の実行ユニットの識別子に依存して設定可能なアドレスが参照され、このアドレスで開始されるプログラムコードを各実行ユニットが処理する方法を適用するのが好ましい。
設定可能なアドレスのそのつどの参照がアドレスポインタによって行われる方法を適用するのが好ましい。
設定可能なアドレスのそのつどの参照がジャンプ命令によって行われる方法を適用するのが好ましい。
各々の識別子が少なくとも1つの設定された識別子と比較され、一致している場合には設定されたプログラムコードが割り当てられる方法を適用するのが好ましい。
各々の識別子が少なくとも1つの設定された識別子と比較され、すべての識別子が一致していない場合には、定義されていない状態につながるはずの結果が認識される方法を適用するのが好ましい。
少なくとも2つの実行ユニットを備えるコンピュータシステムでプログラムコードの処理を分割する装置であって、少なくとも2つの動作モードの間で切換が行われ、第1の動作モードは比較モードに相当するとともに第2の動作モードはパフォーマンスモードに相当しており、比較モードでは少なくとも2つの実行ユニットが同じプログラムコードを処理する装置において、前記装置は、比較モードからパフォーマンスモードへの切換時に、各々の実行ユニットに識別子が割り当てられ、識別子に依存して少なくとも2つの実行ユニットに異なるプログラムコードが割り当てられることによって、プログラムコードの分割が行われるように構成されていることを特徴とする装置を適用するのが好ましい。
各々の実行ユニットの識別子が保存されている記憶装置、特にレジスタを含んでいる装置を適用するのが好ましい。
各々の実行ユニットが、実行ユニットの識別子がそれぞれ保存されている状態レジスタを含んでいる装置を適用するのが好ましい。
実行ユニットの識別子が保存されているとも1つの割込み状態レジスタを含んでいる装置を適用するのが好ましい。
実行ユニットの識別子が保存されているとも1つの割込みマスキングレジスタを含んでいる装置を適用するのが好ましい。
少なくとも2つの実行ユニットを備えるコンピュータシステムでプログラムコードの処理を分割する装置を有しているコンピュータシステムの実行ユニットであって、少なくとも2つの動作モードの間で切換が行われ、第1の動作モードは比較モードに相当するとともに第2の動作モードはパフォーマンスモードに相当しており、比較モードでは少なくとも2つの実行ユニットが同じプログラムコードを処理する実行ユニットにおいて、前記装置は、比較モードからパフォーマンスモードへの切換時に、各々の実行ユニットに識別子が割り当てられ、識別子に依存して少なくとも2つの実行ユニットに異なるプログラムコードが割り当てられることによって、プログラムコードの分割が行われるように構成されていることを特徴とする実行ユニットを適用するのが好ましい。
2つの実行ユニットと、少なくとも2つの実行ユニットを備えるコンピュータシステムでプログラムコードの処理を分割する装置とを備えるコンピュータシステムであって、少なくとも2つの動作モードの間で切換が行われ、第1の動作モードは比較モードに相当するとともに第2の動作モードはパフォーマンスモードに相当しており、比較モードでは少なくとも2つの実行ユニットが同じプログラムコードを処理するコンピュータシステムにおいて、前記装置は、比較モードからパフォーマンスモードへの切換時に、各々の実行ユニットに識別子が割り当てられ、識別子に依存して少なくとも2つの実行ユニットに異なるプログラムコードが割り当てられることによって、プログラムコードの分割が行われるように構成されていることを特徴とするコンピュータシステムを適用するのが好ましい。
その他の利点および有利な実施形態は、特許請求の範囲ならびに発明の詳細な説明の構成要件から明らかである。
以下において、実行ユニットには、プロセッサ、コア、CPUばかりでなく、FPU(浮動小数点演算ユニット)、DSP(デジタル信号プロセッサ)、コプロセッサ、ALU(算術論理演算ユニット)なども含まれるものとする。
図1には、2つの実行ユニットG10a,G10bと、比較ユニットG20と、切換ユニットG50と、切換要求認識ユニットG40とを備えるマルチプロセッサシステムG60が示されている。
本発明は、少なくとも2つの実行ユニットG10a,G10bと、比較ユニットG20と、切換ユニットG50と、切換要求認識ユニットG40とを備える、図1、図2、図3に示すマルチプロセッサシステムG60に関わるものである。切換ユニットG50は、少なくとも2つのシステムインタフェースG30a,G30bへと通じる少なくとも2つの出力部を有している。これらのインタフェースを介して、レジスタ、メモリ、または周辺装置、たとえばデジタル出力部、D/Aコンバータ、通信コントローラなどを制御することができる。このマルチプロセッサシステムは、比較モード(VM)およびパフォーマンスモード(PM)という少なくとも2つの動作モードで作動させることができる。
パフォーマンスモードでは、異なる実行ユニットで、異なるコマンド、異なるプログラムセグメント、または異なるプログラムが実行される。この動作モードでは比較ユニットG20は無効になる。この動作モードのとき、切換ユニットG50は、各々の実行ユニットG10a,G10bがシステムインタフェースG30a,G30bと接続されるように構成されている。このとき、実行ユニットG10aはシステムインタフェースG30aと接続され、実行ユニットG10bはシステムインタフェースG30bと接続される。
比較モードのときには、両方の実行ユニットG10a,G10bで同一または同種のコマンド、プログラムセグメント、またはプログラムが処理される。これらのコマンドはクロック同期して処理されるのが通常であるが、非同期状態での処理、もしくは定義されたクロックオフセット状態での処理でも良い。実行ユニットG10a,G10bの出力信号が、比較ユニットG20で比較される。相違していればエラーが認識され、相応の措置を講じることができる。この措置としては、エラー信号を出したり、エラー処置を開始したり、スイッチを操作したりすることであるが、これらの措置およびその他の措置の組み合わせであってよい。切換ユニットG50は、1つの実施形態では、1つの信号だけがシステムインタフェースG30a,G30bに送られるように構成されている。別の構成では、切換ユニットは、比較された信号すなわち同じ信号だけが、システムインタフェースG30a,G30bへ送られるように作用する。
切換要求認識部G40は、現在どのモードが有効になっているかに関わりなく、他のモードへの切換要求を検知する。
図2には、2つの実行ユニットG10a,G10bと、比較ユニットG20および切換ユニットG50で構成される組み合わされた比較・切換ユニットG70と、切換要求認識ユニットG40とを備えるマルチプロセッサシステムG60が示されている。
上に説明した事項の1つの実施形態では、図2に示すように、切換ユニットG50と比較ユニットG20を共通の切換・比較ユニット(UVE)G70にまとめることができる。その場合、この共通のコンポーネントG70は個々のコンポーネントG50,G20の役割を担うことになる。図15、図16、図17、図18、および図19にはUVEG70の実施形態が示されている。
図3に示す別の実施形態では、切換要求認識部G40、比較器G20、および切換ユニットG50が、共通のコンポーネントG80にまとめられている。図示省略のさらに別の実施形態では、切換要求認識部G40と比較器G20が共通のコンポーネントにまとめられていてよい。切換要求認識部40を切換器G50とともに共通のコンポーネントにまとめることも、同様に考えられる。
以下の説明では、別段の記載がない限り、切換要求認識部G40と、組み合わされた切換・比較ユニットG70とが設けられていることを前提とする。
2つを超える実行ユニットを用いる場合も含めた、一般的な切換・比較コンポーネントの事例が図20に示されている。考慮に入れるべきn個の実行ユニットから、n個の信号N140,...,N14nが切換・比較コンポーネントN100へ送られる。切換・比較コンポーネントはこれらの入力信号から、最大でn個の出力信号N160,...,N16nを生成することができる。もっとも単純なケースである「純粋なパフォーマンスモード」では、すべての信号N14iが、対応する出力信号N16iへと導かれる。これと逆の境界事例である「純粋な比較モード」では、すべての信号N140,...,N14nが、それぞれの出力信号N16iのうちのちょうど1つだけに導かれる。
本図面を参照すると、考えられるさまざまなモードを、どのようにして成立させることができるかを説明することができる。そのために、この図面には切換論理部N110の論理コンポーネントが含まれている。これらのコンポーネントは、独自のコンポーネントとして設けられている必要はない。重要なのは、ここで説明する機能がシステムで具体化されていることである。切換論理部N110は、最初に、どれだけの数の出力信号が存在しているかを判定する。その次に切換論理部は、どの入力信号がどの出力信号に寄与しているかを判定する。このとき、1つの入力信号がちょうど1つの出力信号に寄与することができる。つまり数学的な形で別に表現すれば、集合{N140,...,N14n}の各要素に、集合{N160,...,N16n}の1つの要素が割り当てられる関数が、切換論理部によって定義される。
そして処理論理部N120が、各々の出力N16iについて、その出力部に入力がどのような形で寄与しているかを判定する。これらのコンポーネントも、独自のコンポーネントとして存在していなくてもよい。やはり重要なのは、ここで説明する機能がシステムで具体化されていることである。さまざまなバリエーションの可能性の一例を説明するために、一般性を限定することなく、信号N141,...,N14mによって出力N160が生成されるものと仮定する。m=1ならば、これは信号が単純に通過することに相当しており、m=2であれば、たとえば図13、図14の比較器のところで一例を説明するように、信号N141,N142が比較される。この比較は同期または非同期の状態で行うことができ、ビットごとに行うか、または有意なビットに関してだけ行うか、あるいは許容幅を用いて行うこともできる。
第1の選択肢のポイントは、すべての信号を比較し、少なくとも2つの異なる値が存在するときはエラーを検知することにあり、任意選択で、このエラーを報知することができる。
第2の選択肢のポイントは、m個からk個を選択することにある(k>m/2)。この選択は、比較器を使用することによって具体化することができる。任意選択で、信号のうちの1つが相違していると認識されたときに、エラー信号を生起することができる。3つすべての信号が相違しているときは、場合により、これと異なるエラー信号を生起することができる。
第3の選択肢のポイントは、これらの値をアルゴリズムに供給することにある。これは、たとえば平均値の形成、中央値の形成、またはフォールトトレラントアルゴリズム(FTA)の使用によって行うことができる。このようなFTAは、入力値の極値を排除して、残りの値で一種の平均化を行うことに依拠している。この平均化は残りの値の集合全体で行うことができ、または特に、HWで容易に形成することができる部分集合で行うことができる。この場合、数値を実際に比較することは必ずしも必要ではない。たとえば平均値形成の場合には加算と除算をするだけでよく、FTM,FTA,または中央値には一部の選別が必要である。場合により十分に大きい極値があるときは、任意選択で、この場合にもエラー信号を出力することができる。
複数の信号を1つの信号に処理する上に挙げたこれら種々の選択肢を、便宜上、比較演算と呼ぶことにする。
つまり処理論理部の役割は、各々の出力信号について(および、これに伴って付属する入力信号についても)、比較演算の厳密な形態を定めることにある。切換論理部N110の情報(すなわち前述した関数)と処理論理部の情報(すなわち出力信号ごとの、すなわち関数値ごとの比較演算の決定)とを組み合わせたものがモード情報であり、このモード情報がモードを決定する。この情報は一般的なケースでは当然ながら多価であり、つまり1つの論理ビットだけで表すことはできない。理論上考えられるすべてのモードが、所与の具体化形態において有意義なわけではなく、許容されるモードの数を制限しておくのが好ましい。ただ1つの比較モードしか存在しないただ2つの実行ユニットの場合には、すべての情報をただ1つの論理ビットに集約することができるということを強調しておく。
パフォーマンスモードから比較モードへの切換は、一般的な場合、パフォーマンスモードでは異なる出力部へマッピングされる実行ユニットが、比較モードでは同じ出力部にマッピングされるという特徴がある。このことは、パフォーマンスモードでは部分システムで考慮されるべきすべての入力信号N14iが対応する出力信号N16iへ直接送られるのに対して、比較モードではすべてが1つの出力部にマッピングされる、実行ユニットの部分システムが存在することによって具体化するのが好ましい。別案として、組み合わせを変更することによって、このような切換を具体化することもできる。その理由は、一般的なケースでは1つのパフォーマンスモードとか1つの比較モードといった表現を使うことはできないが、本発明の所与の特徴として許容されるモードの数を制約して、そのような表現を使えるということによって説明される。ただし、パフォーマンスモードから比較モードへ(およびその逆へ)の切換という表現は、常に使うことができる。
これらのモードの間で、ソフトウェアを通じて制御しながら、動作中にダイナミックに切換を行うことができる。このとき切換は、特別な切換命令の実行、特別な命令シーケンスの実行、明示的に指定された命令の実行によって起動され、あるいは、マルチプロセッサシステムの少なくとも1つの実行ユニットが、特定のアドレスにアクセスすることによって起動される。
エラー回路論理部N130は、たとえば比較器によって生起されるエラー信号を集めて、任意選択で、出力N16iをたとえばスイッチで遮断することによって受動状態に切り換えることができる。
ただし以下の例では、多くの場合、より単純に大半のコンセプトを説明することができる2つの実行ユニットのケースに絞ることにする。
モード間の切換はさまざまな方法でコーディングすることができる。考えられる1つの方法では、切換要求認識ユニットG40によって検知される特別な切換コマンドが利用される。切換をコーディングするために考えられる別の方法は、同じく切換要求認識ユニットG40が検知する特別なメモリ領域へのアクセスによって定義される。さらに別の方法は、切換を知らせる外部信号を切換要求認識ユニットG40で評価する。以下においては、使用されていないビットコンビネーションがプロセッサの既存のコマンドセットで利用される方法について説明する。この方法の特別な利点は、既存のプログラム開発環境(アセンブラ、コンパイラ、リンカー、デバッガー)を引き続き使用できるという点にある。
図4には、2つの実行ユニットG210a,G210bと、切換・比較ユニットG260とを備えるマルチプロセッサシステムG200が示されている。比較モードとパフォーマンスモード(およびこの逆)を切り換えるために、少なくとも2つの実行ユニットG210a,G210bの定義されていないビットコンビネーションがアセンブラで利用される。この意味における定義されていないビットコンビネーション、または未定義のビットコンビネーションとは、コマンドセットの記述で未定義または不正と指定されているあらゆるビットコンビネーションを指す。これはたとえば不正オペランド、不正命令、不正操作などである。このような未定義ビットコンビネーションの一般的な識別の特徴は、正常な実行ユニットがこのようなビットコンビネーションを実行したときにエラー信号を生成するか、または定義されていない挙動を示すことである。つまりこのようなビットコンビネーションは、通常のプログラムのセマンティクスを表現するのに必要とされない。
したがってソフトウェア開発のために、シングルプロセッサシステム用として存在しているような従来のプログラム開発環境を利用することができる。このことは、たとえば上に定義した意味における相応の未定義ビットコンビネーションをコードの適当な個所に挿入するマクロ‘SWITCH MODE TO PM’およびマクロ‘SWITCH MODE TO VM’を定義することによって具体化することができる。
その場合、このようなコンビネーションの使用は一般的なマクロ‘SWITCH’として定義される。そしてこのマクロが、現時点でのモードに依存して、他のモードへの切換を惹起する。システムに2つを超えるモードが存在している場合には、この方法を適用するために、このようなコンビネーションがさらに多く存在していなければならず、その場合、1つのモードごとに1つのコンビネーションを切換認識のために利用できるのが好ましい。
本発明では、コマンドセットで定義されていないビットコンビネーションによって、切換要求がコーディングされる。このビットコンビネーションは、実行ユニットG210a,G210bの内部で通常の仕方で処理されてはならない。この理由により、相応のビットコンビネーションを認識し、以後の処理のためにこれをニュートラルなビットコンビネーションと置き換える、追加のパイプライン段階(リプレース段階)G230a,G230bが提案される。そのために、‘NOP’(No Operation)コマンドを利用するのが好ましい。NOPコマンドは、命令ポインタを除き、実行ユニットの内部状態を変更しないという特徴がある。このときリプレース段階G230a,G230bは、通常第1の段階であるフェッチ段階G220a,G220bよりも後、かつ、ここでは1つのユニットにまとめられている、アセンブラで定義されていないビットコンビネーションのための残りのパイプライン段階G240a,G240bよりも前に挿入されている。
本発明では、ここに図示しているパイプラインユニットG215a,G215bの特別なパイプライン段階G230a,G230bとしての切換要求認識ユニットG40の実装形態は、相応の切換ビットコンビネーションが認識されたときに追加の信号G250a,G250bを生成し、この信号が、処理モードの切換を行うべきであることを別個の切換ユニットおよび比較ユニットG260に知らせる。
REP段階G230a,G230bは、実行ユニットG210a,G210bのパイプラインユニットG215a,G215bのなかで、FETG220a,G220bと残りのパイプライン段階G240a,G240bの間に配置されるのが好ましい。このときREP段階G230a,G230bは相応のビットコンビネーションを認識し、その場合に、NOPコマンドを残りの段階G240a,G240bへ転送する。それと同時に、それぞれの信号G250aまたはG250bが活動化する。これ以外のすべての場合には、REP段階G230a,G230bはニュートラルに振るまい、すなわち、他のすべてのコマンドは変更されることなく残りの段階G240a,G240bへ転送される。
図5には、別なパイプライン段階G230a,G230bの内部で、特別な未定義のビットコンビネーションをNOPまたはその他のニュートラルなビットコンビネーションと交換する方法が、フローチャートとして示されている。フェッチ段階G300では、コマンドすなわちビットコンビネーションが記憶装置から取り出される。次いでブロックG310で、取り出されたビットコンビネーションが、切換をコーディングする特別な未定義のビットコンビネーションに相当しているかどうかが区別される。相当していないときは、次のステップG320で、そのビットコンビネーションは以後の処理のために、残りのパイプライン段階G340へ変更されないまま送られる。切換をコーディングする特別なビットコンビネーションがステップG310で認識されたときは、ステップG330で、このビットコンビネーションがNOPビットコンビネーションによって置き換えられ、これが以後の処理のために次のパイプライン段階G340へ送られる。1つの有利な実施形態では、ブロックG310,G320,G330は本発明によるリプレース段階G230a,G230bの機能性を表しており、それ以外の機能性をさらに含んでいてもよい。
図6には、2つの実行ユニットH210a,H210bと、切換・比較ユニットH260とを備えるマルチプロセッサシステムH200が示されている。コンポーネントH220a,H220b,H240a,H240bは、G220a,G220b,G240a,G240bと同じ意味を有している。ここでは特別なパイプライン段階H230a,H230bで説明する切換要求認識ユニットG40の別案の実施形態では、これらのパイプライン段階は切換を知らせる信号H250a,H250bのほか、さらに別の信号を有している。パフォーマンスモードから比較モードへの切換時に、実行ユニットH210a,H210bを同期化することができるようにするために、実行ユニットH210a,H210bのパイプラインユニットH215a,H215bは、処理をストップさせることができる信号入力部H280a,H280bをそれぞれ有している。この信号は、最初に切換コマンドを認識し、それによって信号H250aないしGH50bを活動化させたほうのパイプラインユニットH215aまたはH215bに対して、切換・比較ユニットH260によって生成される。実行ユニットH210a,H210bの両方のパイプラインユニットH215a,H215bが切換コマンドを認識し、ソフトウェアまたはその他のハードウェア措置によってそれぞれの内部状態が同期化されたときに初めて、この信号H280a,H280bが再び取り消される。比較モードからパフォーマンスモードへの切換時には、同期化が必要ないので、H280a,H280bは不要である。
ここで説明している提案の前提条件となるのは、各々の実行ユニットが自らの個別番号またはユニットIDを確認することができるようにするユニット(IDユニットと呼ぶ)または方法である。2つの実行ユニットを備えるシステムの場合、たとえば一方の実行ユニットは自らについて番号0を確認し、他方の実行ユニットは番号1を確認することができる。2つを超える実行ユニットを備えるシステムでも、これに準じた番号が付与ないし確認される。このIDは比較モードとパフォーマンスモードを区別するのではなく、実行ユニットに一義的に名称をつけるものである。IDユニットはそれぞれの実行ユニットに含まれていてよく、たとえばプロセッサ状態レジスタのビットまたはビットコンビネーションとして、または独自のレジスタとして、または複数のビットとして、または問い合わせに応じて相応のIDを供給する、実行ユニットの外部のユニットとして実装される。
実行ユニットが切換要求に従ってパフォーマンスモードへの切換を実行した後、比較ユニットはもはや有効ではなくなっているが、実行ユニットは、依然として同一のコマンドを実行し続ける。その理由は、次のステップで実行ユニットが作動する、ないしは現在作動しているプログラムの個所を表示する命令ポインタは、切換による影響を受けることがないからである。実行ユニットが引き続いて種々のSWモジュールを実行できるようにするためには、それぞれの実行ユニットのプログラム進行が分割されなくてはならない。したがって実際には、本発明では独立したコマンド、プログラムセグメント、またはプログラムが処理されるので、それぞれの命令ポインタは、パフォーマンスモードのときに異なる値を有しているのが通常である。プログラムフローの分割は、ここで説明している提案では、それぞれの実行ユニット番号の確認によって行われる。実行ユニットがどのIDを有しているかに応じて、実行ユニットは特定のソフトウェアモジュールを実行する。それにより、各々の実行ユニットが個別番号またはIDを有しているので、関与する実行ユニットのプログラムフローを確実に分割することができる。
図7には、2つの実行ユニットを備えるマルチプロセッサシステムで比較モードからパフォーマンスモードへ切り換えるときに、ユニットIDを利用してプログラムフローを分割することができる方法が、フローチャートとして示されている。比較モードからパフォーマンスモードへの切換G500が実行された後、ユニットIDまたは実行ユニット番号の問い合わせG510が、両方の実行ユニットによって行われる。本発明では、このとき実行ユニット0には実行ユニット番号0が与えられ、実行ユニット1には実行ユニット番号1が与えられる。G510で、確認された実行ユニット番号と番号0との照合が行われる。これらが等しい場合には、ステップG520で、この照合が成功したほうの実行ユニットが実行ユニット0の符号化を続行する。この照合が成功しなかったほうの実行ユニットは、G530で番号1との照合を続行する。この照合が成功した場合には、G540で実行ユニット1の符号化が続行される。この照合も成功しなかった場合には、当該実行ユニットについて、0および1に等しくない実行ユニット番号がそれによって確認されたことになる。これはエラーの発生を意味しており、G550で処理が続行される。
図8には、3つの実行ユニットについての考えられる方法が説明されている。比較モードからパフォーマンスモードへの切換H500が実行された後、ユニットIDまたは実行ユニット番号の問い合わせH510が各実行ユニットによって行われる。本発明では、このときたとえば実行ユニット0には実行ユニット番号0が与えられ、実行ユニット1には実行ユニット番号1が与えられ、実行ユニット2には実行ユニット番号2が与えられる。H510で、確認された実行ユニット番号と番号0との照合が行われる。これらが等しい場合には、ステップH520で、この照合が成功した実行ユニットが実行ユニット0の符号化を続行する。この照合が成功しなかった実行ユニットは、H530で番号1との照合を続行する。この照合が成功した実行ユニットでは、H540で実行ユニット1の符号化が続行される。この照合が成功しなかった実行ユニットは、H535で番号2との照合を続行する。この照合が成功した実行ユニットは、H536で実行ユニット2の符号化が続行される。この照合も成功しなかった場合には、当該実行ユニットについて、0,1および2に等しくない実行ユニット番号がそれによって確認されたことになる。これはエラーの発生を意味しており、H550で処理が続行される。番号との照合に代えて、確認された実行ユニット番号を分岐表へのインデックスとして直接利用することもできる。
3つを超える実行ユニットを備えるマルチプロセッサシステムについても、以上の説明に準じて、同じ方法を適用することができる。
パフォーマンスモードから比較モードへ切り換えるときは、複数の事柄に配慮しなければならない。パフォーマンスモードから比較モードへの切換時には、実行ユニットの内部状態が切換後に同種になることを保証しなければならない。そうしないと、異なるスタート状態が異なる出力につながった場合、比較モードで、場合によりエラーが認識されることになる。このことは、ハードウェア、ソフトウェア、ファームウェア、またはこれら3つすべての組み合わせによって行うことができる。そのための前提条件は、比較モードへの切換後に、すべての実行ユニットが同一または同種のコマンド、プログラム、またはプログラムセグメントを実行することである。以下において、同一のコマンドが処理されてビットごとの正確な比較が行われるという特徴を比較モードが備えている場合に適用可能な同期化方法についてする。
図9には、パフォーマンスモードから比較モードへの切換時に実行ユニットを同期化する方法が、フローチャートとして示されている。ステップG600で、特にすべての割込みが禁止される。このことが重要なのは、割込みコントローラが比較モードのために相応に再プログラミングされなければならないという理由からだけではない。ソフトウェアによっても、実行ユニットの内部状態が調整されるのが望ましい。逆に、比較モードへの切換をするための準備中に割込みが惹起されると、さらに多くのコストをかけない限り、調整が不可能になる。
ステップG610:両方の実行ユニットが別々のキャッシュを有しているときは、比較モードになったときに、一方の実行ユニットを表すアドレスにキャッシュヒットが生じ、他方の実行ユニットについてキャッシュミスが生じるのを防ぐために、キャッシュの内容も切換前に調整されなくてはならない。これがキャッシュハードウェアによって自動的に行われないときは、たとえばすべてのキャッシュラインを無効としてマーキングすることにより、このような調整を行う。そのキャッシュ(または複数のキャッシュ)が完全に無効になるまで待機しなければならない。必要な場合には、プログラムコードの待機ループによってこのことを確保する。これはその他の手段で実現することもでき、決定的に重要なのは、このステップの後にどのキャッシュも同じ状態になっていることである。
ステップG620では、パフォーマンスモードに由来する実行ユニットの活動が切換後に行われないようにするために、実行ユニットの書込みバッファが空にされる。
ステップG630では、それぞれの実行ユニットのパイプライン段階の状態が同期化される。そのために、たとえば適当な数のNOP(No operation)コマンドを、切換シーケンス/切換コマンドの前に実行する。NOPコマンドの数はパイプライン段階の数に準じて決め、すなわち、そのつどのアーキテクチャに依存して決める。どのようなコマンドがNOPコマンドとして適しているかも、同じくアーキテクチャ依存的である。実行ユニットが命令キャッシュを有しているときは、そのコマンドシーケンスがキャッシュラインの境界に沿って配列されることを保証する(アライメント)。命令キャッシュは、これらのNOPが実行される前に無効としてマーキングされているので、これらのNOPが最初にキャッシュにロードされなくてはならない。キャッシュライン境界にあるこのコマンドシーケンスが開始されると、記憶装置(たとえばRAM/ROM/フラッシュ)からキャッシュへのデータ転送が完了してから、切換のコマンドが行われる。このコマンドシーケンスも、NOPの必要数を決めるときに考慮しなければならない。
ステップG640では、比較モードへ切り換えるためのコマンドステップが実際に遂行される。
ステップG650では、各々の実行ユニットのそのつどのレジスタファイルの内容が調整される。そのために、切換の前または後でレジスタに同一の内容をロードする。その際に重要なのは、レジスタの内容が外部へ転送され、それによって比較ユニットにより比較されるまでに、切換後に各実行ユニットのレジスタの内容が同一になっていることである。
ステップG660では、相互接続されているどの実行ユニットでも外部の割込み信号が同じ割込みを惹起するように、割込みコントローラが再プログラミングされる。
ステップG670では割込みが再びリリースされる。
比較モードへの切換がいつ行われるべきなのかがプログラム進行から一義的に明らかでないときは、切換が意図されていることを関与する実行ユニットに知らせなくてはならない。そのために、それぞれの実行ユニットに帰属する割込みコントローラで、たとえばSWなどにより割込みが開始されるのが好ましい。そして割込み処理が、上に説明した相互接続のためのシーケンスの実行を指令する。
図10には、パフォーマンスと比較モード(およびその逆)の切換を表現するステートマシンが示されている。「パワーオン」あるいはリセット(ソフトウェアまたはハードウェア)によって惹起されるシステムの起動時に、移行線G800を経由してシステムが状態G700へと移される。一般に、リセットを惹起することができる未定義の事象後のシステムは、常に状態G700から動作を開始する。リセットを惹起することができる事象の例としては、外部の信号、電圧供給のトラブル、動作の継続を有意義でなくしてしまう内部のエラー事象などがある。このように、切換・比較ユニットG70の状態G700、およびパフォーマンスモードで作業が行われるマルチプロセッサシステムG60の状態G700は、システムのデフォルト状態である。デフォルト状態にならなければ未定義の状態が成立することになるはずの一切のケースで、デフォルト状態G700が成立する。このような状態G700のデフォルト位置は、ハードウェア措置によって保証される。たとえばシステム状態ないし切換・比較ユニットG60の状態は、レジスタ、レジスタ内部のビット、レジスタ内部のビットコンビネーション、またはフリップフロップによってコーディングされていてよい。
そうすれば、ハードウェアにより、リセットまたはパワーオンの後に必ず状態G700が成立することが保証される。このことは、たとえばリセット信号ないし「パワーオン」信号が、フリップフロップまたはレジスタのリセット入力部もしくはセット入力部に送られることによって保証される。
状態G700では、システムはパフォーマンスモードで作動する。したがって実行ユニットG10a,G10bは異なるコマンド、異なるプログラム、または異なるプログラムセグメントを処理する。切換は、たとえば実行ユニットG10a,G10bが、特別な切換コマンドを実行することによって認識することができる。その他の方法としては、特別なメモリアドレスへのアクセス、内部信号、あるいは外部信号による認識がある。切換要求が存在していない限り、マルチプロセッサシステムG60およびこれに伴う切換・比較ユニットG70は、状態G700のまま保持される。以下において切換要求とは、この特別なシステムで切換要求が識別表示されるのと同様に識別表示された切換条件の認識を意味している。
状態G700での保持は、移行線G810で図示されている。実行ユニットG10aにより切換要求が認識されると、切換・比較ユニットG70は移行線820を介して状態G710へと移行する。すなわち状態G710は、実行ユニットG10aが切換要求を認識し、実行ユニットG10bが同じく切換要求を認識するのを待機している状態を表している。実行ユニットG10bが切換要求を認識しなかったときは、切換・比較ユニットG70は状態G710のまま保持され、その様子は移行線G830で図示されている。
状態G710のときに実行ユニットG10bも同じく切換要求を認識すると、移行G840が行われる。それにより、切換・比較ユニットG70は状態G730になる。この状態は、両方の実行ユニットG10a,G10bが切換要求を認識したときの状況を表している。状態G730では、2つの実行ユニットG10a,G10bが互いに同期化される同期化方法が実施され、引き続いて比較モードで動作を行う。この工程中、切換・比較ユニットG70は状態G730のまま保持され、その様子は移行線G890で図示されている。
状態G700のとき、最初に実行ユニットG10によって切換要求が認識された場合には、移行線G860を介して状態G720への切換が行われる。すなわち状態G720は、実行ユニットG10bが切換要求を認識し、実行ユニットG10aが同じく切換要求を認識するのを待機している状態を表している。実行ユニットG10aが切換要求を認識しなかったときは、切換・比較ユニットG70は状態G720のまま保持され、その様子は移行線G870で図示されている。状態G720のときに実行ユニットG10aも同じく切換要求を認識すると、移行G880が行われる。それにより、切換・比較ユニットは状態G730になる。状態G700のときに両方の実行ユニットG10a,G10bが同時に切換要求を認識した場合には、ただちに状態G730への移行が行われる。このケースは移行線G850である。
切換・比較ユニットG70が状態G730になっているときは、両方の実行ユニットG10a,G10bが切換要求をすでに認識している。この状態のときに実行ユニットG10a,G10bの内部状態が同期化され、この同期化工程の終了後に、比較モードで作動する。この同期化作業の終了と同時に、移行G900が行われる。この移行は同期化の終了を表している。状態G740では、実行ユニットG10a,G10bは比較モードで作動する。同期化作業の終了は、実行ユニットG10a,G10b自体によって通知することができる。このことは、両方の実行ユニットG10a,G10bが比較モードで作動する準備ができたことを通知したときに、移行G900が行われることを意味している。一定に設定された時間にわたって終了を通知することもできる。このことは、状態G730をどれだけ長く保持するかが切換・比較ユニットG70で不変にコーディングされていることを意味している。この時間は、両方の実行ユニットG10a,G10bが確実に同期化作業を終えているように設定される。そして、この時間の経過後に移行G900が開始される。別の変形例では、切換・比較ユニットG70が実行ユニットG10a,G10bの状態を監視しており、両方の実行ユニットG10a,G10bが同期化作業をいつ終えたのかを自ら認識することができる。そして、この認識の後に移行G900が開始される。
切換要求が認識されない限り、マルチプロセッサシステムG60は比較モードのままに保持され、その様子は移行線G910で図示されている。状態740のときに切換要求が認識されると、切換・比較ユニットは移行線G920を介して状態G700へと移される。すでに説明したとおり、状態G700ではシステムはパフォーマンスモードで作動する。そして、状態G740から状態G700へ移行するときのプログラムフローの分割は、上述したのと同じ方法で実施することができる。
図11には、2つの実行ユニットG410a,G410bならびに2つの割込みコントローラG420a,G420b、およびその内部に含まれる割込みマスキングレジスタG430a,G430bと、さまざまな割込みソースG440aからG440nとを備えるマルチプロセッサシステムG400が示されている。さらに、特別な割込みマスキングレジスタG460を備える切換・比較ユニットG450が図示されている。
各々の実行ユニットG410a,G410bは、パフォーマンスモードのとき同時に2つの割込みを処理できるように、それぞれ独自の割込みコントローラG420a,G420bを有しているのが好ましい。このことは、割込み処理がシステムパフォーマンスのボトルネックとなっているシステムで特別に好ましい。このとき割込みソースG440aからG440nは、両方の割込みコントローラG420a,G420bにそれぞれ同等に接続されるのが好ましい。このような接続形式により、他に措置を講じなくても、両方の実行ユニットG410a,G410bで同等な割込みが惹起される。パフォーマンスモードのとき、割込みコントローラG420a,G420bは、相応の割込みソースG440aからG440nがアプリケーションに応じて異なる実行ユニットG410a,G410bへ分配されるようにプログラミングされる。このことは、割込みマスキングレジスタG430a,G430bの適当なプログラミングによって行われる。マスキングレジスタは、各々の割込みソースG440aからG440nについてレジスタの1ビットを用意している。このビットがオンになっていると割込みがロックされ、すなわち、接続されている実行ユニットG410a,G410bへ転送されない。パフォーマンスモードでは、所与の割込みソースG440aからG440nがちょうど1つの実行ユニットG410aまたはG410bで処理されるのが好都合である。このことは、少なくともいくつかの割込みソースについて該当するのが好ましい。それにより、割込みネスティング(割込み処理が2番目の割込みによって中断される)や割込み待ち(最初の割込みの処理が終わるまで、2番目の割込みの処理が延期される)を行うことなく、複数の割込みソースG440aからG440nを同時に処理できるようにすることができる。
比較モードでは、割込みコントローラG420a,G420bがすべての実行ユニットG410a,G410bで同じ割込みを同時に惹起することが保証されなくてはならない。そうしないと、比較モードに応じてエラーが認識されることになる。このことは、パフォーマンスモードから比較モードへ切り換えるとき、同期化段階で割込みマスキングレジスタG430a,G430bが同一であることを確保しなければならないことを意味している。この同期化については、図9のステップG660で説明されている。このような同期化は、両方の割込みマスキングレジスタG430a,G430bを相応に等しい値でプログラミングすることによって、ソフトウェアで行うことができる。切換工程を迅速にするために、特別なレジスタG460を利用することが提案される。1つの実施形態では、このレジスタG460は切換・比較ユニットG460のなかに配置されるが、切換要求認識部G40、組み合わされた切換要求認識部、比較器、切換ユニットG80、ならびにこれらのあらゆる組み合わせに含まれていてもよい。このレジスタがこれら3つのコンポーネントの外部で、他の適当な個所に配置されていることも同様に考えられる。レジスタG460は、比較モードのとき有効になるべき割込みマスキングを含んでいる。切換・比較ユニットG450は、パフォーマンスモードから比較モードへの切換をするための信号を切換要求認識部G40から受けとる。ステップG600で割込みをロックできるようになってから、割込みコントローラG420a,G420bの割込みマスキングレジスタG430a,G430bが再プログラミングされる。このことは、切換信号が受信されて割込みコントローラG420a,G420bがロックされてから、切換・比較ユニットG450により他の同期化ステップと並行してハードウェアで行われる。割込みマスキングレジスタG430a,G430bが比較モードで個々に再プログラミングされるのではなく、常に中枢のレジスタG460が再プログラミングされるのが好都合である。そして、この中枢のレジスタから両方の割込みマスキングレジスタG430a,G430bへ、ハードウェアにより同期して転送が行われる。ここで割込みマスキングレジスタについて説明している方法は、割込みコントローラに配置されている、あらゆる割込み状態レジスタにも同様に転用することができる。当然ながら、レジスタG460に代えて、割込みマスキングレジスタG430a,G430bへできるだけ迅速に転送を行うことができる、別の記憶媒体を使用することも考えられる。
図12では、2つの実行ユニットG1010a,G1010bと、切換・比較ユニットG1020と、3つの異なるレジスタセットG1040a,G1040b,G1050を含む割込みコントローラG1030とを備えるマルチプロセッサシステムG1000が提案されている。上に説明した解決法の代替案として、図12に示すような特別な割込みコントローラG1030が提案される。この割込みコントローラは、本例では2つの実行ユニットG1010a,G1010bと、比較モードとパフォーマンスモードの間で切換を行うことができる切換・比較ユニットG1020とを備えるように構成された、マルチプロセッサシステムG1000で用いられる。
このとき、パフォーマンスモードでは、レジスタセットG1040a,G1040bが用いられる。この場合、割込みコントローラG1030は、2つの割込みコントローラG420a,G420bとまったく同じように作用する。この挙動については図11に図示され、説明されている。このときレジスタセットG1040aは実行ユニットG1010aに付属しており、レジスタセットG1040bは実行ユニットG1010bに付属している。割込みソースG1060aからG1060nは、マスキングにより、実行ユニットG1010a,G1010bへ適当に配分される。パフォーマンスモードから比較モードへの切換時には、切換・比較ユニットG1020が信号G1070を生成する。この信号は、比較モードへ切換が行われること、ないしはシステムがこの時点まで比較モードで作動することを、割込みコントローラG1030に知らせる。その後、割込みコントローラG1030はレジスタセットG1050を使用する。それにより、両方の実行ユニットG1010a,G1010bで同じ割込み信号が発生することが保証される。比較モードから、切換・比較ユニットG1020が再び信号G1070を介して割込みコントローラG1030に通知をするパフォーマンスモードへ切り換わると同時に、レジスタセットG1040a,G1040bへの切換が再び行われる。このように、パフォーマンスモードではレジスタセットG1040a,G1040bへの書込みだけが許容され、比較モード用に留保されているレジスタセットG1050への書込みはハードウェアで禁じられることによって、相応のレジスタセットの保護を実現できるという利点がある。同様のことは逆の方向でも可能であり、比較モードではレジスタセットG1050への書込みだけが許容され、レジスタセットG1040a,G1040bへの書込みは禁じられる。
図13には、比較器M500,G20のもっとも単純な形態が示されている。パフォーマンスモードと比較モードの間で切換が行われる少なくとも2つの実行ユニットG10a,G10bを備えるマルチプロセッサシステムG60の主要なコンポーネントは、比較器M500である。比較器がもっとも単純な形態で図13に図示されている。この比較コンポーネントM500は、2つのパルス信号M510およびM511を受けとることができ、これらの信号が同じかどうかを比較し、ここで説明しているコンテキストで言えば、特にビットごとに同じかどうかを比較する。同じである場合には、パルス信号M510,M511の値が出力信号M520へ送られ、エラー信号M530は有効にならず、すなわち「良好」の状態を通知する。信号が同じでないことを比較コンポーネントが検知すると、エラー信号M530が有効になる。その後、任意選択で、信号M520を無効にすることができる。このことは、エラーが相応のシステムから外へ出ないという利点がある(「故障封じ込め」)。すなわち、実行ユニットの外部にある他のコンポーネントが、潜在的にエラーを含んだ信号による被害を受けることがない。ただし、信号M520を無効にする必要のないシステムも存在している。それは、たとえばシステムレベルではフェールサイレンスしか求められていない場合に当てはまる。その場合には、たとえばエラー信号を外部へ送ることができる。
この基本システムを前提としたうえで、数多くの実施形態が考えられる。まず最初に、コンポーネントM500をいわゆるTSCコンポーネント(totally self checking)として製作することができる。この場合、エラー信号M530は少なくとも2本の回線(「デュアルレール」)で外部へと送られ、内部の設計・エラー発見対策により、比較コンポーネントの考えられる各々のエラー発生事例でこの信号が正しい状態で存在するか、または、明らかに正しくない状態で存在することが保証される。このときデュアルレール信号は2本の回線を介してバイナリー信号を提供し、エラーのない場合に両方の回線が互いに反転されるように提供するのが好ましい。本発明のシステムを適用するときの有利な1つの実施態様は、このようなTSC比較器を使用することである。
2番目の種類の実施形態は、両方のパルスM510,M511(ないしM610,M611)がどの程度の同期性を有していなくてはならないかという点で、上記と区別することができる。考えられる1つの実施形態は、クロック単位での同期性を特徴としており、すなわち、データの比較を1つのクロックで行うことができる。
それぞれのインプットの間に一定の位相ずれがあるときに、相応の信号をたとえば半整数または整数のクロック周期だけ遅延させる同期遅延素子を使用することによって、若干の変形例が得られる。このような位相ずれは、共通原因故障、すなわち複数の処理ユニットが同時に同種の影響を受ける可能性がある故障原因を回避するために有用である。
そこで図14はさらに別の実施形態を示している。コンポーネントおよび信号M600,M610,M611,M620,M630は、図13の対応するコンポーネントおよび信号M500,M510,M511,M520,M530と同じ意味を有している。そして図14では、これらのコンポーネントに加えて、時間的に早いほうのインプットを位相ずれの分だけ遅延させるコンポーネントM640が挿入されている。この遅延素子は、比較モードのときにだけ使用するために、比較器に格納されているのが好ましい。その代替または補足として、純粋なクロックずれまたは位相ずれとして現れるのではない非同期性も、同じく許容できるようにするために、中間バッファM650,M651をインプットチェーンへ置くことができる。このような記憶装置は入力部と出力部を有しており、複数のメモリワードを記憶することができる。入ってきたメモリワードは、新しいメモリワードが到着すると位置をずらされていき、最後の位置(バッファの深度)の後に「記憶装置から外へ」押し出される。このようなバッファが設けられている場合、バッファの最大の深度まで非同期性を許容することができる。この場合には、バッファがオーバーフローになったときにもエラー信号が出力されなければならない。
さらに比較器の内部では、信号M520(またはM620)がどのようにして生起されるかという観点で実施形態を区別することができる。1つの有利な実施形態は、インプット信号M510,M511(ないしM610,M611)を出力部へと送り、スイッチによって接続部を遮断可能なようにすることにある。この実施形態の格別な利点は、パフォーマンスモードと、考えられる種々の比較モードとの間で切換をするために、同一のスイッチを利用できることである。別案として、比較器内部の中間記憶装置から信号を生起することもできる。
最後の種類の実施形態は、どれだけ多くのインプットが比較器に存在しており、比較器がどのように反応すべきか、という点で区別することができる。インプットが3つの場合、多数決投票を行うことができ、すなわち3つの信号すべての比較、または2つの信号だけの比較を行うことができる。4つまたはそれ以上のインプットがある場合には、これに対応する数の実施形態が考えられる。可能な実施形態の詳細な説明は、図20の説明の部分に含まれている。
実施形態の厳密な選択は、システム全体のさまざまな動作モードと組み合わせて行うのが好ましい。すなわち、複数の異なるパフォーマンスモードまたは比較モードがあるときには、これらを比較器の対応するモードと組み合わせるのが好ましい。
本発明のいくつかの部位では、比較器またはより一般的な投票素子/処理素子/分類素子を、無効化もしくは受動化することが必要または有利である(以下においては便宜上常に比較器と呼ぶ)。そのためには数多くの方法がある。第1に、比較器が有効化または無効化される信号を比較器に送ることができる。そのために、これを実行することができる追加のロジックが比較器に挿入される。さらに別の方法は、比較されるべきデータを比較器に供給しないことである。3番目の方法は、比較器のエラー信号をシステムレベルで無視することにある。さらには、エラー信号そのものを遮断することもできる。どの方法にも共通しているのは、潜在的に比較される2つまたはそれ以上のデータが異なっていても、それがシステム内部で何の役割も演じないことである。これが該当するとき、比較器は受動的または無効であるとみなされる。
以下においては、比較器と接続された切換器の実装、すなわち切換・比較ユニットの実装について考察する。このような実装は、これらが実行ユニットG10a,G10bとともに1つのチップ内部で製作されている場合に格別に好都合である。
比較器および切換器の各コンポーネントをまとめることにより、チップ内部に実装したときに、非常に小さいハードウェアオーバーヘッドしか生じない。したがって実装の1つの有利な態様は、両方の部品を1つのコンポーネントにまとめることである。このことは、少なくとも入力信号(アウトプット実行ユニット1、アウトプット実行ユニット2)と、少なくとも出力信号(アウトプット1、アウトプット2)と、論理アウトプット信号「アウトプット全体」(これは物理的にアウトプット1またはアウトプット2と一致していてよい)と、比較器とを備えるコンポーネントである。このコンポーネントはモードを切り換える能力を有しており、パフォーマンスモードのときにはすべての信号を通過させ、比較モードのときには複数の信号を比較して、場合により通過させる。さらに、別の入力信号および出力信号を追加すると好ましい。すなわち、検知されたエラーを通知するためのエラー信号、このコンポーネントで成立しているモードを通知するためのモード信号、およびコンポーネントに出入りする制御信号である。
1つの有利な実施例では、パフォーマンスモードのとき、2つまたはそれ以上の実行ユニットがマスタとしてプロセッサ内部のバスに接続される。比較ユニットは無効化されるか、または、各実行ユニットの挙動が異なっている場合に、考えられる比較モードのうちの1つで生成されるエラー信号がマスキングされる。このことは、切換・比較ユニットがソフトウェアにとって透明であることを意味している。着目される比較モードでは、比較されるべき物理的な実行ユニットが論理的な実行ユニットとしてバスで処理され、すなわちマスタだけがバスに現れる。比較器のエラー信号は有効化される。そのために切換・比較ユニットは、1つを除くすべての実行ユニットをスイッチによってプロセッサ内部のバスから切り離し、この1つの論理的な実行ユニットの入力を複製して、比較モードに関与するすべての実行ユニットにこれらの入力を提供する。バスへ書込みをするときは、それぞれの出力が比較ユニットで比較され、同じであれば、これらのデータが既存の1つのアクセス部を介してバスへ書き込まれる。
図15と図16には、有利なコンポーネントM700(切換・比較ユニット、G70に相当)の原理的な挙動が説明されている。便宜上、この図面は2つの実行ユニットについてのみ描かれている。図15は比較モード、図16はパフォーマンスモードにおける各コンポーネントの状態をそれぞれ示している。これらのモードにおける異なるスイッチ位置は、制御部M760によってM700で具体化される。両方の実行ユニットM730,M731は、当初、図16に示すようにスイッチM750およびM751が閉じているときに、パフォーマンスモードでデータ・アドレスバスM710に書込みをすることができる。場合により生じる書込みのコンフリクトは、バスプロトコルによって解消されるか、または、図示しないそれ以外のコンポーネントによって解消されることを前提とする。比較モードでは、挙動が少なくとも論理的な視点から、別の挙動になる。図15に示すようにスイッチM750,M751が開いており、したがって直接的なアクセス手段が遮断されている。逆に、図16とは異なり、図15ではスイッチM752,M753は閉じている。実行ユニットM730,M731の信号M740,M741は比較コンポーネントM720へと導かれる。比較コンポーネントは少なくとも、図13に示すように、図14に説明されているような拡張部も含むことができるように構成されている。ただし、比較コンポーネントのエラー信号あるいはその他の信号の図示は、図15と図16では省略されている。両方の信号が一致している場合にはスイッチM754が閉じ、一致している両方の信号のうちの一方がアドレス/データバスM710へ転送される。すなわち、そのためには切換・比較ユニットM700が、スイッチM750−M754へ介入できることが必要である。そのつどのスイッチ位置は、モードとエラー認識とに依存して決まる。スイッチM754が常に閉じていてエラー信号により適当なシステム反応が生起される変形例も、上記の説明に包含される。
図17には、切換・比較ユニットの変形例が示されている。2つの実行ユニットG10a,G10bだけを備える単純なシステムについてと同様に、切換・比較ユニットの具体化には数多くの態様がある。比較器でバッファが使用されない場合に格別に好ましい別の変形例が、図17に示されている。図15、図16と同じく、実行ユニットの信号M840,M841がある。これらの信号は本図では図示されていない。本発明のコンポーネントM800には、このコンポーネントのモードを設定するモードロジックM810がある。パフォーマンスモードでは、モードロジックがスイッチM831を閉じ、比較モードではこれを開く。さらにモードロジックは比較器M820にモード信号を送る。この具体化形態では比較器は常に比較を行うが、スイッチM830を制御するために、比較の結果とモード信号とを利用する。パフォーマンスモードではスイッチが常に閉じており、比較モードでは、エラーが発生していないときは常に閉じている。当然ながら、いったんエラーが確認された場合にも、相応のリセットが行われるまでスイッチを引き続き開いた状態に保つことができる。
図18には、切換・比較ユニットのさらに別の実施形態が示されている。この代替案は、さらに多くのスイッチを備えているものの、その代わりに、パフォーマンスモードのときに比較器を無効にするので、いっそう簡単に非同期性を取り扱うことができる。さらに、実行ユニットの両方の信号M940,M941が存在している。これらの信号は、この図面でもやはり図示されていない。本発明のコンポーネントM900には、このコンポーネントのモードを設定するモードロジックM910がある。パフォーマンスモードでは、モードロジックがスイッチM931を閉じ、スイッチM932,M933を開く。それにより、このモードでは比較コンポーネントM920にデータが供給されない。このことは、非同期が生じた場合にいっそう長いバッファ時間を可能にし、ないしは、1つの具体化形態ではいっそう小さいバッファ深度を可能にする。パフォーマンスモードでは、スイッチM930は常に閉じている。比較モードでは、コンポーネントM910はスイッチM932,M933を閉じて、スイッチM931の開放によるバスへの直接的なアクセスを遮断する。任意選択で、モードロジックM910は比較器M920にモードを通知することができる。比較モードでは、エラーが発生していない場合にはスイッチM930が閉じている。エラー発生時には、比較コンポーネントM920が、スイッチM930の開放によってバスへの信号M940の転送を遮断する。
上に説明した各図面では、モードまたはエラー信号を外部に送り出すことが、コストを要することなく可能である。さらには、特に内部のモード状態を生起するために、さらに別の信号をコンポーネントに送ることが問題なく可能である。
つまり要約して言えば、このコンポーネントの有利な具体化形態は、出力信号をバス(たとえばアドレス/データバス)に書き込むことができる複数の処理ユニットが存在することを特徴としている。重要なのは、実行ユニットの出力信号のうち少なくとも2つをコンポーネントが処理することができ(たとえば比較し、あるいは場合により投票もしくは分類することができ)、コンポーネントが少なくとも1つのスイッチに介入することができ、このスイッチによって、少なくとも1つの直接的なバスアクセスが遮断されることである。このことは、実行ユニットがコンピュータのCPUである場合に格別に有用である。さらに、介入可能なスイッチの状態が、計算ユニットの動作モードを特徴づけるのが好ましい。
コンポーネントがアドレス・データバスに信号を送ることができると、システム特性、特に可能な比較モードを格別にうまく具体化することができる。これは、1つの実行ユニットの1つの出力信号の導通であるのが好ましい。別案として、このことは、異なる実行ユニットの異なる出力信号の処理の結果として行うこともできる。
たとえばすでに図17、図18に関する説明で明らかとなっているように、システムにおいて、および(コンポーネントへの分割状態に応じて)各コンポーネントのうちの1つにおいて、モード情報を識別することができる。このモード情報は、具体化形態によっては、明らかに部分コンポーネントに存在することさえできる。1つの有利な具体化形態では、この信号をコンポーネントから導出して、システムの他の部分に提供することができる。
一般的なケースでは、本発明に基づく挙動を図21を参照して説明することができる。信号およびコンポーネントN100,N110,N120,N130,N140,N141,N142,N143,N14n,N160,N161,N162,N163,N16nは、図20と同じ意味を有している。これに加えて、モード信号N150およびエラー信号N170が本図には図示されている。任意選択のエラー信号は、エラー信号を集めるエラー回路ロジックN130によって生起されるものであり、個々のエラー信号をそのまま転送したものか、またはそこに含まれるエラー情報を束ねたものである。モード信号N150は任意選択であるが、このコンポーネント外部でのモード信号の利用は多くの個所で有利であり得る。切換ロジックN110の情報(すなわち図20の説明で述べた機能)と、処理ロジックの情報(すなわち出力信号ごとの、つまり関数値ごとの比較演算の決定)とを組み合わせたのがモード情報であり、モード情報がモードを決定する。この情報は、一般的なケースでは当然ながら多価であり、つまり1つの論理ビットだけで表すことはできない。理論上考えられるすべてのモードが所与の具体化形態で有意義なわけではなく、許容されるモードの数を制限しておくのが好ましい。そしてモード信号は、関連するモード情報を外部へと運び出す。HWの具体化形態は、外部で目に見えるモード信号をコンフィギュレーションできるように構成されているのが好ましい。処理ロジックと切換ロジックをコンフィギュレーション可能に構成することも、同じく好ましい。これらのコンフィギュレーションが相互に調整されていると好ましい。別案として、モード信号の変更だけを外部に知らせるか、もしくは、モード信号の変更を補足的に外部に知らせることもできる。このことは、特にデュアル式のコンフィギュレーションで利点を有している。
このモード信号は防護されるのが好ましい。デュアルシステムでの1つの具体化形態が、一例として図17に示す具体化形態をベースとしたうえで、図19に示されている。ここでは、信号M850が切換・比較ユニットから導出される。デュアルシステムでは、この情報は論理的に1つのビットで表すことができる。そして、特にデュアルレール信号によって防護を行うことができる。一般的なケースでは、任意選択で反転された二重化によっても、同じく防護を行うことができる。別案として、特に内部で本質安全性をもって生起される、またはCRC(巡回冗長検査)もしくはECC(誤り訂正符合)を使用する、パリティを生起することもできる。
モード信号は、コンポーネントの外部で利用することができる。第1に、オペレーティングシステムの自己監視のためにモード信号を利用することができる。オペレーティングシステムは、SWの視点から見て切換の責任を負っており、システムがどのモードになっているかを常に知っているべきであり、また、そのモードにシステムを移すべきである。したがってこの信号のチェックを、防護のために利用することができる。このことは、まず第1に直接的に行うことができる。あるいは別案の方法は、タイマーまたはその他の「独立した」ユニットを介して、オペレーティングシステムへの問い合わせの妥当性をこの信号で判断することである。
一般に、この信号は任意選択で、μC(あるいはより一般的な計算ユニット)の他のデータシンクで利用することもできる。たとえばMPU(メモリ保護ユニット)は、特定の(特定の実行ユニットからの)メモリアクセスを特定のモードでしか許容しないようにプログラミングされていてよい。このときMPUとは、たとえば特定のプログラム部分について特定のアドレス空間へのアクセスを禁止することによって、データ/アドレスバスへ許容されたアクセスだけが行われることを保証することができるユニットである。モード信号をMPUへ送り込み、このMPUを相応にコンフィギュレーションおよびプログラミングし、このコンフィギュレーションデータとモード信号を評価することで、追加的な防護を行うことができる。モード信号がすでに監視のための十分な情報となっている場合、状況によっては、このことがプログラミングを簡素化する場合さえある。そうすれば、μCを初期化する時間に準静的なプログラミングをするだけで足りる。周辺装置ユニットについても同様のことが当てはまる。その場合にも、相応の周辺素子へのアクセスが特定のモードでしか許容されないアプリケーションが存在している。モード信号を周辺素子へ送り込み、周辺素子を相応にコンフィギュレーションおよびプログラミングし、このコンフィギュレーションデータとモード信号を評価することで、追加的な防護を行うことができる。モード信号がすでにチェックのための十分な情報となっている場合、状況によっては、このことがプログラミングを簡素化する場合さえある。そうすれば、μCを初期化する時間に準静的なプログラミングをするだけで足りる。同様に、この信号の評価を割込みコントローラでも利用することができる。その場合、このような監視は安全性コンセプトの土台もしくは主要な構成要素をなすことができる。適当な施工形態とSWの構造化によって、着目されるアプリケーションにおける故障の種類全体の安全性コンセプトを、このモード信号可能を基礎として構成することができる。このことは、特にモード信号が適当な形態で、上に説明したように本質安全性を備えている場合に好ましい。さらにこの場合、着目するコンポーネントが、モード信号と自分自身へのアクセスとの間に不一致を検知した場合にエラー信号を送信する手段、または遮断経路を操作する手段を有していると好ましい。
さらに別の重要な利用目的は、計算ユニットの外部でモード信号を評価することである。1つの直接的な用途は、減分式のウォッチドッグで評価をすることにある。このような「ウォッチドッグ」は、マイクロプロセッサによって整数の値にセットすることができる少なくとも1つの(カウンタ)レジスタで構成されている。このようなレジスタがセットされた後、「ウォッチドッグ」がレジスタの値を定まった周期で自動的に減分していく。レジスタの値がゼロになると、またはオーバーフローが発生すると、「ウォッチドッグ」がエラー信号を生成する。エラー信号が生成されないようにするには、マイクロプロセッサがレジスタの値を適時に再びリセットしなければならない。それにより、マイクロプロセッサがソフトウェアを正しく実行しているかどうかを、(一定の限度内で)チェックすることができる。マイクロプロセッサがソフトウェアを正しく実行しなくなると、この場合には「ウォッチドッグ」も正しく操作されておらず、そのために「ウォッチドッグ」によってエラー信号が生成されると想定される。ハードウェアとデータ構造の完全性を、比較モードのときに高い信頼度でチェックすることができるが、そのためには、マイクロプロセッサが規則的に比較モードへ再び復帰することが保証されていなければならない。したがって、ここで説明している「ウォッチドッグ」の役割は、定義された期間内にウォッチドッグがリセットされなかったときにエラー信号を生成するだけでなく、定義された期間内にマイクロプロセッサが定義された比較モードへ復帰しなかったときにも、エラー信号を生成することにある。たとえば、モード信号が、定義された計算ユニットの比較モードを表示したときにだけ、「ウォッチドッグ」をリセットすることができる。それにより、計算ユニットが規則的にこのモードへ復帰することが保証される。この代替または補足として、マイクロプロセッサで特定の割込みが惹起されたときに初めて、「ウォッチドッグ」のレジスタの値が減分される。そのためには、μCの外部割込み信号がウォッチドッグにも結合されなくてはならない。ウォッチドッグには、μCのどの割込みが定義された比較モードに切り換わるかが記憶されている。このような割込みがかけられると、ウォッチドッグはただちに「巻き戻され」、正しいモード信号の存在によってリセットされる。
ごく一般的に、特に安全性コンセプトに適用する場合には、μC外部のソースでモード信号を評価するのが有用である。本発明で説明しているようなコンピュータでの、ソフトウェアの正しい進行の確保に関して重要な点は、許容されるさまざまなモード間での正しい切換である。まず初めに切換能力そのものがチェックされ、さらに、正しい切換がチェックされるのが望ましい。上に説明したように、特別なモードが規則的に成立するかどうかに注目することもできる。モード信号そのものが本質安全性を備える構成となっている場合には、常にこのような方法が格別に好ましい。
1つの可能性は、モード信号をASICまたはその他のμCへ送ることにある。このようなASICまたはその他のμCは、タイマーと単純なロジックを介して、少なくとも次のような事項をこの信号を用いてチェックすることができる:
計算ユニットは十分な頻度で(たとえば遅くとも1000μsごと)1つまたは複数の定義されたモードに変わっているか?
何らかのモードへ切り換わるとき、特定の信号が常に出力されているか?
計算ユニットは規則的に1つのモードから他のモードになっているか?
各モードの順序の特定の単純なパターンが有効になっているか?
一般的な時間的パターンが有効になっているか(たとえばモード1では平均<70%、モード2では<50%)。
計算ユニットは十分な頻度で(たとえば遅くとも1000μsごと)1つまたは複数の定義されたモードに変わっているか?
何らかのモードへ切り換わるとき、特定の信号が常に出力されているか?
計算ユニットは規則的に1つのモードから他のモードになっているか?
各モードの順序の特定の単純なパターンが有効になっているか?
一般的な時間的パターンが有効になっているか(たとえばモード1では平均<70%、モード2では<50%)。
場合により追加の信号の利用によって補足される、モード信号の論理的、時間的な特性の何らかの組み合わせ。
図22には、上記の範囲をさらに超える提案の基本コンフィギュレーションが説明されている。このようなパートナーASICまたはパートナーμCと、本発明を備えている着目する計算ユニットとの間で、特別な照会応答サイクルが行われる。N300は、このようなモード信号を出力することができる計算ユニットである。これは、たとえば複数の実行ユニットと、このモード信号を生起することができる別のコンポーネントとを備えるμCであってよい。この別のコンポーネントは、たとえば図19または図21に示すように具体化されていてよい。N300は、この信号N310をパートナー(たとえば他の計算ユニット、他のμCまたはASIC)へ送る。パートナーは、信号N320によってN300に照会を行うことができ、N300は、N321によってこれに応答しなければならない。このような照会は計算タスクであってよく、その正しい結果が、N321を介して、定義された時間インターバル内にN300から供給される。N330はN300に関わりなく、この結果の正しさを検査する。この結果はたとえばN330に保存されるか、またはN330は結果を自ら算出することができる。正しくない値が検知されると、エラーが生じているものと認識される。ここで提案される照会応答通信の特別な点は、応答と並行してモード信号が観察されることである。照会は、N300による応答のために、この特定のモードを成立させなくてはならないように行うのが好ましい。それにより、すべてのモード切換に機能性があり、プログラム進行のなかで意図されているモード切換が実行されていることを、高い信頼度でチェックすることができる。これは特にシステムが初期化されるとき、あるいは動作中にでも、安全性コンセプトの主要な要素としての役目を果たすことができる。
この理念のさらに別の用途は、アクチュエータ制御部でモード信号を評価することにある。今日、自動車分野の多くの用途では、いわゆるインテリジェントアクチュエータが用いられる傾向がある。これは、アクチュエータ調節コマンドを受信し、そしてこの調節コマンドが遂行されるようにアクチュエータを制御するのに十分な、最低限の範囲の電子装置を備えているアクチュエータである。
この基本的理念が図23に示されている。本発明を備えている計算ユニットN400が、接続部N420を介して、(インテリジェント)アクチュエータまたはアクチュエータ制御部N430に調節コマンドを送る。これと並行して計算ユニットは、接続部N410を介して、モード信号をこのアクチュエータに送る。アクチュエータN430は、モード信号を参照して、制御が許容されているかどうかを検査し、任意選択で、信号N440を通じてエラー状態を送り返す。制御にエラーが含まれているときは、システム内部でクリティカルでないフェールサイレンス状態をとる。
Claims (17)
- 少なくとも2つの実行ユニットを備え、前記実行ユニットは少なくとも2つの動作モード間で切換が可能であり、その場合に、第1の動作モードは比較モードに相当するとともに第2の動作モードはパフォーマンスモードに相当しており、前記比較モードでは少なくとも2つの前記実行ユニットが同じプログラムコードを処理することが可能なように構成されたコンピュータシステムにおけるプログラムコードの処理分割方法において:
前記比較モードから前記パフォーマンスモードへの切換時に、前記各実行ユニットにはそれぞれ固有の識別子が割り当てられ、前記識別子に応じて少なくとも2つの前記実行ユニットに異なるプログラムコードが割り当てられることによって、プログラムコードの分割が行われることを特徴とする方法。 - 前記識別子が、前記実行ユニットの記憶装置、特にレジスタにそれぞれ含まれていることを特徴とする、請求項1に記載の方法。
- 前記識別子が、前記実行ユニットの状態レジスタにそれぞれ含まれていることを特徴とする、請求項1に記載の方法。
- 前記識別子が、前記実行ユニットの割込み状態レジスタにそれぞれ含まれていることを特徴とする、請求項1に記載の方法。
- 前記識別子が、前記実行ユニットの割込みマスキングレジスタにそれぞれ含まれていることを特徴とする、請求項1に記載の方法。
- 前記各実行ユニットの前記識別子に応じて設定可能なアドレスが参照され、前記アドレスで開始されるプログラムコードを前記各実行ユニットが処理することを特徴とする、請求項1に記載の方法。
- 設定可能なアドレスのそのつどの参照がアドレスポインタによって行われることを特徴とする、請求項6に記載の方法。
- 設定可能なアドレスのそのつどの参照がジャンプ命令によって行われることを特徴とする、請求項6に記載の方法。
- 前記各識別子が少なくとも1つの設定された識別子と比較され、一致している場合には設定されたプログラムコードが割り当てられることを特徴とする、請求項1に記載の方法。
- 前記各識別子が少なくとも1つの設定された識別子と比較され、すべての識別子が一致していない場合には、定義されていない状態の結果であることが認識されることを特徴とする、請求項1に記載の方法。
- 少なくとも2つの実行ユニットを備え、前記実行ユニットは少なくとも2つの動作モードの間で切換可能であり、その場合に、第1の動作モードは比較モードに相当するとともに第2の動作モードはパフォーマンスモードに相当しており、前記比較モードでは少なくとも2つの前記実行ユニットが同じプログラムコードを処理可能なように構成されたコンピュータシステムにおけるプログラムコードの処理分割装置において:
前記装置は、比較モードからパフォーマンスモードへの切換時に、各々の実行ユニットに識別子が割り当てられ、前記識別子に依存して少なくとも2つの実行ユニットに異なるプログラムコードが割り当てられることによって、プログラムコードの分割が行われるように構成されていることを特徴とする装置。 - 前記装置が、前記各実行ユニットの識別子が保存されている記憶装置、特にレジスタを含んでいることを特徴とする、請求項11に記載の装置。
- 前記各実行ユニットが、前記実行ユニットの識別子がそれぞれ保存されている状態レジスタを含んでいることを特徴とする、請求項11に記載の装置。
- 前記装置が、前記実行ユニットの識別子が保存されている少なくとも1つの割込み状態レジスタを含んでいることを特徴とする、請求項11に記載の装置。
- 前記装置が、前記実行ユニットの識別子が保存されている少なくとも1つの割込みマスキングレジスタを含んでいることを特徴とする、請求項11に記載の装置。
- 請求項11に記載の装置を備えているコンピュータシステムの実行ユニット。
- 2つの実行ユニットと、請求項11に記載の装置とを備えているコンピュータシステム。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE200410051952 DE102004051952A1 (de) | 2004-10-25 | 2004-10-25 | Verfahren zur Datenverteilung und Datenverteilungseinheit in einem Mehrprozessorsystem |
DE200410051950 DE102004051950A1 (de) | 2004-10-25 | 2004-10-25 | Verfahren und Vorrichtung zur Taktumschaltung bei einem Mehrprozessorsystem |
DE200410051992 DE102004051992A1 (de) | 2004-10-25 | 2004-10-25 | Verfahren und Vorrichtung zur Verzögerung von Zugriffen auf Daten und/oder Befehle eines Mehrprozessorsystems |
DE200410051964 DE102004051964A1 (de) | 2004-10-25 | 2004-10-25 | Verfahren und Vorrichtung zur Überwachung einer Speichereinheit in einem Mehrprozessorsystem |
DE200410051937 DE102004051937A1 (de) | 2004-10-25 | 2004-10-25 | Verfahren und Vorrichtung zur Synchronisierung in einem Mehrprozessorsystem |
DE200510037212 DE102005037212A1 (de) | 2005-08-08 | 2005-08-08 | Verfahren und Vorrichtung zur Trennung der Abarbeitung von Programmcode bei einem Rechnersystem mit wenigstens zwei Ausführungseinheiten |
PCT/EP2005/055507 WO2006045780A1 (de) | 2004-10-25 | 2005-10-25 | Verfahren und vorrichtung zur trennung der abarbeitung von programmcode bei einem rechnersystem mit wenigstens zwei ausführungseinheiten |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008518300A true JP2008518300A (ja) | 2008-05-29 |
Family
ID=35788712
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007537292A Pending JP2008518300A (ja) | 2004-10-25 | 2005-10-25 | 少なくとも2つの実行ユニットを備えるコンピュータシステムにおけるプログラムコードの処理分割方法および装置 |
Country Status (7)
Country | Link |
---|---|
EP (1) | EP1810146B1 (ja) |
JP (1) | JP2008518300A (ja) |
KR (1) | KR20070062576A (ja) |
AT (1) | ATE426204T1 (ja) |
DE (1) | DE502005006899D1 (ja) |
RU (1) | RU2007119318A (ja) |
WO (1) | WO2006045780A1 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010501080A (ja) * | 2006-07-31 | 2010-01-14 | クゥアルコム・インコーポレイテッド | 音声信号に関連するパケットに識別子を含めるためのシステムおよび方法 |
JP2012159956A (ja) * | 2011-01-31 | 2012-08-23 | Mitsubishi Heavy Ind Ltd | 安全装置、安全装置の演算方法 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102006048169A1 (de) | 2006-10-10 | 2008-04-17 | Robert Bosch Gmbh | Verfahren zur Überwachung einer Funktionsfähigkeit einer Steuerung |
DE102009001420A1 (de) * | 2009-03-10 | 2010-09-16 | Robert Bosch Gmbh | Verfahren zur Fehlerbehandlung eines Rechnersystems |
US9052887B2 (en) | 2010-02-16 | 2015-06-09 | Freescale Semiconductor, Inc. | Fault tolerance of data processing steps operating in either a parallel operation mode or a non-synchronous redundant operation mode |
US9842014B2 (en) | 2012-11-22 | 2017-12-12 | Nxp Usa, Inc. | Data processing device, method of execution error detection and integrated circuit |
US9823983B2 (en) | 2014-09-25 | 2017-11-21 | Nxp Usa, Inc. | Electronic fault detection unit |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0749855A (ja) * | 1992-08-31 | 1995-02-21 | Intel Corp | マイクロプロセッサを識別する識別装置およびマイクロプロセッサを識別する方法 |
JPH08506159A (ja) * | 1993-02-01 | 1996-07-02 | サムパワー・オイ | 燃料の噴射を制御する方法及び装置 |
US6615366B1 (en) * | 1999-12-21 | 2003-09-02 | Intel Corporation | Microprocessor with dual execution core operable in high reliability mode |
JP2003316598A (ja) * | 2002-04-22 | 2003-11-07 | Mitsubishi Electric Corp | 高信頼性モード動作併用長命令実行プロセッサ |
US20040186979A1 (en) * | 2001-07-26 | 2004-09-23 | Infineon Technologies Ag | Processor with several calculating units |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5452456A (en) * | 1992-12-18 | 1995-09-19 | Apple Computer, Inc. | Apparatus for executing a plurality of program segments having different object code types in a single program or processor environment |
US6243735B1 (en) * | 1997-09-01 | 2001-06-05 | Matsushita Electric Industrial Co., Ltd. | Microcontroller, data processing system and task switching control method |
DE10349581A1 (de) * | 2003-10-24 | 2005-05-25 | Robert Bosch Gmbh | Verfahren und Vorrichtung zur Umschaltung zwischen wenigstens zwei Betriebsmodi einer Prozessoreinheit |
-
2005
- 2005-10-25 JP JP2007537292A patent/JP2008518300A/ja active Pending
- 2005-10-25 AT AT05797110T patent/ATE426204T1/de not_active IP Right Cessation
- 2005-10-25 DE DE502005006899T patent/DE502005006899D1/de active Active
- 2005-10-25 RU RU2007119318/09A patent/RU2007119318A/ru not_active Application Discontinuation
- 2005-10-25 EP EP05797110A patent/EP1810146B1/de not_active Not-in-force
- 2005-10-25 KR KR1020077009142A patent/KR20070062576A/ko not_active Application Discontinuation
- 2005-10-25 WO PCT/EP2005/055507 patent/WO2006045780A1/de active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0749855A (ja) * | 1992-08-31 | 1995-02-21 | Intel Corp | マイクロプロセッサを識別する識別装置およびマイクロプロセッサを識別する方法 |
JPH08506159A (ja) * | 1993-02-01 | 1996-07-02 | サムパワー・オイ | 燃料の噴射を制御する方法及び装置 |
US6615366B1 (en) * | 1999-12-21 | 2003-09-02 | Intel Corporation | Microprocessor with dual execution core operable in high reliability mode |
US20040186979A1 (en) * | 2001-07-26 | 2004-09-23 | Infineon Technologies Ag | Processor with several calculating units |
JP2003316598A (ja) * | 2002-04-22 | 2003-11-07 | Mitsubishi Electric Corp | 高信頼性モード動作併用長命令実行プロセッサ |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010501080A (ja) * | 2006-07-31 | 2010-01-14 | クゥアルコム・インコーポレイテッド | 音声信号に関連するパケットに識別子を含めるためのシステムおよび方法 |
JP2012159956A (ja) * | 2011-01-31 | 2012-08-23 | Mitsubishi Heavy Ind Ltd | 安全装置、安全装置の演算方法 |
US9753437B2 (en) | 2011-01-31 | 2017-09-05 | Mitsubishi Heavy Industries, Ltd. | Safety device and computation method for safety device |
Also Published As
Publication number | Publication date |
---|---|
KR20070062576A (ko) | 2007-06-15 |
DE502005006899D1 (de) | 2009-04-30 |
RU2007119318A (ru) | 2008-12-10 |
WO2006045780A1 (de) | 2006-05-04 |
EP1810146B1 (de) | 2009-03-18 |
ATE426204T1 (de) | 2009-04-15 |
EP1810146A1 (de) | 2007-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2008518296A (ja) | 少なくとも2つの実行ユニットを備えるコンピュータシステムで切換をする方法及び装置 | |
JP5053854B2 (ja) | 少なくとも2つの実施ユニットを有する計算機システムにおける切替え方法および装置 | |
KR100994039B1 (ko) | 복수의 컴포넌트를 구비한 컴퓨터 시스템에서 신호를생성하기 위한 방법 및 장치 | |
JP2008518339A (ja) | 少なくとも2つの実施ユニットを有する計算機において切り替える装置および方法 | |
CN100520730C (zh) | 在具有至少两个执行单元的计算机系统中对程序代码的执行进行分离的方法和设备 | |
JP5199088B2 (ja) | 少なくとも2つの命令実行部および1つの比較ユニットを備えたコンピュータシステムを制御する方法および装置 | |
JP2008518299A (ja) | 少なくとも2つの実行ユニットを有する計算機システムの信号を評価するための方法および装置 | |
JP2008518297A (ja) | 少なくとも2つの実行ユニットを有する計算機システムで切替を行うための装置および方法 | |
JP2000040073A (ja) | マルチプロセッサ・コンピュ―タ・システムのためのi/o処理 | |
JP2000040076A (ja) | 多重コンピュ―タ・プロセスの制御 | |
JP2008518300A (ja) | 少なくとも2つの実行ユニットを備えるコンピュータシステムにおけるプログラムコードの処理分割方法および装置 | |
JP2008518301A (ja) | 少なくとも2つの実行ユニットを有する計算機システムで切替を行うための方法および装置 | |
US20110208948A1 (en) | Reading to and writing from peripherals with temporally separated redundant processor execution | |
US20080313384A1 (en) | Method and Device for Separating the Processing of Program Code in a Computer System Having at Least Two Execution Units | |
JP2008518340A (ja) | 少なくとも2つの実施ユニットを有する計算機システムにおいて切り替える方法および装置 | |
CN101048746A (zh) | 用于评价具有至少两个执行单元的计算机系统的信号的方法和设备 | |
JP2009505179A (ja) | 少なくとも2つの実行ユニットを有する計算機システムにおいてレジスタのマーキングによってスタート状態を定める方法および装置 | |
RU2384877C2 (ru) | Способ и устройство для генерирования сигнала в вычислительной системе, включающей в себя несколько компонентов | |
JP2009506408A (ja) | 複数の実行ユニットを有する計算機システム内のプロセスを分析する方法および装置 | |
Koser et al. | A chip-level redundant threading (CRT) scheme for shared-memory protection | |
JP2009505187A (ja) | 少なくとも2つの命令実行部を備えたコンピュータシステムにおいてレジスタセットの切り替えにより初期状態を設定する方法および装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090428 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100427 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20101005 |