(57)【要約】少なくとも２つの計算ユニットを有するシステム内でクロックを切り替えるユニットおよび方法であって、システムにおける少なくとも２つの駆動モードの間で切り替えることが可能な切替え手段を備え、駆動モードを切り替える場合には、少なくとも１つの計算ユニットにおいて、クロック切替えが能動的または非能動的に行われる。【選択図】図３
2008518311.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも２つの計算ユニットを有するシステム内でクロックを切り替えるクロック切り替え方法であって：
システムにおける少なくとも２つの駆動モードの間で切り替えることが可能な切替え手段を備え、
駆動モードを切り替える場合には、少なくとも１つの計算ユニットにおいて、クロック切替えが能動的または非能動的に行われることを特徴とする、クロック切り替え方法。
【請求項２】
前記クロック切替えは、計算ユニットが予め定めることのできる位相オフセットを用いて行われることを特徴とする、請求項１に記載のクロック切り替え方法。
【請求項３】
前記位相オフセットは、半数に設定されることを特徴とする、請求項２に記載のクロック切り替え方法。
【請求項４】
前記位相オフセットは、１．５クロックに設定されることを特徴とする、請求項３に記載のクロック切り替え方法。
【請求項５】
安全モードへ切り替える場合には、位相オフセットが設定されることを特徴とする、請求項２に記載のクロック切り替え方法。
【請求項６】
パフォーマンスモードへ切り替える場合には、位相オフセットが補償されるので、パフォーマンスモードにおける計算ユニットは、同位相で動作することを特徴とする、請求項２に記載のクロック切り替え方法。
【請求項７】
クロック切替えが能動的に行われる場合には、一方の計算ユニットが他方よりも高いクロック周波数で動作するようにクロック周波数の切替えが行われることを特徴とする、請求項１に記載のクロック切り替え方法。
【請求項８】
前記位相オフセットは、少なくとも２つの計算ユニット上で同一のインストラクションがゼロに等しくないタイムオフセットをもって処理されるように設定されることを特徴とする、請求項２に記載のクロック切り替え方法。
【請求項９】
少なくとも２つの計算ユニットを有するシステム内でクロックを切り替えるユニットであって：
システムにおける少なくとも２つの駆動モードの間で切り替えることが可能な切替え手段を備え、
駆動モードを切り替える場合には、少なくとも１つの計算ユニットにおいて、クロック切替えが能動的または非能動的に行われるように形成されていることを特徴とする、クロックを切り替えるユニット。
【請求項１０】
前記ユニットは、クロック切替えが計算ユニットが予め定めることのできる位相オフセットをもって動作するように行われるように形成されていることを特徴とする、請求項９に記載のクロックを切り替えるユニット。
【請求項１１】
前記ユニットは、前記位相オフセットが半数に設定されるように形成されていることを特徴とする、請求項１０に記載のクロックを切り替えるユニット。
【請求項１２】
前記ユニットは、前記位相オフセットが整数に設定されるように形成されていることを特徴とする、請求項１０に記載のクロックを切り替えるユニット。
【請求項１３】
前記ユニットは、前記位相オフセットが１．５クロックに設定されるように形成されていることを特徴とする、請求項１１に記載のクロックを切り替えるユニット。
【請求項１４】
前記ユニットは、安全モードへ切り替える場合に前記位相オフセットが設定されるように形成されていることを特徴とする、請求項１０に記載のクロックを切り替えるユニット。
【請求項１５】
前記ユニットは、パフォーマンスモードへ切り替える場合に前記位相オフセットが補償されるので、パフォーマンスモードにおいて計算ユニットが同相で動作するように形成されていることを特徴とする、請求項１０に記載のクロックを切り替えるユニット。
【請求項１６】
前記ユニットは、クロック切替えが能動的に行われる場合には、一方の計算ユニットが他方よりも高いクロック周波数で動作するように、クロック周波数の切替えを行うように形成されていることを特徴とする、請求項９に記載のクロックを切り替えるユニット。
【請求項１７】
前記ユニットは、前記位相オフセットが、少なくとも２つの計算ユニット上で同一のインストラクションがゼロとは異なるタイムオフセットをもって処理されるように設定されるように形成されていることを特徴とする、請求項１０に記載のクロックを切り替えるユニット。
【請求項１８】
前記ユニットは、駆動モードを示すモード信号によってクロック切替えが作動するように形成されていることを特徴とする、請求項９に記載のクロックを切り替えるユニット。
【請求項１９】
前記ユニットは、少なくとも１つのトリガー回路の接続または分離によってクロック切替えが作動するように形成されていることを特徴とする、請求項９に記載のクロックを切り替えるユニット。
【請求項２０】
前記ユニットは、少なくとも１つのトリガー回路の接続または分離によって前記位相オフセットが作動するように形成されていることを特徴とする、請求項１０に記載のクロックを切り替えるユニット。
【請求項２１】
請求項９から１７のいずれか１項に記載のクロックを切り替えるユニットを有するシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステムにおいてクロックを切り替えるクロック切り替え方法、クロックを切り替えるユニットおよびクロックを切り替えるユニットを有するシステムに関する。
【背景技術】
【０００２】
特に自動車のような工業製品領域、機械領域内および自動化において、安全性を確保するために、マイクロプロセッサベースあるいは計算機ベースの開ループ制御および閉ループ制御システムがますます使用されている。その場合に、特に車両内の例えばアンチロックブレーキシステム、電子安定化プログラム（ＥＳＰ）、ドライブ−バイ−ワイヤまたはステア−バイ−ワイヤおよびブレーキ−バイ−ワイヤのようなＸ−バイ−ワイヤ−システムなどのような、安全上重要な部分や、あるいはその他のネットワーク化されたシステムにおいて、ダブル計算機システムまたはダブルプロセッサシステム（Dual  Cores）が、今日普及している計算機システムである。上記のような高い安全性が要求されるものについて要求を満たすためには、または、例えば、計算機システムの半導体構造を小型化する場合に生じる、過渡的エラーに対処するためには、強力なエラー発見機構とエラー処理機構が必要である。上記の場合、コア自体、つまりプロセッサを保護することは、比較的困難である。そのための解決手段は、上述したように、エラー検出のために、ダブル計算機システムまたはデュアルコアシステムを使用することである。
【０００３】
少なくとも２つの内蔵された実施ユニットを有するこの種のプロセッサユニットは、デュアルコアアーキテクチャまたはマルチコアアーキテクチャとして知られている。この種のデュアルコアアーキテクチャまたはマルチコアアーキテクチャは、今日の技術の状態によれば、主として２つの理由から提案されている。
【０００４】
第１の理由は、それによって、半導体モジュール上で２つの実施ユニットまたはコアが２つの計算ユニットとみなされて処理されることにより、パワー上昇、つまりパフォーマンス向上を達成することができることである。このコンフィギュレーションにおいて、２つの実施ユニットまたはコアは、異なるプログラムもしくはタスクを処理することができる。それによってパワー上昇が得られる。したがってこのコンフィギュレーションはパワーモードまたはパフォーマンスモードと称される。
【０００５】
デュアルコアアーキテクチャまたはマルチコアアーキテクチャを実現する第２の理由は、２つの実施ユニットが冗長に同一のプログラムを処理することによる、安全性向上である。２つの実施ユニットまたはＣＰＵ、すなわちコアの結果が比較されて、例えば、結果が一致するか否かを判定することによりエラーを認識することができる。以下において、このコンフィギュレーションは、安全モードまたはセーフティモードあるいはエラー認識モードとも称される。
【０００６】
したがって今日では、一方で、ハードウェアエラーを認識するために冗長に作業するダブルプロセッサシステムまたはマルチプロセッサシステム（Dual  Core  Master-Checker-System）があり、他方ではそのプロセッサ上で異なるデータを処理するダブルプロセッサシステムまたはマルチプロセッサシステムがある。ダブルプロセッサシステムまたはマルチプロセッサシステム内でこれら２つの作業種類を組み合わせる場合に（説明を簡単とするために、ダブルプロセッサシステムについてのみ言及するが、以下に示す本願発明はマルチプロセッサシステムにも同様に適用可能である。）、２つのプロセッサはパフォーマンスモードにおいては異なるデータを得て、エラー認識モードにおいては同一のデータを得ることができる。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明の課題は、コモンコーズエラー（Common  Cause）に対する保護として、プロセッサモードに基づいてクロックの位相もしくは２つのプロセッサのクロックを切り替えることが可能な、ユニットと方法を提供することである。しかしこの種のユニットは、現在までまだ知られていない。このユニットはダブルプロセッサシステムの効果的な確実な駆動を可能とするので、安全とパフォーマンスの２つのモードにおいて駆動を切り替えることができる。なお、以下においてはプロセッサについて言及するが、本願発明は、同様にコアもしくは計算ユニットも概念として含むものである。
【０００８】
さらに、本発明の課題は、２つの駆動モードの間の切替えの枠内で機能の最適化を可能とすることが可能な方法と装置を提供することである。
【課題を解決するための手段】
【０００９】
ダブル計算機システム内には、同一または異なる課題を処理することができる２つのプロセッサがある。ダブル計算機システムのこれら２つのプロセッサは、この課題をクロック同期で、あるいはクロックオフセットで処理することができる。ダブルプロセッサシステムが、エラー発見するように構築される場合には、コモンモードエラーを回避するために、これら２つのプロセッサがクロックオフセットで作業することが、効果的である。この方法は、整数でないクロックオフセットが選択される場合に、最も効果的である。また、２つのプロセッサが異なる課題を処理する場合には、それらをクロック側面同期で進行させると効果的である。というのは、メモリのような外部のコンポーネントは、プロセッサのクロックでしか駆動できないからである。したがってこれら２つのモード間で切り替え可能なダブルプロセッサシステムを使用しようとする場合には、１つの駆動モードのみに最適化される。
【００１０】
本発明によれば、これは、安全とパフォーマンスのような２つのモード間で切り替え可能なダブルプロセッサシステム（ないしマルチプロセッサシステム）において、２つのプロセッサが、クロックオフセットを有する安全のモードと、クロックオフセットなしのパフォーマンスのモードとで作業することによって、補償される。パフォーマンスモードにおいては、クロックオフセットは好ましくない。というのは、メモリのような外部のコンポーネントは、大体においてより低いクロック周波数で駆動され、かつクロック側面によって１つのプロセッサのみに合わせるように設計されているからである。そうでないと、第２のクロックオフセットされたプロセッサは、外部のコンポーネントを半クロックだけ遅れて駆動させるので、各メモリアクセスにおいて待機サイクルを持つことになる。
【００１１】
ダブルプロセッサシステムのためのクロックを切り替えることによって、安全モードでは、エラー認識において最適性が引き出され、パフォーマンスモードにおいてはパフォーマンスにおいて最大が引き出される。
【００１２】
したがって本発明は、少なくとも２つの計算ユニットを有するシステム内でクロックを切り替えるためのユニットと、この種のユニットを有するそれに応じたシステムに基づいており、その場合に切替え手段（ModeSwitch）が含まれている。上記切替え手段によってシステムの少なくとも２つの駆動モードの間で切り替えることができ、ユニットは、駆動モードを切り替える場合に少なくとも１つの計算ユニットにおいてクロック切替えが行われるように、形成されている。
【００１３】
同様に、本発明では、少なくとも２つの計算ユニットを有するシステム内でクロックを切り替える方法が示されており、その場合に切替え手段が設けられている。上記切替え手段によってシステムの少なくとも２つの駆動モードの間で切り替えることができ、駆動モードを切り替える場合には、少なくとも１つの計算ユニットにおいてクロック切替えが行われる。
【００１４】
１つのモードにおいて、２つのプロセッサはクロックオフセットで作業する。このクロックオフセットは、互いに対して全クロック、または、クロックの一部だけをずらすことができる。他の変形例は、２つのモードにおいて異なるクロック周波数が使用されることである。安全上重要なモードにおいては、障害を抑圧するために、例えば、パフォーマンスモードにおけるよりも低いクロックを使用することができる。上記の場合にこれら２つの変形例は、互いに組み合わせることもできる。
【００１５】
上記の場合において、第１の駆動モードは安全モードに相当し、その安全モードにおいて２つの計算ユニットは同一のプログラムおよび／またはタスクを処理し、かつ比較手段が設けられており、その比較手段が同一のプログラムを処理する場合に生じた状態が一致するか否かについて比較する。
【００１６】
本発明に係るユニットもしくは本発明に係る方法は、ダブルプロセッサシステム内で２つのモードの最適な実装を可能とする。
【発明の効果】
【００１７】
本発明によれば、プロセッサモードに基づいてクロックの位相もしくは２つのプロセッサのクロックを切り替えることができる。また、２つの駆動モードの間の切替えの枠内で機能を最適化することができる。
【発明を実施するための最良の形態】
【００１８】
２つのプロセッサがエラー認識モード（Ｆ−モード）で作業する場合に、２つのプロセッサは同一のデータ／指示を受け取り、パフォーマンスモード（Ｐ−モード）において作業する場合には、各プロセッサがメモリにアクセスすることができる。その場合にこのユニットは、シングルで存在するメモリまたは周辺機器へのアクセスを管理する。
【００１９】
Ｆ−モードにおいて、ユニットは一方のプロセッサ（ここでは「マスター」と称する。）のデータ／アドレスを受け取って、それをメモリ、バスなどのようなコンポーネントへ伝える。第２のプロセッサ（ここでは「スレーブ」と称する。）は、同一のアクセスを行おうとする。データ分配ユニットがそれを第２のポートで受け取るが、照会を他のコンポーネントへは伝えない。データ分配ユニットは、スレーブにマスターと同じデータを引き渡して、２つのプロセッサのデータを比較する。それらが異なる場合には、それをデータ分配ユニット（ここでは「ＤＶＥ」と称する。）がエラー信号によって表示する。したがってマスターのみがバス／メモリ上へ働きかけ、スレーブは同一のデータを得る（デュアルコアシステムの場合と同様の機能方法）。
【００２０】
Ｐ−モードにおいては、２つのプロセッサは異なるプログラム部分を処理する。したがってメモリアクセスも異なる。ＤＶＥは、プロセッサの要請を受け取って、結果／要請されたデータを、要請したプロセッサへ返す。２つのプロセッサが同時に１つのコンポーネントにアクセスしようとした場合には、一方のプロセッサは、他方のプロセッサが操作するまで、待機状態にされる。
【００２１】
２つのモードとそれに伴うデータ分配ユニットの異なる作業方法の間の切替えは、制御信号によって行われる。これは、２つのプロセッサの一方によって生成することができ、あるいは外部から生成することもできる。
【００２２】
ダブルプロセッサシステムが、Ｆ−モードにおいてはクロックオフセットをもって駆動され、Ｐ−モードにおいてはクロックオフセットなしで駆動される場合には、ＤＶＥユニットは、スレーブのためのデータをそれに応じて遅延させ、もしくは、マスターの出力データを、エラー認識のためにスレーブの出力データと比較することができるまでの間記憶する。
【００２３】
クロックオフセットを、図１を用いて詳細に説明する。
【００２４】
図１は、第１の計算機１００（マスター計算機）と、第２の計算機１０１（スレーブ計算機）とを有するダブル計算機システムを示している。上記の場合にシステム全体は、予め定められたクロックもしくは予め定められたクロックサイクル（clock  cycle）ＣＬＫで駆動される。計算機１００のクロック入力ＣＬＫ１を介して、かつ計算機１０１のクロック入力ＣＬＫ２を介してシステムへクロックが供給される。このダブル計算機システムにおいては、さらに、エラー認識するための特殊な特徴が設けることができる。エラー認識するための特殊な特徴としては、例えば、第１の計算機１００と第２の計算機１０１がタイムオフセット、特に予め定めることのできるタイムオフセットもしくは予め定めることのできるクロックオフセットをもって作業することが挙げられる。上記の場合には、タイムオフセットとして各任意の時間を設定することができ、また、クロックサイクルのオフセットに関しても各任意のクロックを設定することができる。これは、クロックサイクル（clock  cycle）の整数のオフセットでもよく、本実施形態において示すように、例えば、１．５クロックサイクルのオフセットでもよい。上記の場合には、第１の計算機１００は第２の計算機１０１の１．５クロックサイクル前に作業し、もしくは駆動される。このオフセットによって、計算機またはプロセッサ、つまりデュアルコアシステムのコアが同じように不調になり、エラーが知られないままとなる同クロックエラー、いわゆるコモンモードエラーを回避することができる。すなわち、この種の同クロックエラーは、オフセットによってプログラムランの異なる時点で計算機に作用する。したがって、上記オフセットは、２つの計算機に関して異なる効果をもたらし、それによってエラーを認識することができる。クロックオフセットなしの同種のエラー作用は、場合によっては比較において認識できないことになり、上記オフセットを用いることにより、これは回避される。時間またはクロックに関する、ここでは特に１．５クロックサイクルの、このオフセットをダブル計算機システム内に実装するために、オフセットモジュール１１２〜１１５が実装される。
【００２５】
上述した同クロックエラーを認識するために、このシステムは、例えば、予め定められたタイムオフセットまたは、特にここでは１．５クロックサイクルのクロックサイクルオフセットで作業するように設計されている。すなわち一方の計算機、例えば、計算機１００は、直接コンポーネント、特に外部のコンポーネント１０３と１０４に働きかけ、また、第２の計算機１０１は、それに対して正確に１．５クロックサイクルの遅延をもって作業する。上記の場合において所望の１と半分の、したがって１．５クロックサイクルの、サイクル遅延を発生させるために、計算機１０１には、クロック入力ＣＬＫ２として反転されたクロックが供給される。しかしそれによって計算機の上述した接続、つまりそのデータないし指令もバスを介して上述したクロックサイクルだけ、すなわちここでは特に１．５クロックサイクルだけ遅延されなければならない。そのためにすでに述べたようにオフセットモジュールもしくは遅延モジュール１１２〜１１５が設けられている。２つの計算機またはプロセッサ１００と１０１の他に、コンポーネント１０３と１０４が設けられており、それらはバス線１１６Ａ、１１６Ｂおよび１１６Ｃからなるバス１１６と、バス線１１７Ａ、および１１７Ｂからなるバス線１１７とを介して、計算機１００および１０１と接続されている。上記の場合にバス線１１７は、指令バスであって、バス線１１７Ａが指令アドレスバスであり、バス線１１７Ｂは部分指令（データ）バスである。アドレスバス１１７Ａは指令アドレス接続ＩＡ１（Instruction  Adress  1）を介して計算機１００と接続され、指令アドレス接続ＩＡ２（Instruction  Adress  2）を介して計算機１０１と接続されている。指令自体は、部分指令バス１１７Ｂを介して伝送され、その部分指令バスは指令接続Ｉ１（Instruction  1）を介して計算機１００と、指令接続Ｉ２（Instruction  2）を介して計算機１０１と接続されている。バス線１１７Ａと１１７Ｂからなる、この指令バス１１７内に、コンポーネント１０３、例えば指令メモリ、特に安全な指令メモリなどが中間接続されている。特に指令メモリとしての、このコンポーネントも、本実施形態においてはクロックＣＬＫで駆動される。その他、符号１１６でデータバスが示されており、そのデータバスはデータアドレスバスまたはデータアドレス線１１６Ａと、データバスまたはデータ線１１６Ｂとを有している。上記の場合にバス線１１６Ａ、したがってデータアドレス線は、データアドレス接続ＤＡ１（Data  Adress  1）を介して計算機１００と、そしてデータアドレス接続ＤＡ２（Data  Adress  2）を介して計算機１０１と接続されている。同様にデータバスまたはデータ線１１６Ｂは、データ接続ＤＯ１（Data  Out  1）とデータ接続ＤＯ２（Data  Out  2）を介して計算機１００もしくは計算機１０１と接続されている。さらに、データバス１１６にはデータバス線１１６Ｃが属しており、そのデータバス線はデータ接続ＤＩ１（Data  In  1）とデータ接続ＤＩ２（Data  In  2）を介してそれぞれ計算機１００もしくは計算機１０１と接続されている。バス線１１６Ａ、１１６Ｂおよび１１６Ｃからなるこのデータバス１１６内には、コンポーネント１０４、例えば、データメモリ、特に安全なデータメモリな��が中間接続されている。このコンポーネント１０４も、本実施形態においてはクロックＣＬＫを供給される。
【００２６】
上記の場合にコンポーネント１０３、１０４は、データバスおよび／または指令バスを介してダブル計算機システムの計算機と接続されており、かつアクセスに応じて書込み操作および／または読取り操作に関するダブル計算機システムのデータおよび／または指令を介して誤ったデータおよび／または指令を得たり、あるいは出力することがある、任意のコンポーネントを代表している。エラーを回避するために、エラー識別子ジェネレータ１０５、１０６および１０７が設けられており、それらは、例えばパリティビットのようなエラー識別子あるいは、例えばエラー補正コード、つまりＥＣＣなどのような他のエラーコードを発生させる。その場合にはさらに、それぞれのエラー識別子、つまり、例えばパリティビットまたは他のＥＣＣのようなエラーコードを検査するために、それに応じたエラー識別子検査装置またはチェック装置１０８と１０９も設けられている。
【００２７】
ダブル計算機システム内で冗長な仕様に関してデータおよび／または指令を比較することは、図１に示すように比較器またはコンパレータ１１０、１１１内で行われる。しかし、計算機１００と計算機１０１との間に、非同期のダブルプロセッサによって、あるいは同期のダブルプロセッサの場合には同期化におけるエラー、あるいはこの特殊な例におけるようにエラー認識のために望まれるタイムオフセット、もしくは、特にここでは１．５クロックサイクルのクロックサイクルオフセットによってもたらされるタイムオフセット、特にクロックオフセットまたはクロックサイクルオフセットが存在している場合に、このタイムオフセットまたはクロックオフセット内で計算機（ここでは特に計算機１００）が、誤りのあるデータおよび／または指令をコンポーネント（ここでは特にメモリ１０３または１０４のような外部のコンポーネント）に、あるいはまた他の加入者またはアクチュエータあるいはセンサに関して書き込み、あるいは読み取る可能性がある。すなわち、この計算機は、誤ったやり方でも、クロックオフセットによって設けられている読取りアクセスの代りに書込みアクセスを実施することができる。このシナリオは、もちろん、特にどのデータおよび／または指令がまさに誤って変更されたかを明らかに表示する可能性なくシステム全体におけるエラーをもたらし、それによってリカバリー問題も生じる。
【００２８】
上記の問題を解決するために、遅延ユニット１０２は、図示のようにデータバスの導線および／または指令バス内に接続される。なお、図１では、見やすくする理由から、データバスへの接続のみが示されている。もちろんこれは、指令バスに関しても同様に可能であり、かつ考えられる。この遅延ユニット１０２またはディレイユニットは、アクセス（ここでは特にメモリアクセス）を、可能なタイムオフセットまたはクロックオフセットが補償されるように遅延させる。特に、例えばコンパレータ１１０と１１１を介してエラー認識する場合には、例えば少なくともダブル計算機システム内でエラー信号が発生されるまで、すなわちダブル計算機システム内でエラー認識が実施されるまでの間遅延させる。その場合には、例えば、以下に示すような種々の変形例を実装することができる：
書込み操作と読取り操作の遅延、書込み操作のみの遅延、あるいはまた、好ましいとは言えないが、読取り操作の遅延。上記の場合に、エラーのある書込みを阻止するために、変化信号、特にエラー信号によって、遅延された書込み操作を読取り操作に変更することができる。
【００２９】
次に、図２を用いて、切替え意図を検出する装置（IIIOPDetectによって）、モードスイッチユニットおよびＩｒａｍとＤｒａｍコントロールモジュールから構成されるデータ分配ユニット（ＤＶＥ）に関する実装の例を説明する。
【００３０】
IIIOPDetect：２つのモードの間の切替えは、ユニット"Switch-Detect"によって認識される。このユニットは、インストラクションバス上でキャッシュとプロセッサの間にあって、指令IIIＯｐがプロセッサへロードされるかを見る。指令が検出された場合には、この結果がモードスイッチユニットへ伝えられる。"Switch-Detect"ユニットは、エラー許容するように形成される必要はない。というのは、同ユニットはダブルで、したがって冗長に存在しているからである。他方で、このユニットがエラー許容し、したがってシングルで形成することも考えられるが、冗長な形成が好ましい。
【００３１】
ModeSwitch：２つのモードの間の切替えが、"Switch-Detect"ユニットによってトリガーされる。ロックモードからスプリットモードへの切替えを行おうとする場合には、２つの"Switch-Detect"ユニットが切替えを検出する。というのは、ロックモードにおいては２つのプロセッサが同一のプログラムコードを処理するからである。プロセッサ１の"Switch-Detect"ユニットは、これをプロセッサ２の"Switch-Detect"の１．５クロック前に認識する。"ModeSwitch"ユニットは、ウェイト信号を用いてプロセッサ１を２クロックだけ停止させる。プロセッサ２は１．５クロック遅れて同様に停止されるが、半クロックだけであって、したがってこのプロセッサがシステムクロックに同期される。次に、ステータス信号がスプリットに切り替えられて、他のコンポーネントと２つのプロセッサがそれ以降そのために作業する。２つのプロセッサが異なるタスクを実施するようにするためには、プロセッサはプログラムコードにおいて互いに離れなければならない。これは、スプリットモードへの切替え直後にプロセッサＩＤへの読取りアクセスが行われることによって行われる。この読み出されたプロセッサＩＤは、２つのプロセッサの各々について異なる。目標プロセッサＩＤに関して比較される場合に、次にConditional  Jump指令によって該当するプロセッサを他のプログラム箇所へ移動させることができる。スプリットモードからロックモードへ切り替える場合には、これが１つのプロセッサ、もしくはまず２つのプロセッサの１つによって気づかれる。このプロセッサが、切替え指令が含まれているプログラムコードを実施する。これが、"Switch-Detect"ユニットによって登録されて、これがModeswitchユニットへ伝えられる。同ユニットが該当するプロセッサを停止させて、第２のプロセッサにインターラプトによって同期化の意図を伝える。第２のプロセッサは、インターラプトを受け取って、そのタスクを終了させるためのソフトウェアルーチンを実施することができる。そしてこのプロセッサも同様に、切替えるための指令があるプログラム箇所へジャンプする。その"Switch-Detect"ユニットが、同様にモード変更する意図をModeswitchユニットへ知らせる。次の立ち上がるシステムクロック側面で、プロセッサ１のためのウェイト信号が非能動化されて、プロセッサ２については１．５クロック後に非能動化される。そして、２つのプロセッサは再び１．５クロックのクロックオフセットで同期して作業する。
【００３２】
システムがロックモードにある場合には、２つの"Switch-Detect"ユニットがModeswitchユニットへ、それらがスプリットモードへ移行しようとしていることを伝えなければならない。切替え意図が一方のユニットだけから行われた場合には、比較ユニットによってエラーが認識される。というのは、この比較ユニットは２つのプロセッサの一方からさらにデータを供給され、かつそれが停止されているプロセッサと一致しないからである。
【００３３】
２つのプロセッサがスプリットモードにあって、一方がロックモードへ戻らない場合には、これを外部のウォッチドッグによって認識することができる。各プロセッサのためのトリガー信号において、ウォッチドッグは、待機しているプロセッサがもはや報告しないことに気づく。プロセッサシステムのために１つのウォッチドッグ信号しか存在しない場合には、ウォッチドッグのトリガーはロックモードにおいてのみ行われる。したがってウォッチドッグは、モード切替えが行われなかったことを認識する。モード信号は、デュアルレール信号として存在する。その場合に'１０'は、ロックモード、'０１'はスプリットモードを表す。'００'と'１１'の場合には、エラーが発生している。
【００３４】
IramControl：２つのプロセッサの指令メモリへのアクセスは、IRAMコントロールを介して制御される。これは、安全に設計されていなければならない。というのは、それがエラーのシングルポイントだからである。また、これは、各プロセッサについて２つの状態自動機（クロック同期のiram1clkresetと非同期のreadiram1）からなる。安全上重要なモードにおいては、２つのプロセッサの状態自動機は相互に監視し、パフォーマンスモードにおいては別々に作業する。
【００３５】
プロセッサの２つのキャッシュのリロードは、上記２つの状態自動機によって制御される。同期の状態自動機iram1cklresetと非同期のreadiram。これら２つの状態自動機によって、スプリットモードにおけるメモリアクセスも分配される。その場合にプロセッサ１が、高い優先順位を有している。プロセッサ１によるメインメモリへのアクセス後に、−２つのプロセッサが再びメインメモリへアクセスしようとした場合に−プロセッサ２がメモリアクセス許可を割り当てられる。これら２つの状態自動機は、各プロセッサについて実装されている。ロックモードにおいては、発生するエラーを認識することができるようにするために、自動機の出力信号が比較される。
【００３６】
ロックモードにおいてキャッシュ２を更新するためのデータが、IRAM−Controlユニット内で１．５クロックだけ遅延される。
【００３７】
Syscontrolのレジスタ０内のビット５に、それがどのコアであるか、がコード化される。コア１はビット０で、コア２においてはハイである。このレジスタは、アドレス６５５２８を有するメモリ領域内に反映される。
【００３８】
コア２によるメモリアクセスの場合に、まず計算機がどのモードにあるかが調べられる。計算機がロックモードにある場合には、そのメモリアクセスは抑圧される。この信号は、安全上重要であるので、コモンレール信号として存在する。
【００３９】
プロセッサ１のプログラムカウンタは、ロックモードにおいてプロセッサ２のプログラムカウンタと比較することができるようにするために、１．５クロックだけ遅延される。
【００４０】
スプリットモードにおいては、２つのプロセッサのキャッシュは、異なるようにリロードすることができる。ロックモードに切り替えられる場合には、２つのキャッシュは互いにコヒーレントではない。それによって２つのプロセッサの結果は、互いに異なる場合が生じ、比較器がエラーを知らせることとなる。これを回避するために、IRAMControl内にフラグテーブルが構築される。この中に、キャッシュセルがロックモードで記述されたか、スプリットモードであるかがメモされる。ロックモードにおいて、キャッシュセルをリロードする場合に、キャッシュセルのための然るべき入力が０にセットされ、スプリットモードにおいては、たとえ１つのキャッシュだけのキャッシュセルがキャッシュ更新される場合でも、１にセットされる。プロセッサがロックモードにおいてメモリアクセスを実施する場合に、このキャッシュセルがロックモードにおいて更新されたか、すなわち２つのキャッシュ内で同一であるかが調べられる。
【００４１】
スプリットモードにおいて、プロセッサは、常にフラグベクトルがどのようであるかに関係なく、キャッシュセルにアクセスすることができる。このテーブルは、一度だけ存在すればよい。というのは、エラーの場合には２つのプロセッサの結果が互いに異なり、したがって比較器においてこのエラーが確実に認識されるからである。中央のテーブルへのアクセス時間は比較的大きいので、このテーブルを各キャッシュへコピーすることもできる。
【００４２】
DramControl：このコンポーネントにおいて、アドレス信号、データ信号およびメモリ制御信号について、各プロセッサによってパリティが形成される。
【００４３】
２つのプロセッサのためにメモリを遮断するためのプロセスがある。このプロセスは、安全に実装される必要はない。というのは、ロックモードにおいてはエラーのあるメモリアクセスは比較器によって認識され、スプリットモードにおいては、本発明の実施形態に係る安全上重要な適用は実施されないからである。その中で、一方のプロセッサが他のプロセッサのためにメモリを遮断しようとしているか否かが検査される。データメモリのこの遮断は、メモリアドレス＄ＦＢＦＦ＄へのアクセスによって行われる。この信号は、呼出しの時点でプロセッサにウェイトコマンドが印加されている場合でも、正確に１クロックの長さ印加される。データメモリアクセスを管理するための状態自動機は、２つのメイン状態からなる：
−プロセッサステータスＬｏｃｋ：２つのプロセッサは、ロックモードで作業する。すなわち、データメモリロッキングの機能は必要とされない。プロセッサ１が、メモリアクセスを調整する。
−プロセッサステータスＳｐｌｉｔ：データメモリへのアクセス競合解消が必要であって、メモリ遮断を行うことができなければならない。
【００４４】
スプリットモードにおける状態が、再び７つの状態に分割され、それらがアクセス競合を解消し、かつそれぞれ他のプロセッサのためのメモリアクセスを遮断することができる。アクセスにおける２つのプロセッサの意図が同時である場合に、記載された順序が同時に優先順位を表す。
【００４５】
−Core1/_Lock:プロセッサ１が、データメモリを遮断している。この状態においてプロセッサ２がメモリにアクセスしようとした場合に、プロセッサ２は、プロセッサ１がデータメモリを再び解放するまで、ウェイト信号によって止められる。
−Core2/_Lock:上記と同じ状態で、今度はプロセッサ２がデータメモリを遮断しており、プロセッサ１がデータメモリ操作において止められる。
−lock1/_wait:データメモリは、プロセッサ１が同様に自らのために予約しようとしたときに、プロセッサ２によって遮断された。したがってプロセッサ１は次のメモリ遮断のを予約している。
−nex:プロセッサ２についても上記と同じである。データメモリは、プロセッサ１による遮断の試みの間遮断された。プロセッサ２は、メモリを予約した。遮断なしのノーマルなメモリアクセスの場合には、ここでは、プロセッサ１がその前の番であった場合に、プロセッサ２がプロセッサ１の前にアクセスすることができる。
−プロセッサ１によるメモリアクセス：この場合においてメモリは、遮断されない。プロセッサ１はデータメモリにアクセスできる。プロセッサ１がメモリを遮断しようとする場合には、プロセッサ１はこの状態においてそれを行うことができる。
−プロセッサ２によるメモリアクセス：同じクロック内でプロセッサ１はメモリにアクセスしようとせず、したがってメモリはプロセッサ２のためにあいている状態である。
−どのプロセッサもデータメモリにアクセスしようとしない。
【００４６】
ＤＶＥは、上述したように、切替え意図の検出（IIIOPDetect）、ModeSwitch−ユニットおよびIram−およびDramControlから構成されている。
【００４７】
図３には、クロック切替えが１つの例で示されている。１つのモードに関して他のモードに対する比較においてクロック切替えが行われる。その場合に２つのモード、クロックclkおよび２つのプロセッサクロックまたはコアクロックが示されている。
【００４８】
１つのモードにおいて、２つのプロセッサがクロックオフセットで作業する。このクロックオフセットは、互いに対してクロック全体だけでも、クロックの一部だけでもずらすことができる。他の変形例は、２つのモードにおいて異なるクロック周波数が使用されることである。安全上重要なモードにおいては、不具合を抑圧するために、例えばパフォーマンスモードにおけるよりも低いクロックを使用することができる。その場合にこの２つの変形例を、互いに組み合わせることもできる。
【００４９】
したがって本発明の核心は、モードに依存するクロック切替えである。
【００５０】
しかしその他に、図示の特殊な実装も、冒頭で挙げた課題を解決する。
【００５１】
特にダブルプロセッサシステム（Dual-Core）を実装する場合には、再度図４に図式的に示すように、各プロセッサのためにキャッシュが設けられる。１つのキャッシュでは、通常、十分ではない。というのは、このキャッシュは空間的に見て２つのプロセッサの間に配置されなければならないからである。したがってキャッシュと２つのプロセッサの間の長い到達時間に基づいて、２つのプロセッサは、制限されたクロック周波数でしか働けない。
【００５２】
キャッシュは、高速の一時メモリとして用いられる。したがってプロセッサはデータを常に低速のメインメモリから取り出す必要はない。これを可能にするために、キャッシュを実装する場合には、そのアクセス長さに強く注意しなければならない。これは、データをキャッシュから取り出すための、本来のアクセス時間と、データがさらにプロセッサへ達するための時間とから構成される。キャッシュが空間的にプロセッサから遠く離れて位置決めされている場合に、データの伝送は極めて長くかかり、プロセッサはもはやその完全なクロックで作業することができない。このタイミング問題に基づいて、本実施形態に係るダブルプロセッサシステムにおいては、各プロセッサおよび／またはコアのために、専用のキャッシュを設けることができる。
【００５３】
これら２つのプロセッサが、クロックオフセットをもって駆動される場合に、図５に提案される方法を用いてスレーブプロセッサのための第２のキャッシュを省くことができる。キャッシュは、多くのチップ面積を必要とし、多くの電流も必要とする。それによってキャッシュは多くの熱を発生させるため、発生した熱を逃がす必要がある。また、１つのキャッシュを省くことができる場合には、ダブルプロセッサシステムはずっと安価に実装される。
【００５４】
上述した実施形態におけるような、プロセッサもしくはコアのモードに依存するクロック切替えは、キャッシュを有するシステムにおいても可能である。
【００５５】
ここで付加的な実施形態として紹介されるダブルプロセッサシステムにおいては、上述したように、１つのプロセッサがマスターであって、１つのプロセッサはスレーブである。マスターは、まず最初にデータを処理し、したがってメモリ、キャッシュ、ＤＭＡコントローラなどのような、周辺コンポーネントも駆動する。スレーブは、同じデータを、ここでは例えば１．５クロックのクロックオフセットをもって処理する。これはまた、スレーブがデータを共通のメモリから、そして外部のコンポーネントから同様にこの時間長さだけ遅れて得ることも、意味している。メモリアドレス、データなどのような、２つのプロセッサの出力データが、互いに比較される。データを互いに比較することができるようにするためには、マスターの結果が同様に１．５クロック一時記憶されなければならない。
この種の例に係るシステムが、以下に示されている。
【００５６】
図５に示すように１つのキャッシュを２つのプロセッサのために使用することができるようにするために、指令キャッシュとデータキャッシュは、シングルプロセッサの場合と同様に、直接マスターに配置される。したがってマスターは、キャッシュとプロセッサの間の到達時間に関するパフォーマンス損失を甘受する必要はない。スレーブはデータを１．５クロック遅れて初めて処理するので、この時間を、データをキャッシュから遠く離れた第２のプロセッサへ伝達するために利用することができる。
【００５７】
そのために、例としての１．５クロックのクロックオフセットにおいて、図６に示すように、２つのフリップフロップを利用することができる。第１のフリップフロップは、マスターのクロックで駆動され、第２のフリップフロップはスレーブのクロックで駆動される。第１のフリップフロップは、ソースの出力に直接位置決めされる。第２のフリップフロップは、２つのクロックの間の差において信号が移動することができる長さにしたがって、それだけスレーブの近傍に位置決めされる。これは、タイムオフセットが１．５クロックである場合に半クロックの到達時間長さに相当し、クロックオフセットが２クロックである場合には、１クロックの到達時間長さに相当する。その後、第２のフリップフロップが信号を受け取る。１クロック全体の間に信号が移動することができる区間を、もう一度橋渡しすることができる。図において、１）はシンクの近傍の配置を示し、２）はクロック差において移動することができる長さに相当し、３）は第２のフリップフロップの後１クロックで移動できる長さである。
【図面の簡単な説明】
【００５８】
【図１】第１の計算機、特にマスター計算機と第２の計算機、特にスレーブ計算機を有するダブル計算機システムを示す説明図である。
【図２】データ分配ユニット（ＤＶＥ）に関する実装の例を示す説明図である。
【図３】クロック切替えの例を示す説明図である。
【図４】ダブルプロセッサシステム（Dual-Core）を実装する場合に、各プロセッサのためにキャッシュが設けられることを示す説明図である。
【図５】２つのプロセッサのために１つのキャッシュを使用する方法を示す説明図である。
【図６】クロックオフセットにおける２つのフリップフロップの利用を示す説明図である。
【図１】
2008518311.tif 000003
【図２】
2008518311.tif 000004
【図３】
2008518311.tif 000005
【図４】
2008518311.tif 000006
【図５】
2008518311.tif 000007
【図６】
2008518311.tif 000008
【国際調査報告】
2008518311.tif 000009
2008518311.tif 000010
2008518311.tif 000011
2008518311.tif 000012
2008518311.tif 000013
2008518311.tif 000014