(57)【要約】少なくとも２つのプロセッサを有するマルチプロセッサシステムにおける同期化のための方法および装置であって、切替手段が設けられ、切替手段によって少なくとも２つの動作モードが切替可能であり、装置は、先行するプロセッサを少なくとも第２のプロセッサと同期化させるために停止させる停止信号によって、同期化が実施されるように形成されている。【選択図】図３
2008518309.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも２つのプロセッサを有するマルチプロセッサシステムにおける同期化のための方法であって、切替手段が設けられ、前記切替手段によって少なくとも２つの動作モードが切替可能であり、先行するプロセッサを少なくとも第２のプロセッサと同期化させるために停止させる停止信号によって、前記同期化が実施されることを特徴とする、同期化のための方法。
【請求項２】
前記同期化が同期化意図によって作動され、前記同期化意図が少なくとも１つのプロセッサにより行われうることを特徴とする、請求項１に記載の方法。
【請求項３】
前記停止信号としてプロセッサの待機信号が用いられることを特徴とする、請求項１に記載の方法。
【請求項４】
前記停止信号としてインターラプト信号が作動されることを特徴とする、請求項１に記載の方法。
【請求項５】
前記同期化のためにクロックサイクルのスキップによって前記プロセッサが停止されることを特徴とする、請求項１に記載の方法。
【請求項６】
前記同期化のためにクロック信号の遮断によって前記プロセッサが停止されることを特徴とする、請求項１に記載の方法。
【請求項７】
前記切替が切替意図によって表され、前記切替意図が信号によって作動されることを特徴とする、請求項１に記載の方法。
【請求項８】
前記切替が切替意図によって表され、少なくとも２つのプロセッサにより前記切替意図が要求された場合に初めて前記切替が行われることを特徴とする、請求項１に記載の方法。
【請求項９】
前記切替が切替意図によって作動され、前記切替意図に従って前記マルチプロセッサシステムの前記動作モードが切替えられ、前記切替意図が信号によって通知されることを特徴とする、請求項１に記載の方法。
【請求項１０】
現在の前記動作モードがモード信号によって通知されることを特徴とする、請求項１に記載の方法。
【請求項１１】
前記モード信号が符号化された信号、特にデュアルレール信号として存在することを特徴とする、請求項１０に記載の方法。
【請求項１２】
前記モード信号が特に２つの状態オートマトンまたはデュアルレールロジックによって冗長的に生成されることを特徴とする、請求項１０に記載の方法。
【請求項１３】
同期化意図が中央のユニットに伝達され、前記中央のユニットが前記同期化意図を少なくとも１つの他のプロセッサにさらに伝達することを特徴とする、請求項１に記載の方法。
【請求項１４】
前記同期化が切替意図の通知によって行われ、前記通知によって前記プロセッサが予め設定されたプログラムアドレスにジャンプすることを特徴とする、請求項１に記載の方法。
【請求項１５】
一方のプロセッサがタスクを処理した後に同一のプログラム箇所に同様に到達するまでの間に亘って他方のプロセッサが停止されることを特徴とする、請求項１に記載の方法。
【請求項１６】
同期化後に、非同期化のために、前記マルチプロセッサシステム内のプロセッサの各々に固有の識別子（ＩＤ）に基づいて、前記２つのプロセッサが異なるプログラム箇所にジャンプすることによって非同期化することを特徴とする、請求項１に記載の方法。
【請求項１７】
少なくとも２つのプロセッサを有するマルチプロセッサシステムにおける同期化のための装置であって、切替手段が設けられ、前記切替手段によって少なくとも２つの動作モードが切替可能であり、先行するプロセッサを少なくとも第２のプロセッサと同期化させるために停止させる停止信号によって、前記同期化が実施されるように形成されていることを特徴とする、同期化のための装置。
【請求項１８】
第１の動作モードは、前記２つのプロセッサが同一のプログラムを処理する安全モードに相当し、かつ比較手段が設けられており、前記比較手段は、前記同一のプログラムの処理に際して生じる状態の一致について比較することを特徴とする、請求項１７に記載の装置。
【請求項１９】
前記停止信号としてプロセッサの待機信号が用いられるように形成されていることを特徴とする、請求項１７に記載の装置。
【請求項２０】
前記停止信号としてインターラプト信号が作動されるように形成されていることを特徴とする、請求項１７に記載の装置。
【請求項２１】
前記同期化のためにクロックサイクルのスキップによって前記プロセッサが停止されるように形成されていることを特徴とする、請求項１７に記載の装置。
【請求項２２】
前記同期化のためにクロック信号の遮断によって前記プロセッサが停止されるように形成されていることを特徴とする、請求項１７に記載の装置。
【請求項２３】
現在の前記動作モードがモード信号によって通知されるように形成されていることを特徴とする、請求項１７に記載の装置。
【請求項２４】
前記モード信号が符号化された信号、特にデュアルレール信号として存在するように形成されていることを特徴とする、請求項２３に記載の装置。
【請求項２５】
前記モード信号が特に２つの状態オートマトンまたはデュアルレールロジックによって冗長的に生成されるように形成されていることを特徴とする、請求項２３に記載の装置。
【請求項２６】
中央のユニットが設けられており、かつ、同期化意図が前記中央のユニットに伝達され、前記中央のユニットが前記同期化意図を少なくとも１つの他のプロセッサにさらに伝達するように形成されていることを特徴とする、請求項１７に記載の装置。
【請求項２７】
少なくとも第２のプロセッサがタスクを処理した後に同一のプログラム箇所に到達するまでの間に亘って他方のプロセッサが停止されるように、形成されていることを特徴とする、請求項１７に記載の装置。
【請求項２８】
同期化後に、非同期化のために、前記マルチプロセッサシステム内のプロセッサの各々に固有の識別子（ＩＤ）に基づいて、前記２つのプロセッサが異なるプログラム箇所にジャンプすることによって非同期化するように、形成されていることを特徴とする、請求項１７に記載の装置。
【請求項２９】
プロセッサレジスタが設けられており、かつ前記プロセッサレジスタ内に前記識別子が格納されていることを特徴とする、請求項２８に記載の装置。
【請求項３０】
前記識別子が前記プロセッサの外部に、特に中央のユニット（ＤｒａｍＣｔｒｌ）に格納されていることを特徴とする、請求項２８に記載の装置。
【請求項３１】
前記動作モードを切替えるための前記切替手段が、特に状態オートマトンの二重化またはデュアルレールロジックの実装によってエラーを許容するように設けられていることを特徴とする、請求項１７に記載の装置。
【請求項３２】
請求項１７〜３１のいずれか１項に記載の装置を備えるマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
特に自動車分野または工業製品分野、従って例えば機械分野およびオートメーション分野のような技術的適用では、安全上重要な適用のために、マイクロプロセッサベースまたは計算機ベースの開ループ制御および閉ループ制御システム（Steuerungs- und Regelungssystem）がますます多用されている。この場合にダブル計算機システムまたはダブルプロセッサシステム（デュアルコア）は、特に車両内の例えばアンチブロッキングシステム、電子安定化プログラム（ＥＳＰ）、ドライブ−バイ−ワイヤもしくはステア−バイ−ワイヤおよびブレーキ−バイ−ワイヤ等のようなＸ−バイ−ワイヤ−システムにおいて、または他のネットワーク化されたシステム等において、安全上重要な適用のために今日普及している計算機システムである。将来の適用において高い安全性要求を満足させるために、特に、例えば計算機システムの半導体構造の小型化に際して生じる過渡的エラーに対処するために、強力なエラー認識機構およびエラー処理機構が必要とされる。この場合にコア自体、従ってプロセッサを保護することは比較的困難である。このための一つの解決策として、前述したように、エラー検出のためにダブル計算機システムまたはデュアルコアシステムが使用される。
【０００２】
少なくとも２つの統合された実行ユニットを備えるこの種のプロセッサユニットは、デュアルコアアーキテクチャまたはマルチコアアーキテクチャとして知られている。この種のデュアルコアアーキテクチャまたはマルチコアアーキテクチャは、現在の技術水準によれば、主として以下の２つの理由から提案される。
【０００３】
第１の理由は、２つの実行ユニットまたはコアが半導体モジュール上の２つの計算ユニットとみなされて取扱われることにより、出力向上、従ってパフォーマンス向上が実現されうる点にある。この設定では、２つの実行ユニットまたはコアは、異なるプログラムもしくはタスクを処理する。これによって出力向上が実現され、従ってこの設定は、出力モードまたはパフォーマンスモードと称される。
【０００４】
デュアルコアアーキテクチャまたはマルチコアアーキテクチャを実現する第２の理由は、２つの実行ユニットが冗長的に同一のプログラムを処理することによる安全性向上にある。２つの実行ユニットまたはＣＰＵ、従ってコアの処理結果が比較され、一致についての比較に際してエラーが認識されうる。以下では、この設定は、安全モードまたはセーフティモードまたはエラー認識モードとも称される。
【０００５】
よって、現在のところ、一方で、ハードウェアエラーを認識するために冗長的に機能するダブルプロセッサシステムまたはマルチプロセッサシステムがあり（デュアルコアまたはマスター−チェッカーシステムを参照）、他方で、そのプロセッサ上で異なるデータを処理するダブルプロセッサシステムまたはマルチプロセッサシステムがある。ダブルプロセッサシステムまたはマルチプロセッサシステムにおいて、以下の発明の実施形態に従ってこれら２つの動作モードを組合せる場合には（説明の便宜上、ここではダブルプロセッサシステムについてのみ説明するが、以下の発明はマルチプロセッサシステムについても全く同様に適用可能である。）、２つのプロセッサは、パフォーマンスモードでは異なるデータを取得する必要があり、エラー認識モードでは同一のデータを取得する必要がある。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の課題は、少なくとも２つのプロセッサまたはコアに指令／データをモードに応じて冗長的に、または異なるように供給し、特にパフォーマンスモードではメモリアクセス権を分割し、モード切替に際して２つのプロセッサまたはコアの同期化および／または非同期化を可能にする、ユニットおよび方法を提供することである。
【０００７】
今日まで、この種のユニットは、まだ知られていない。この種のユニットは、ダブルプロセッサシステムの効果的な動作を可能にするために、安全およびパフォーマンスの２つのモードで動作中に切替可能である。この場合に以下ではプロセッサについて説明するが、概念的にはコアもしくは計算ユニットも同様に含むものである。
【０００８】
さらに、本発明の課題は、マルチプロセッサシステムの同期化を行うことができる可能性を提供することである。今日まで、この種の方法もしくは実装は、まだ知られていない。２つのモードの一方のみを可能とするマルチプロセッサシステムは存在するが、クロック同期で動作して切替可能であり、データをクロックに従って比較することができる、マルチプロセッサシステムは存在しない。提供された方法によって、クロックに従って、かつクロックに同期して同期化が行われうるが、この種の正確な同期が要求されない適用も存在する。この場合に本方法は、「ルーズな」同期化を達成するためにも適用されうる。ルーズな同期とは、２つのプロセッサが同一の処理を実行するが、比較器によって予め設定可能な範囲内で処理の時間間隔が変動しうるような同期化である。
【０００９】
（実施例の説明と発明の利点）
ダブル計算機システムは、同一または異なるタスクを処理可能な２つのプロセッサを有する。ダブル計算機システムのこれら２つのプロセッサは、これらのタスクをクロック同期またはクロックオフセットで処理可能である。
【００１０】
出力データをクロック同期で比較する必要があるクロック同期システム内で、２つのモード間の切替を可能にするためには、２つのプロセッサが同期化可能でなければならない。すなわち、プロセッサがパフォーマンスモード（＝異なるタスクを処理し、その出力データが比較されないモード）から安全モード（＝２つのプロセッサが同一のタスクを処理し、その出力が各々のクロックで比較されるモード）に切替えられる場合に、２つのプロセッサはプログラムシーケンス中で同期化されなければならない。
【００１１】
すなわち、本発明は、切替意図が信号によって作動される方法および装置を示す。この信号は、例えば指令バスの観察によって生成可能であり（切替意図が実施されるかを確認する。）またはデコーダの制御信号であることができ（例えば他方のプロセッサでのインターラプトの作動、レジスタへの書込み、…）、それらによってプロセッサが予め設定されたプログラムアドレスにジャンプ可能である。
【００１２】
その他に、マルチプロセッサシステム内の各々のプロセッサに固有の識別子、従ってＩＤに基づいて、２つのプロセッサが異なるプログラム箇所にジャンプすることによって非同期化されるようにしてもよい（プロセッサＩＤビットによるプロセッサ識別、条件付ジャンプ、プロセッサ毎に異なるが、同一のアドレスを有するメモリ領域からのプロセッサＩＤビットの読出し、内部のプロセッサレジスタへのプロセッサＩＤビットの格納が重要である。）。
【００１３】
本発明は、少なくとも２つのプロセッサを有するマルチプロセッサシステムにおける同期化のための方法および装置を開示しており、その場合に切替手段が設けられ、切替手段によって少なくとも２つの動作モードが切替可能であり、その場合に本装置は、先行するプロセッサを少なくとも第２のプロセッサと同期化させるために先行するプロセッサを停止させる停止信号によって、同期化が実施されるように形成されている。
【００１４】
同期化が少なくとも１つのプロセッサの切替意図の通知（Mitteilung）によって行われ（例えば、他のプロセッサでのインターラプトの作動、レジスタへの書込み、…）、通知によってプロセッサが予め設定されたプログラムアドレスにジャンプするようにしてもよい。
【００１５】
さらに、本発明は、少なくとも２つの計算ユニットを有するシステムにおいて、少なくとも１つのデータ源からのデータを分配するユニットを示しており、その場合に切替手段（モード切替）が備えられ、切替手段によってシステムの少なくとも２つの動作モードが切替可能であり、その場合にユニットは、データ分配および／またはデータ源（特に指令メモリ、データメモリ、キャッシュ）が動作モードに依存するように形成されている。同様に、この種のユニットを備えるシステムが示される。
【００１６】
この場合には、第１の動作モードが安全モードに相当し、安全モードでは２つの計算ユニットが同一のプログラムおよび／またはデータを処理し、かつ比較手段が設けられており、その比較手段が同一のプログラムの処理に際して生じる状態の一致について比較する。
【００１７】
本発明に基づくユニットもしくは方法は、ダブルプロセッサシステムにおいて２つのモードの実装を可能にする。
【００１８】
２つのプロセッサがエラー認識モード（Ｆモード）で機能する場合には、２つのプロセッサが同一のデータおよび／または指令を取得し、パフォーマンスモード（Ｐモード）で機能する場合には、各プロセッサがメモリにアクセスすることができる。そして、このユニットが、単一に備えられたメモリまたは周辺機器へのアクセスを管理する。
【００１９】
Ｆモードでは、ユニットは、プロセッサ（ここではマスター）のデータ／アドレスを引き継ぎ、メモリ、バス等のようなコンポーネントに伝達する。ここで、第２のプロセッサ（ここではスレーブ）が同じアクセスを行おうとする。データ分配ユニットは、これを第２のポートで受取るが、その照会を他のコンポーネントに伝達しない。データ分配ユニットは、マスターと同一のデータをスレーブに引き継ぎ、２つのプロセッサのデータを比較する。これらが異なっていれば、データ分配ユニット（ここではＤＶＥ）は、その旨をエラー信号によって通知する。よって、マスターのみがバス／メモリに対して作用し、スレーブが同一のデータを取得する（デュアルコアシステムの場合のような機能性）。
【００２０】
Ｐモードでは、２つのプロセッサが異なるプログラム部分を処理する。よって、メモリアクセスも異なる。よって、ＤＶＥは、プロセッサの要求を受けて、要求したプロセッサに結果の／要求されたデータを与える。２つのプロセッサが同時に同一のコンポーネントにアクセスしようとすると、一方のプロセッサは、他方が操作されるまで待機状態にされる。
【００２１】
２つのモードおよびそれに伴うデータ分配ユニットの異なる機能性の切替は、制御信号によって行われる。これは、２つのプロセッサの一方により、または外部で生成可能である。
【００２２】
ダブルプロセッサシステムが、Ｆモードではクロックオフセットを伴って、かつＰモードではクロックオフセットなしで動作する場合には、ＤＶＥユニットは、スレーブのためのデータを然るべく遅延させ、または、エラー認識のためにスレーブの出力データと比較可能となるまでマスターの出力データを記憶する。
【００２３】
図１を用いて、クロックオフセットについて詳細に説明する。
【００２４】
図１は、第１の計算機１００、特にマスター計算機と、第２の計算機１０１、特にスレーブ計算機とを備えるダブル計算機システムを示している。この場合にシステム全体は、予め設定可能なクロックもしくは予め設定可能なクロックサイクル（clock cycle）ＣＬＫで動作する。計算機１００のクロック入力ＣＬＫ１および計算機１０１のクロック入力ＣＬＫ２を介して、システムにクロックが供給される。このダブル計算機システムでは、さらに、エラー認識のための特殊な特徴を有しており、すなわち、第１の計算機１００と第２の計算機１０１とがタイムオフセット、特に予め設定可能なタイムオフセットもしくは予め設定可能なクロックオフセットを伴って機能する。この場合に、タイムオフセットのために任意の時間を各々に予め設定可能であり、かつクロックサイクルのオフセットに関する任意のクロックも各々に予め設定可能である。これは、クロックサイクル（clock cycle）の整数倍のオフセットであっても、または例示するように、例えば１．５クロックサイクルのオフセットであってもよく、ここでは、第１の計算機１００が第２の計算機１０１よりも１．５クロックサイクル早く機能もしくは動作する。このオフセットによって、同一クロックエラー、いわゆるコモンモードエラーが、計算機またはプロセッサ、従ってデュアルコアシステムのコアに同様の障害を及ぼし、よって認識されないままとなることが回避可能となる。すなわち、この種の同一クロックエラーは、オフセットによってプログラムシーケンスの異なる時点で計算機に作用し、よって２つの計算機に関して異なる効果を及ぼし、それによってエラーが認識可能となる。クロックオフセットを伴わない同様のエラー効果は、場合によっては比較に際して認識不能となるが、これによって認識不能となることが回避される。タイムまたはクロックに関するオフセット（ここでは特に１．５クロックサイクル）をダブル計算機システムに導入するために、オフセットモジュール１１２〜１１５が実装される。
【００２５】
前述した同一クロックエラーを認識するために、このシステムは、例えば、予め設定されたタイムオフセットまたはクロックサイクルオフセット（ここでは特に１．５クロックサイクル）で機能するように設計されており、すなわち、一方の計算機、特に計算機１００がコンポーネント、特に外部コンポーネント１０３、１０４に直接的に応答し、第２の計算機１０１がそれに対して正確に１．５クロックサイクルの遅延を伴って機能する。この場合に所望の１と半分、従って１．５クロックサイクルの遅延を発生させるために、計算機１０１のクロック入力ＣＬＫ２に反転されたクロックが供給される。しかし、これによって、前述した計算機のアクセス、従ってそのデータもしくは指令もバスを介して前述したクロックサイクル（特にここでは１．５クロックサイクル）分だけ遅延される必要があり、そのために、前述したようなオフセットモジュールもしくは遅延モジュール１１２〜１１５が備えられている。２つの計算機またはプロセッサ１００、１０１の他に、コンポーネント１０３、１０４が備えられており、それらは、バス線１１６Ａ、１１６Ｂおよび１１６Ｃからなるバス１１６と、バス線１１７Ａおよび１１７Ｂからなるバス１１７とを介して、２つの計算機１００および１０１と接続されている。この場合にバス１１７は、指令バスであって、１１７Ａが指令アドレスバス、１１７Ｂが指令部分（データ）バスを示している。アドレスバス１１７Ａは、指令アドレス接続ＩＡ１（Instruction Address 1）を介して計算機１００と、指令アドレス接続ＩＡ２（Instruction Address 2）を介して計算機１０１と各々に接続されている。指令自体は、指令部分バス１１７Ｂを介して伝達され、その指令部分バスが指令接続Ｉ１（Instruction 1）を介して計算機１００と、指令接続Ｉ２（Instruction 2）を介して計算機１０１と接続されている。１１７Ａおよび１１７Ｂで構成される指令バス１１７には、コンポーネント１０３、例えば指令メモリ、特に安全な指令メモリ等が中間接続されている。特に指令メモリとしてのコンポーネントも、この例ではクロックＣＬＫで動作する。この他には、符号１１６でデータバスが示されており、これはデータアドレスバスまたはデータアドレス線１１６Ａとデータバスまたはデータ線１１６Ｂとを有している。この場合に１１６Ａ、従ってデータアドレス線は、データアドレス接続ＤＡ１（Data Address 1）を介して計算機１００と、データアドレス接続ＤＡ２（Data Address 2）を介して計算機１０１と各々に接続されている。同様に、データバスまたはデータ線１１６Ｂは、データ接続ＤＯ１（Data Out 1）およびデータ接続ＤＯ２（Data Out 2）を介して計算機１００および計算機１０１と各々に接続されている。さらに、データバス１１６には、データバス線１１６Ｃが含まれており、それはデータ接続ＤＩ１（Data In 1）およびデータ接続ＤＩ２（Data In 2）を介して計算機１００および計算機１０１と各々に接続されている。線１１６Ａ、１１６Ｂおよび１１６Ｃからなるデータバス１１６内には、コンポーネント１０４、例えばデータメモリ、特に安全なデータメモリ等が中間接続されている。コンポーネント１０４も、この例ではクロックＣＬＫで動作する。
【００２６】
この場合にコンポーネント１０３、１０４は、データバスおよび／または指令バスを介してダブル計算機システムの計算機と接続されて、ダブル計算機システムのデータおよび／または指令を介してのアクセスに応じて、書込み操作および／または読取り操作に関してエラーを伴うデータおよび／または指令を入力されまたは出力しうる任意のコンポーネントを代表している。エラー回避のために、特にエラー識別子生成器１０５、１０６および１０７が備えられており、それらは、例えば、パリティビットのようなエラー識別子、または、例えばエラー訂正符号、従ってＥＣＣ等のような他のエラー符号を生成する。この場合には、さらに、各々のエラー識別子、従って例えばパリティビットまたはＥＣＣのような他のエラー符号を検査するための適当なエラー識別子検査装置またはチェック装置１０８、１０９も備えられている。
【００２７】
ダブル計算機システムの冗長的な実行に関するデータおよび／または指令の比較は、図１に示すような比較器またはコンパレータ１１０、１１１で行われる。しかし、同期されていないダブルプロセッサシステムによって、もしくは同期されたダブルプロセッサシステムで同期化中のエラーによって、またはこの特殊例のように、エラー認識のために望まれるタイムオフセットもしくはクロックサイクルオフセット（特にここでは１．５クロックサイクル）によってもたらされる、タイムオフセット、特にクロックオフセットまたはクロックサイクルオフセットが計算機１００と１０１との間に存在する場合には、このタイムオフセットまたはクロックオフセット内で、計算機、ここでは特に計算機１００がコンポーネント、特に、例えばここでは特にメモリ１０３もしくは１０４のような外部コンポーネント、または他のノード（Teilnehmern）またはアクチュエータまたはセンサに関して、エラーを伴うデータおよび／または指令を書込みまたは読取る可能性がある。すなわち、計算機は、オフセットによって、予め設定された読取りアクセスの代りに、誤って書込みアクセスを実行する場合もありうる。このような場合には、もちろん、特にいずれのデータおよび／または指令がまさに誤って変更されたかという明確な指示可能性なしに、システム全体にエラーが及ぼされ、それによってリカバリー問題も生じる。
【００２８】
この問題を解決するために、遅延ユニット１０２が図示のようにデータバスの線および／または指令バスに接続される。説明の便宜上から、データバスへの接続のみが示されている。指令バスに関しても、もちろん同様に可能であって、かつ考えられる。この遅延ユニット（Verzoegerunseinheit、Delay Unit）１０２は、アクセス、ここでは特にメモリアクセスを、可能とされるタイムオフセットまたはクロックオフセットが補償されるように遅延させ、特に、例えば比較器１１０、１１１を介したエラー認識に際しては、例えば、少なくともダブル計算機システム内でエラー信号が生成され、従ってダブル計算機システム内でエラー認識が実行されるまでの間に亘って遅延させる。この場合には、例えば、書込み操作および読取り操作の遅延、書込み操作のみの遅延、または、余り望ましくはないが、読取り操作の遅延等のような種々の変形例が実装可能である。この場合に、エラーを伴う書込みを禁止するために、変更信号、特にエラー信号によって、遅延された書込み操作を読取り操作に変換可能である。
【００２９】
次に、図２を用いて、切替意図を検出する装置（ＩｌｌＯＰＤｅｔｅｃｔによって）、モード切替ユニット、Ｉｒａｍ制御モジュールおよびＤｒａｍ制御モジュールで望ましくは構成される、データ分配ユニット（ＤＶＥ：Datenverteilungseinheit）に関する実装例を説明する。
【００３０】
ＩｌｌＯｐＤｅｔｅｃｔ：２つのモード間の切替が切替検出（Switch-Detect）ユニットによって認識される。このユニットは、指令バス上でキャッシュとプロセッサとの間に配置されて、指令ＩｌｌＯｐがプロセッサにロードされるかを確認する。指令が検出されると、このイベントがモード切替（Mode Switch）ユニットに報告される。切替検出ユニットは、プロセッサの各々に個別に備えられている。切替検出ユニットは、エラー許容するように形成される必要はない。というのは、このユニットは二重化されており、よって冗長的に備えられているからである。他方で、このユニットがエラー許容するように、よって単一での実施も考えられるが、冗長的な実施の方が望ましい。
【００３１】
ＭｏｄｅＳｗｉｔｃｈ：モード間の切替は、切替検出ユニットによってトリガーされる。ロックモードからスプリットモードへの切替に際して、２つの切替検出ユニットが切替を検出する。というのは、ロックモードでは、２つのプロセッサが同一のプログラムコードを処理するからである。プロセッサ１の切替検出ユニットは、この切替をプロセッサ２の切替検出ユニットより１．５クロック早く認識する。モード切替ユニットは、待機信号を用いてプロセッサ１を２クロックのみ停止させる。プロセッサ２は、１．５クロック遅れて同様に停止されるが、０．５クロックのみ停止され、よってシステムクロックに同期化される。次に、状態信号が他のコンポーネントのためにスプリットに切替えられ、２つのプロセッサはさらに機能を続ける。よって、２つのプロセッサが異なるタスクを実行するために、それらはプログラムコード中で互いに分離される必要がある。これは、スプリットモードへの切替直後にプロセッサＩＤに対する読取りアクセスがなされることで行われる。この読取られたプロセッサＩＤは、２つのプロセッサの各々に関して異なっている。目標プロセッサＩＤが比較されると、次に、条件付分岐指令によって、該当するプロセッサが他のプログラム箇所に分岐されうる。スプリットモードからロックモードへの切替に際しては、１つのプロセッサもしくは２つのプロセッサの一方がまず切替に気づく。このプロセッサが、切替指令を含むプログラムコードを実行する。これが、切替検出ユニットによって確認されて、それがモード切替ユニットに通知される。モード切替ユニットが、該当するプロセッサを停止させて、第２のプロセッサにインターラプトによって同期化の意図を通知する。第２のプロセッサは、インターラプトを受けて、タスクを終了させるためのソフトウェアルーチンを実行可能である。そして、このプロセッサが同様に、切替指令があるプログラム箇所に分岐する。この切替検出ユニットが、同様にモード切替の意図をモード切替ユニットに通知する。次のシステムクロックの上昇端（steigenden Systemtaktflanke）で、プロセッサ１に対する待機信号が非能動化されて、１．５クロック遅れてプロセッサ２に対する待機信号が同様に非能動化される。そして、両者は再び１．５クロックのクロックオフセットを伴って同期して機能する。
【００３２】
システムがロックモードにある場合には、２つの切替検出ユニットは、スプリットモードへの切替を意図していることをモード切替ユニットに通知する必要がある。切替意図が一方のユニットのみから行われると、比較ユニットによりエラーが認識される。というのは、比較ユニットは、２つのプロセッサの他方より、停止されているプロセッサとは一致しないデータをさらに供給されているからである。
【００３３】
２つのプロセッサがスプリットモードにあり、かつ一方がロックモードに切替わらなければ、それが外部のウォッチドッグによって認識可能である。各プロセッサに関するトリガー信号により、ウォッチドッグは、待っているプロセッサからもはや報告がなされないことに気づく。プロセッサシステムのために１つのウォッチドッグ信号のみが存在する場合には、ウォッチドッグはロックモードでのみトリガーを許可される。よって、ウォッチドッグは、モード切替が行われなかったことを認識する。モード信号は、デュアルレール信号として存在する。この場合に”１０”がロックモードを、”０１”がスプリットモードを表す。”００”および”１１”では、エラーが発生している。
【００３４】
ＩｒａｍＣｏｎｔｒｏｌ：２つのプロセッサの指令メモリへのアクセスは、Ｉｒａｍ制御を介して制御される。Ｉｒａｍ制御は、安全に設計される必要がある。というのは、Ｉｒａｍ制御が単一障害点（Single Point of Failure）となるからである。Ｉｒａｍ制御は、プロセッサの各々について、クロック同期のiram1clkresetと非同期のreadiram1との２つの状態オートマトンからなる。安全上重要なモードでは、２つのプロセッサの状態オートマトンが相互に監視し合い、パフォーマンスモードでは別々に機能する。
【００３５】
２つのプロセッサのキャッシュのリロードは、同期のiramclkresetと非同期のreadiramとの２つの状態オートマトンによって制御される。これら２つの状態オートマトンによって、スプリットモードでのメモリアクセスも分配される。この場合にプロセッサ１は、より高い優先順位を有する。プロセッサ１によるメインメモリへのアクセスの後に、２つのプロセッサが再びメインメモリにアクセスしようとすると、プロセッサ２がメモリアクセスの許可を割当てられる。これら２つの状態オートマトンは、プロセッサの各々について実装されている。ロックモードでは、発生したエラーを認識可能とするために、オートマトンの出力信号が比較される。
【００３６】
ロックモードでキャッシュ２を更新するためのデータは、Ｉｒａｍ制御ユニット内で１．５クロック遅延される。
【００３７】
Ｓｙｓ制御のレジスタ０のビット５には、いずれのコアが問題であるかが符号化される。コア１であればビット値０であり、コア２であればビット値１である。このレジスタは、アドレス６５５２８を伴うメモリ領域に反映されている。
【００３８】
コア２によるメモリアクセスに際して、まず、計算機がいずれのモードにあるかが調べられる。計算機がロックモードにあれば、そのメモリアクセスが抑制される。この信号は、安全上重要であるためコモンレール信号として存在する。
【００３９】
プロセッサ１のプログラムカウンタは、ロックモードでプロセッサ２のプログラムカウンタと比較可能となるように１．５クロック遅延される。
【００４０】
スプリットモードでは、２つのプロセッサのキャッシュは、異なるようにリロードされうる。ロックモードへの切替に際して、２つのキャッシュは互いに干渉し合わない。よって、２つのプロセッサは、互いに分離して進行され、よって比較器がエラーを通知する。これを回避するために、Ｉｒａｍ制御内にフラグテーブルが構築されている。この中に、キャッシュ行（Cachezeile）がロックモードまたはスプリットモードのいずれで書込まれたかが登録される。ロックモードでは、キャッシュ行に該当する登録がキャッシュ行リロードに際して０に設定され、スプリットモードでは、一方のキャッシュのみによりキャッシュ行がキャッシュ更新される場合でも、１に設定される。プロセッサがロックモードでメモリアクセスを実行する場合には、このキャッシュ行がロックモードで更新されたか、すなわち２つのキャッシュ内で同一であるかが調べられる。スプリットモードでは、プロセッサは、フラグベクトルの状態にかかわらずに、常にキャッシュ行にアクセス可能である。このテーブルは、一度のみ存在すればよい。というのは、エラーに際しては、２つのプロセッサが互いに分離して進行され、よってこのエラーが比較器で確実に認識されるからである。中央のテーブルへのアクセス時間が比較的長いので、このテーブルが各キャッシュにコピーされてもよい。
【００４１】
ＤｒａｍＣｏｎｔｒｏｌ：このコンポーネントでは、アドレス信号、データ信号およびメモリ制御信号のために、プロセッサの各々によりパリティが形成される。
【００４２】
２つのプロセッサについて、メモリを遮断するためのプロセスがある。このプロセスは、安全に実装されている必要はない。というのは、ロックモードでは、エラーを伴うメモリアクセスが比較器によって認識され、スプリットモードでは、安全上重要なアプリケーションが実行されないからである。ここでは、一方のプロセッサが他方のプロセッサのためにメモリを遮断しようとしているかが調べられる。データメモリの遮断は、メモリアドレス＄ＦＢＦＦ＄＝６４５１１へのアクセスによって行われる。この信号は、呼出しの時点でプロセッサに待機指令が印加されている場合でも、正確に１クロックの長さで印加される必要がある。データメモリアクセスを管理するための状態オートマトンは、以下の２つのメイン状態からなる。
−プロセッサ状態Ｌｏｃｋ：２つのプロセッサがロックモードで機能する。すなわち、データメモリロッキングの機能が必要とされない。プロセッサ１がメモリアクセスを調整する。
−プロセッサ状態Ｓｐｌｉｔ：データメモリに対するアクセス競合の解決が必要であって、メモリ遮断を行う必要性がある。
【００４３】
スプリットモードでの状態は、さらに、アクセス競合を解決し、かつ各々の他方のプロセッサのためにデータメモリを遮断可能な以下の７つの状態に区分される。２つのプロセッサにより同時に１つのアクセスが意図される場合には、記載された順序が同時に優先順位を表している。
【００４４】
−Ｃｏｒｅ１/＿Ｌｏｃｋ：プロセッサ１がデータメモリを遮断している。この状態では、プロセッサ２がメモリにアクセスしようとすると、プロセッサ１がデータメモリを解放するまで、プロセッサ２は待機信号によって停止される。
−Ｃｏｒｅ２/＿Ｌｏｃｋ：前述と同じ状態で、プロセッサ２がデータメモリを遮断しており、プロセッサ１はデータメモリ操作に際して停止される。
−ｌｏｃｋ１/＿ｗａｉｔ：データメモリは、プロセッサ２と同様にプロセッサ１が自らのために予約しようとした際に、プロセッサ２によって遮断されている。よって、プロセッサ１は、次のメモリ遮断を予約する。
−ｎｅｘ：プロセッサ２について同様。データメモリは、プロセッサ１による遮断の試みの間に亘って遮断されている。プロセッサ２は、メモリの予約を受け付けられた。遮断を伴わない通常のメモリアクセスに際しては、ここでは、その前にプロセッサ１の順番であった場合に、プロセッサ２がプロセッサ１より前にアクセス可能である。
−プロセッサ１によるメモリアクセス：この場合にはメモリが遮断されていない。プロセッサ１は、データメモリへのアクセスを許可される。プロセッサ１は、メモリを遮断しようとする場合には、この状態で行う。
−プロセッサ２によるメモリアクセス：同クロック内でプロセッサ１はメモリにアクセスしようとせず、よってメモリはプロセッサ２のために解放されている。
−いずれのプロセッサも、データメモリにアクセスしようとしない。
【００４５】
ＤＶＥは、前述したように、切替意図の検出器（ＩｌｌＯＰＤｅｔｅｃｔ）、モード切替ユニット、Ｉｒａｍ制御およびＤｒａｍ制御から構成される。
【００４６】
以下では、図３を用いてモード切替機能の方法がもう一度説明される。
【００４７】
２つのプロセッサの切替えは、ここでは例えばプログラム内の指令ＩｌｌＯｐによってトリガーされる。各々のプロセッサが一義的に識別可能であることが前提とされる。このために、各々のプロセッサに番号が対応づけられる。この例では、一方のコアが１であり、他方のコアが０である。これらは、プロセッサ状態レジスタ内に符号化される。
【００４８】
２つのプロセッサは、ここで同期化のために待機コマンドによって停止される。同様に、停止されるべきプロセッサのためのクロックを、この間に亘って停止させうる（例えば、０で停止し、１で再びクロック制御するＯＲ結合によって）。
【００４９】
Ｓｗｉｔｃｈ−Ｄｅｔｅｃｔユニット：２つのモードの間の切替が切替検出（Switch-Detect）ユニットによって認識される。このユニットは、指令バス上でキャッシュとプロセッサとの間に配置されて、指令ＩｌｌＯｐがプロセッサにロードされるかを確認する。指令が検出されると、このイベントがモード切替（Mode-Switch）ユニットに報告される。この認識は、”コア１信号”または”コア２信号”（図２を参照）によってモード切替ユニットに報告される。切替検出ユニットは、各々のプロセッサに個別に備えられている。切替検出ユニットは、エラー許容するように形成される必要はない。というのは、このユニットは二重化されており、よって冗長的に備えられているからである。
【００５０】
Ｍｏｄｅ−Ｓｗｉｔｃｈユニット：２つのモード間の切替は、切替検出（Switch-Detect）ユニットによってトリガーされる。ロックモードからスプリットモードへの切替に際して、２つの切替検出ユニットが切替を検出する。というのは、ロックモードでは２つのプロセッサが同一のプログラムコードを処理するからである。プロセッサ１の切替検出ユニットは、この切替をプロセッサ２の切替検出ユニットより１．５クロック早く認識する。モード切替ユニットは、待機信号を用いてプロセッサ１を２クロックのみ停止させる。プロセッサ２は、１．５クロック遅れて同様に停止されるが、半クロックのみ停止され、よってシステムクロックに同期化される。次に、状態信号が他のコンポーネントのためにスプリットに切替えられ、２つのプロセッサはさらに機能を続ける。よって、２つのプロセッサが異なるタスクを実行するために、それらはプログラムコード中で互いに分離して実行される必要がある。これは、スプリットモードへの切替直後にプロセッサＩＤに対する読取アクセスがなされることで行われる。この読取られたプロセッサＩＤは、２つのプロセッサの各々に関して異なっている。目標プロセッサＩＤが比較されると、次に、条件付分岐指令によって、該当するプロセッサが他のプログラム箇所に分岐されうる。２つのプロセッサの分離は、例えば以下のようになる。
【００５１】
スプリットプロセスに際してはまず、プロセッサＩＤが格納されている状態レジスタのアドレスがｒ１に書込まれる。
ＬＤＬ  ｒ１，２４８
ＬＤＨ  ｒ１，２５５
次に、ＩｌｌＯｐ指令による２つのプロセッサの分離
ｅｒｒｏｒ
状態レジスタの内容をアドレスｒ１からｒ２にロードし、
ＬＤＷ  ｒ２，ｒ１
状態レジスタのビット５をテストする。このビットが“０”であればプロセッサ１、“１”であればプロセッサ２が問題となる。
ＢＴＥＳＴ  ｒ２，５
条件付ジャンプによってプロセッサ２が他のプログラム箇所に移動される。
ＪＭＰＩ＿ＣＴ  １０
【００５２】
スプリットモードからロックモードへの切替に際しては、一つのプロセッサもしくは２つのプロセッサの一方がまず切替に気づく。このプロセッサが、切替指令を含むプログラムコードを実行する。これが、切替検出ユニットによって確認されて、それがモード切替ユニットに通知される。モード切替ユニットが、該当するプロセッサを停止させて、第２のプロセッサにインターラプトによって同期化の意図を通知する（図２中の“メッセージ１”または“メッセージ２”）。第２のプロセッサは、インターラプトを受けて、タスクを終了させるためのソフトウェアルーチンを実行可能である。そして、このプロセッサが同様に、切替指令があるプログラム箇所に分岐する。この切替検出ユニットが、同様にモード切替の意図をモード切替ユニットに通知する。次のシステムクロックの上昇端（steigenden Systemtaktflanke）で、プロセッサ１に対する待機信号が非能動化されて、１．５クロック遅れてプロセッサ２に対する待機信号が非能動化される。そして、両者は再び１．５クロックのクロックオフセットを伴って同期して機能する。
【００５３】
システムがロックモードにある場合には、２つの切替検出ユニットは、スプリットモードへの切替を意図していることをモード切替ユニットに通知する必要がある。切替意図が一方のユニットのみから行われると、比較ユニットによりエラーが認識される。というのは、このユニットは、２つのプロセッサの他方より、停止されているプロセッサとは一致しないデータをさらに供給されているからである。
【００５４】
２つのプロセッサがスプリットモードにあり、かつ一方がロックモードに切替わらなければ、それが外部のウォッチドッグによって認識可能である。各プロセッサに関するトリガー信号により、ウォッチドッグは、待っているプロセッサからもはや報告がなされないことに気づく。プロセッサシステムのために１つのウォッチドッグ信号のみが存在する場合には、ウォッチドッグはロックモードでのみトリガーを許可される。よって、ウォッチドッグは、モード切替が行われなかったことを認識する。モード信号は、デュアルレール信号として存在する（図２中では“状態”と称される）。この場合に“１０”がロックモードを、“０１”がスプリットモードを表す。“００”および“１１”では、エラーが発生している。
【００５５】
プロセッサのパイプラインの始端で切替指令が検出されるので、検出後のパイプライン段階ではジャンプが存在してはならない。これを阻止するための最も簡単な方法は、指令ＩｌｌＯｐの前に２つのＮＯｐを挿入することである。
【００５６】
本発明の要旨は、前述したように、モード切替方法の一般的な機能性（モードに従って異なるデータ分配とそれに伴う動作モードの選択）とその場合の特にプロセッサの同期化にある。
【００５７】
また、この他に説明した特殊な実装も、冒頭で述べた課題を解決する。
【図面の簡単な説明】
【００５８】
【図１】第１および第２の計算機を備えるダブル計算機システムを示している。
【図２】データ分配ユニット（ＤＶＥ）に関する実装例を示している。
【図３】モード切替機能性を説明している。
【図１】
2008518309.tif 000003
【図２】
2008518309.tif 000004
【図３】
2008518309.tif 000005
【国際調査報告】
2008518309.tif 000006
2008518309.tif 000007
2008518309.tif 000008
2008518309.tif 000009
2008518309.tif 000010
2008518309.tif 000011