(57)【要約】本発明は、複数の実行ユニットを有するシステムと、システムを切り替える方法とに関する。システムは少なくとも２つの実行ユニットを有し、複数の実行ユニットが異なるプログラムを実行するパフォーマンス駆動モード（ＰＭ）と、同じプログラムを実行する比較駆動モード（ＶＭ）との間で切り替え可能である。システムは、次に実行されるべきプログラムを決定するために実行ユニットにより呼び出されるスケジューラ（ＳＣＨ）を有する。最初に呼び出されたＳＣＨにより決定されたプログラムがＶＭで実行される必要がある場合、残りの複数の実行ユニットにＳＣＨを同様に呼び出すように促す。切り替えユニットは、最後に呼び出されたＳＣＨにより決定されたプログラムがＶＭで実行される必要がある場合、ＰＭからＶＭへとシステムを切り替える。その際、決定された実行されるべきプログラムが、最も優先度が高いプログラムとしてＶＭで実行される。【選択図】図１
2009541887.tif 000002
【特許請求の範囲】
【請求項１】
複数の実行ユニットを有するシステム（１）を切り替える方法であって、前記システム（１）は、少なくとも２つの実行ユニット（２）を有しており、前記複数の実行ユニット（２）が異なるプログラムを実行するパフォーマンス駆動モード（ＰＭ）から、前記複数の実行ユニット（２）が同じプログラムを実行する比較駆動モード（ＶＭ）へとシステムを切り替える方法において、
（ａ）実行ユニット（２）によってスケジューラを呼び出す工程（Ｓ１Ａ）であって、その際、呼び出されたスケジューラ（ＳＣＨ）は、次に実行されるべきプログラムを決定する工程（Ｓ１Ａ）と、
（ｂ）前記次に実行されるべきプログラムが前記比較駆動モード（ＶＭ）で実行される必要がある場合に、残りの〔複数の〕実行ユニット（２）に、前記スケジューラ（ＳＣＨ）を同様に呼び出すように促す工程（Ｓ６Ａ）と、
（ｃ）最後に呼び出されたスケジューラ（ＳＣＨ）により決定された、実行されるべきプログラムが、前記比較駆動モード（ＶＭ）で実行される必要がある場合に、前記パフォーマンス駆動モード（ＰＭ）から前記比較駆動モード（ＶＭ）へと複数の実行ユニットを有する前記システム（１）を切り替える工程（Ｓ１０Ａ）であって、その際、前記最後に呼び出されたスケジューラ（ＳＣＨ）により決定された、実行されるべきプログラムが、最も優先度が高いプログラムとして、全実行ユニット（２）によって、前記複数の実行ユニットを有するシステム（１）の前記比較モード（ＶＭ）で実行される工程（Ｓ１０Ａ）と、
を含む、複数の実行ユニットを有するシステム（１）を切り替える方法。
【請求項２】
次に実行されるべきプログラムを決定するために前記スケジューラ（ＳＣＨ）を最初に呼び出す実行ユニット（２）は、残りの全実行ユニット（２）も前記スケジューラ（ＳＣＨ）の呼び出しによって次に実行されるべきプログラムを決定するまで待機し（Ｓ７Ａ）、その後初めて、最後に呼び出されたスケジューラ（ＳＣＨ）により決定された、最も優先度が高いプログラムに相当するプログラムが、前記比較駆動モード（ＶＭ）で実行される必要があるかどうかについて検査される（Ｓ９Ａ）、請求項１に記載の方法。
【請求項３】
前記最後に呼び出されたスケジューラ（ＳＣＨ）により決定されたプログラムが、前記比較駆動モード（ＶＭ）で実行される必要がないことが決定される場合に（Ｓ１１Ａ）、前記スケジューラ（ＳＣＨ）を最初に呼び出した前記実行ユニット（２）は、前記スケジューラ（ＳＣＨ）を再呼び出しする（Ｓ１Ａ）、請求項２に記載の方法。
【請求項４】
前記呼び出されたスケジューラ（ＳＣＨ）が、次に実行されるべきプログラムとして、比較駆動モード（ＶＭ）ではなくパフォーマンス駆動モード（ＰＭ）で実行される必要があるプログラムを決定する場合に（Ｓ２Ａ）、実行されるべきプログラムが、切り替えなしに直接的に実行される（Ｓ４Ａ）、請求項３に記載の方法。
【請求項５】
次に実行されるべきプログラムを決定するために前記スケジューラ（ＳＣＨ）を呼び出す（Ｓ１Ａ）実行ユニット（２）は、決定されたプログラムが比較駆動モード（ＶＭ）で実行される必要がある場合に、前記決定されたプログラムの優先度と、他の〔複数の〕実行ユニット（２）で実行されている全プログラムの優先度とを比較する（Ｓ３Ａ）、請求項１に記載の方法。
【請求項６】
他の実行ユニット（２）で実行されているプログラムが、前記最初に呼び出されたスケジューラ（ＳＣＨ）により決定された、次に実行されるべきプログラムよりも優先度が高い場合に、前記スケジューラ（ＳＣＨ）を最初に呼び出した前記実行ユニット（２）は、アイドル駆動モード（ＩＤＬＥ）に移行し（Ｓ５Ａ）、残りの複数の命令ユニット（２）がそれぞれ自身のプログラムを終了するまで待機する、請求項５に記載の方法。
【請求項７】
次に実行されるべきプログラムを決定するために前記スケジューラ（ＳＣＨ）を最初に呼び出す前記実行ユニット（２）は、次に実行されるべきプログラムが比較駆動モード（ＶＭ）で実行される必要がある場合には、他の〔複数の〕実行ユニットに要請信号を送信することによって（Ｓ６Ａ）、前記他の〔複数の〕実行ユニット（２）に、前記スケジューラを同様に呼び出すように促す、請求項６に記載の方法。
【請求項８】
前記要請信号は割込み信号によって形成される、請求項７に記載の方法。
【請求項９】
前記複数の命令ユニット（２）はそれぞれ、プロセッサ、コプロセッサ、浮動小数点演算装置（ＦＰＵ）、演算論理装置（ＡＬＵ）、またはデジタル信号プロセッサ（ＤＳＰ）によって形成される、請求項１に記載の方法。
【請求項１０】
実行ユニット（２）は、実行されたプログラムの終了後に前記スケジューラ（ＳＣＨ）を呼び出す、請求項１に記載の方法。
【請求項１１】
少なくとも２つの実行ユニット（２）を有するシステム（１）であって、前記システム（１）は、複数の実行ユニット（２）が異なるプログラムを実行するパフォーマンス駆動モード（ＰＭ）と、複数の実行ユニット（２）が同じプログラムを実行する比較駆動モード（ＶＭ）との間で切り替え可能であり、
次に実行されるべきプログラムを決定するために実行ユニット（２）によって呼び出されるスケジューラ（ＳＣＨ）であって、その際、最初に呼び出されたスケジューラ（ＳＣＨ）により決定されたプログラムが前記比較駆動モード（ＶＭ）で実行される必要がある場合に、残りの複数の実行ユニット（２）が、前記スケジューラ（ＳＣＨ）を同様に呼び出すように促される、スケジューラ（ＳＣＨ）と、
最後に呼び出されたスケジューラ（ＳＣＨ）により決定された、実行されるべきプログラムが前記比較駆動モード（ＶＭ）で実行される必要がある場合に、前記パフォーマンス駆動モード（ＰＭ）から前記比較駆動モード（ＶＭ）へと前記システム（１）を切り替える切り替えユニット（３）であって、その際、決定された実行されるべきプログラムが、最も優先度が高いプログラムとして、全実行ユニット（２）によって、前記システム（１）の切り替え後に前記比較駆動モード（ＶＭ）で実行される、切り替えユニット（３）と、
を備える、少なくとも２つの実行ユニット（２）を有するシステム（１）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の実行ユニットを有するシステムと、複数の実行ユニットを有するシステムを切り替える方法とに関する。その際、複数の実行ユニットを有するシステムは、複数の実行ユニットが異なるプログラムを実行するパフォーマンス駆動モードと、複数の実行ユニットが同じプログラムを実行する比較駆動モードとの間で切り替え可能な、少なくとも２つの実行ユニットを有する。
【背景技術】
【０００２】
組み込み型システム（Ｅｍｂｅｄｄｅｄ  Ｓｙｓｔｅｍ）、特に自動車技術または自動化技術において、プロセッサのハードウェア、またはマイクロコントローラ・ハードウェアでのエラーが致命的な結果となりうるアプリケーションまたはアプリケーションプログラムが存在する。このような危険性を低減するために、エラーを検出するための監視措置が採られる。アプリケーションまたはアプリケーションプログラムによっては、この種の監視がほぼ恒久的に必要である。一方、他のアプリケーションの場合では、監視機能が定期的に、例えば周期的に、または、特定の要請に応じて、例えば割込みに引き続いて、プロセッサシステムまたは他の構成要素が正しく機能しているかどうかについて監視される。
【０００３】
独国特許出願公開第１０３３２７００号明細書は、プロセッサユニットの少なくとも２つの駆動モードの間で切り替える方法を記載している。そこで記載されるプロセッサユニットは、２つの実行ユニットを有している。この種のコンピュータアーキテクチャは、デュアルコア・コンピュータアーキテクチャとも呼ばれる。独国特許出願公開第１０３３２７００号明細書で記載されるプロセッサシステムは、パフォーマンス駆動モードと、比較駆動モードとの間で切り替え可能である。パフォーマンス駆動モードでは、実行ユニットは、性能または計算能力を高めるために、同時に異なるプログラムを実行する。パフォーマンス駆動モードＰＭに対して、比較駆動モードＶＭでは、実行ユニットは同一のプログラムを実行し、演算結果、または実行ユニットにより出力された信号が互いに比較される。比較によって信号間での不一致が判明した場合には、引き続いてエラー信号が起動される。比較駆動モードＶＭは、安全性を高めるため、特に安全性に関わるプログラムにおいて使用される。基本的に、計算能力を高めるためには、可能な限り多くの適用またはプログラムを、可能な限り性能が高いモード、すなわちパフォーマンスモードＰＭで駆動させることが有効である。一方、安全性に関わるアプリケーションの場合、ほぼ全タスクまたはプログラムが高度なエラー検出機能を用いて、すなわち比較駆動モードＶＭで計算される必要がある。
【０００４】
パフォーマンス駆動モードＰＭと比較駆動モードＶＭとの間での切り替えは、オペレーティングシステムＢＳによって行なわれる。オペレーティングシステムＢＳは、プログラム固有の識別子によって、どの駆動モードでプログラムコードが実行される必要があるのかについて決定する。この識別子は、静的に、または動的に割り当てられることが可能である。特定の駆動モードに対して、プログラムが固定で割り当てられているということも想定される。
【０００５】
複数の実行ユニットを有するシステムでは、複数のプログラムが同時に実行可能である。どのプログラムが実際に実行されるのかについては、オペレーティングシステムＢＳの一部を形成するスケジューラが決定する。複数の実行ユニットを有するシステムでは、スケジューラが各実行ユニットで別々に実行される。従って、複数のスケジューラまたはオペレーティングシステム・インスタンスが存在する。その際、インスタンスは、大部分が同一のデータに基づいて稼動する。進行中のプログラムは、スケジューラを除いて、場合によっては割込みサービスルーチンＩＳＲによっても中断される。その際、各割込みサービスルーチンＩＳＲは、特定のイベントに割り当てられている。このイベントが起こる場合に、今正に駆動中のプログラムが中断され、付属する割込みサービスルーチンＩＳＲが実行される。各割込みサービスルーチンＩＳＲは識別子を有している。識別子は、割込みサービスルーチンが実行されるべき駆動モードを設定する。
【０００６】
パフォーマンス駆動モードＰＭと比較駆動モードＶＭとの間で切り替え可能な、複数の実行ユニットを有するシステムの場合、必要な駆動モード変更を確実に検知し、開始する必要がある。この工程自体にも計算時間または計算能力が掛かり、いかなる時点でも中断可能というわけではない。比較駆動モードＶＭへのモード変更が必要であることが、オペレーティングシステム・インスタンスによって確認された場合、切り替えは即時には実行不可能である。更なる別の実行ユニットまたはコアで優先度がより低いプログラムが実行されている場合に関しては、比較駆動モードＶＭへと切り替えるために、実行ユニットの各プログラムを退避させることが可能である。その際、残りの実行ユニットのプログラムの優先度の決定は、複数の実行ユニットを有するシステムで、全アクティブなプログラム、または割込みサービスルーチン、および、オペレーティングシステムのプログラム自体が事実上同時に実行されることによって、困難になる。これに対して、従来のシングルプロセッサシステムの場合、プログラムは、１つの実行ユニットにより順次実行される。
【０００７】
複数の実行ユニットを有するシステムの場合、オペレーティングシステム・インスタンス、例えばスケジューラのインスタンスがモード変更を促したり実行したりする一方で、他の実行ユニットで駆動中のオペレーティングシステム・インスタンスが、それまでの駆動モードのままであり続けるという危険が発生する。システムのモード変更のために、特に比較駆動モードＶＭへの変換の際に少なくとも２つの実行ユニットが必要であるため、該当する実行ユニットが、特定の時間の間ロックされる可能性がある。
【０００８】
ここで、簡単な例を挙げる。プログラム全体が、例えば、対応する優先度を有する４つのタスクＴ１、Ｔ２、Ｔ３、Ｔ４を含むとする。すなわち、Ｔ１は最も高い優先度「Ｐｒｉｏ３」を有し、Ｔ２は２番目に高い優先度「Ｐｒｉｏ２」を有し、Ｔ３は３番目に高い優先度が「Ｐｒｉｏ１」を有し、Ｔ４は最も低い優先度「Ｐｒｉｏ０」を有している。さらに、Ｔ１およびＴ２はパフォーマンス駆動モードＰＭで実行される必要がある一方、Ｔ３およびＴ４は比較駆動モードＶＭで実行される必要があるように、タスクＴ１〜Ｔ４はラベル付けされている。複数の実行ユニットを有するシステムは、例えば、２つの実行ユニットまたはＣＰＵを有する。第１実行ユニットＣＰＵ１が最初にパフォーマンス駆動モードＰＭにおいて最も優先度の高いタスクＴ１を実行する場合に、他方の実行ユニットまたはＣＰＵは、２番目に優先度の高いタスクＴ２を実行する。従って、タスクＴ１が終了次第、オペレーティングシステムＢＳが第１実行ユニットＣＰＵ１によって呼び出され、スケジューラが、どのタスクＴを次に実行する必要があるかについて決定する。上述の例の場合、スケジューラは、次に優先度が高い「Ｐｒｉｏ１」を有するためタスクＴ３に決定する。しかし、このタスクＴ３は、このタスクＴ３が比較駆動モードＶＭで実行される必要があることを示す属性またはラベルを有する。従って、複数の実行ユニットを有するシステムは、比較駆動モードＶＭに切り替えられる必要がある。第２実行ユニットＣＰＵ２では、タスクＴ２が未だに駆動している。従って、スケジューラは、ＣＰＵ２でタスクＴ２が終了するまで待機する。ＣＰＵ２でタスクＴ２が終了次第、スケジューラまたはオペレーティングシステムＢＳは、比較駆動モードＶＭへと両実行ユニットを切り替え、タスクＴ３を開始する。この場合、衝突は発生しない。更なる別の例において、タスクＴ３よりもタスクＴ２の優先度が低い場合、例えば、タスクＴ２が「Ｐｒｉｏ１」であり、一方、タスクＴ３が「Ｐｒｉｏ２」である場合に、上述の仮定においては、オペレーティングシステムＢＳは、ＣＰＵ１で実行されたタスクＴ１の終了後に、ＣＰＵ２で未だ駆動中のタスクＴ２を即時に中断し、両実行ユニットでタスクＴ３を駆動させる。駆動システムＢＳ自体は、実行ユニットにおいて実行される必要がある。上述の例において、オペレーティングシステムＢＳが、開放された第１実行ユニットＣＰＵ１で実行され、タスクＴ3を開始しようとする。このために、オペレーティングシステムは、実行ユニットＣＰＵ２で今正に駆動中のタスクＴ２がどの優先度を有するのかについて確認する必要がある。第１実行ユニットＣＰＵ１でのタスクＴ２とタスクＴ３との比較には、いずれにせよ、ある程度の時間が必要である。しかし、優先度の比較に掛かる期間または時間の間に、第２実行ユニットＣＰＵ２がタスクＴ２を終了し、自身でオペレーティングシステムまたはスケジューラを呼び出すケースが起こりうる。上述の例では、第２実行ユニットは、比較駆動モードＶＭで実行される必要がある残りのタスクＴ４を呼び出し、第１実行ユニットＣＰＵ１および第２実行ユニットＣＰＵ２の両方を必要とするタスクＴ３とタスクＴ４との間で、衝突が起��ることが予想される。衝突の発生は、呼び出されたタスクＴが比較駆動モードで実行される必要がある場合には、常に起こりうる。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
従って、本発明の課題は、比較駆動モードへの切り替えの際に衝突が回避される、複数の実行ユニットを有するシステム、および複数の実行ユニットを有するシステムを切り替える方法を創出することにある。
【課題を解決するための手段】
【００１０】
本課題は、本発明によれば、特許請求の範囲に記載の請求項１に示される特徴を有する方法、および、特許請求の範囲に記載の請求項１１に示される特徴を有する、複数の実行ユニットを有するシステムによって解決される。
【００１１】
本発明は、複数の実行ユニットを有するシステムを切り替える方法であって、システムは、少なくとも２つの実行ユニットを有しており、複数の実行ユニットが異なるプログラムを実行するパフォーマンス駆動モードＰＭから、複数の実行ユニットが同じプログラムを実行する比較駆動モードＶＭへとシステムを切り替える方法において、
−実行ユニットによってスケジューラを呼び出す工程であって、その際、呼び出されたスケジューラは、次に実行されるべきプログラムを決定する、実行ユニットによってスケジューラを呼び出す工程と、
−次に実行されるべきプログラムが比較駆動モードＶＭで実行される必要がある場合に、残りの複数の実行ユニットに、スケジューラを同様に呼び出すように促す工程と、
−最初に呼び出されたスケジューラにより決定された、実行されるべきプログラムが、比較駆動モードＶＭで実行される必要がある場合に、パフォーマンス駆動モードＰＭから比較駆動モードＶＭへと複数の実行ユニットを有するシステムを切り替える工程であって、その際、最後に呼び出されたスケジューラにより決定された、実行されるべきプログラムが、最も優先度が高いプログラムとして、全実行ユニットによって、複数の実行ユニットを有するシステムの比較モードＶＭで実行される工程と、
を含む、複数の実行ユニットを有するシステムを切り替える方法、を創出する。
【００１２】
本発明にかかる方法の好適な実施形態において、次に実行されるべきプログラムを決定するためにスケジューラを最初に呼び出す実行ユニットは、残りの全実行ユニットもスケジューラの呼び出しによって次に実行されるべきプログラムを決定するまで待機し、その後初めて、最後に呼び出されたスケジューラにより決定された、最も優先度が高いプログラムに相当するプログラムが、比較駆動モードＶＭで実行される必要があるかどうかについて検査される。
【００１３】
本発明にかかる方法の好適な実施形態において、最初に呼び出されたスケジューラにより決定されたプログラムが、比較駆動モードＶＭで実行される必要がない場合に、スケジューラを最初に呼び出した実行ユニットは、スケジューラを再呼び出しする。
【００１４】
本発明にかかる方法の好適な実施形態において、呼び出されたスケジューラが、次に実行されるべきプログラムとして、比較駆動モードＶＭではなくパフォーマンス駆動モードＰＭで実行される必要があるプログラムを決定する場合に、実行されるべきプログラムが、切り替えなしに直接的に実行される。
【００１５】
本発明にかかる方法の好適な実施形態において、次に実行されるべきプログラムを決定するためにスケジューラを呼び出す実行ユニットは、決定されたプログラムが比較駆動モードＶＭで実行される必要がある場合に、決定されたプログラムの優先度と、他の〔複数の〕実行ユニットで実行されている全プログラムの優先度とを比較する。
【００１６】
本発明にかかる方法の好適な実施形態において、他の実行ユニットで実行されているプログラムが、最初に呼び出されたスケジューラにより決定された、次に実行されるべきプログラムよりも優先度が高い場合に、スケジューラを最初に呼び出した実行ユニットは、アイドル駆動モード（ＩＤＬＥ）に移行し、残りの複数の命令ユニットがそれぞれ自身のプログラムを終了するまで待機する。
【００１７】
本発明にかかる方法の好適な実施形態において、次に実行されるべきプログラムを決定するためにスケジューラを呼び出す実行ユニットは、次に実行されるべきプログラムが比較駆動モードＶＭで実行される必要がある場合には、他の複数の実行ユニットに要請信号を送信することによって、他の複数の実行ユニットに、スケジューラを同様に呼び出すように促す。
【００１８】
本発明にかかる方法の好適な実施形態において、要請信号は割込み信号によって形成される。
【００１９】
本発明にかかる方法の好適な実施形態において、複数の命令ユニットはそれぞれ、プロセッサ、コプロセッサ、浮動小数点演算装置、演算論理装置、またはデジタル信号プロセッサによって形成される。
【００２０】
本発明にかかる方法の好適な実施形態において、実行ユニットは、実行されたプログラムの終了後にスケジューラを呼び出す。
【００２１】
さらに、本発明は、少なくとも２つの実行ユニットを有するシステムであって、システムは、複数の実行ユニットが異なるプログラムを実行するパフォーマンス駆動モードＰＭと、複数の実行ユニットが同じプログラムを実行する比較駆動モードＶＭとの間で切り替え可能であり、
−次に実行されるべきプログラムを決定するために実行ユニットによって呼び出されるスケジューラであって、その際、最初に呼び出されたスケジューラにより決定されたプログラムが比較駆動モードＶＭで実行される必要がある場合に、残りの複数の実行ユニットが、スケジューラを同様に呼び出すように促される、スケジューラと、
−最後に呼び出されたスケジューラにより決定された、実行されるべきプログラムが比較駆動モードＶＭで実行される必要がある場合に、パフォーマンス駆動モードＰＭから比較駆動モードＶＭへと複数の実行ユニットを有するシステムを切り替える切り替えユニットであって、その際、決定された、実行されるべきプログラムが、最も優先度が高いプログラムとして、全実行ユニットによって、複数の実行ユニットを有するシステムの切り替え後に比較駆動モードＶＭで実行される、切り替えユニットと、
を備える、少なくとも２つの実行ユニットを有するシステム、を創出する。
【発明を実施するための最良の形態】
【００２２】
図１から分かるように、図１で示されるシステム１においては、２つの実行ユニット２Ａ、２Ｂを有するデュアルコア・システムが関わっている。実行ユニット２Ａ、２Ｂは、任意の演算ユニット、例えば、全マイクロプロセッサ、コプロセッサ、デジタル信号プロセッサＤＳＰ、浮動小数点演算装置ＦＰＵ、または、演算論理装置ＡＬＵに相当しうる。２つの実行ユニットを有するシステム１の両実行ユニット２Ａ、２Ｂは、切り替えユニット３に接続されている。さらに、複数の実行ユニットを有するシステムは、割込み制御部４を有する。割込み制御部４は、バスインタフェース５を介してシステムバス６へと接続されている。システムバス６は、自身がアドレスおよびデータ線７Ａ、７Ｂを介して両実行ユニット２Ａ、２Ｂへと接続されている。アドレスおよびデータ線７Ａ、７Ｂは、システムバス６と共に、実行ユニット２Ａ、２Ｂのバスインタフェースを形成する。システム１は、切り替えユニット３の他に、比較ユニット８を含んでいる。比較ユニット８は、実行ユニット２Ａ、２Ｂによりデータ線７Ａ、７Ｂを介して出力される信号を互いに比較する。図１に示される両実行ユニット２Ａ、２Ｂを有するシステム１は、実行ユニット２Ａ、２Ｂが異なるプログラムを実行するパフォーマンス駆動モードＰＭと、実行ユニット２Ａ、２Ｂが同じプログラムを実行する比較駆動モードＶＭとの間で切り替え可能である。比較駆動モードＶＭでは、比較ユニット８は、実行ユニット２Ａ、２Ｂの論理出力信号を比較する。信号の不一致が発生すると即時に、比較ユニット８はエラー信号を生成し、制御線９を介して出力する。実行ユニット２Ａ、２Ｂは、アプリケーションプログラムの他に、オペレーティングシステムＢＳのプログラムも実行する。オペレーティングシステムＢＳの一部は、スケジューラによって形成される。スケジューラは、次に実行されるべきプログラムを選択し、実行のために、両コアまたは実行ユニット２Ａ、２Ｂのうちの１つに割り当てる。スケジューラは、例えば、プログラムの終了後に、実行ユニットによって、次に実行されるべきプログラムを決定するために呼び出されうる。その際、本発明にかかるシステム１の場合、最初に呼び出されたスケジューラにより決定されたプログラムが、比較駆動モードＶＭで実行される必要がある限り、残りの実行ユニットも同様に、スケジューラを呼び出すように促される。最後に呼び出されたスケジューラにより決定された、実行されるべきプログラムが、比較駆動モードＶＭで実行される必要がある場合に、切り替えユニット３は、パフォーマンス駆動モードＰＭから比較駆動モードＶＭへと実行ユニット２Ａ、２Ｂを切り替える。その際、この決定された、実行されるべきプログラムは、最も優先度が高いプログラムとして、比較駆動モードＶＭへのシステム１の切り替えの後に、全実行ユニット２Ａ、２Ｂによって実行される。第１実行ユニット２Ａが、スケジューラを呼び出した後に、比較駆動モードＶＭで実行されるべきタスクを最初に実行する必要がある場合に、オペレーティングシステム・スケジューラ、または実行ユニット２Ａで駆動するオペレーティングシステム・スケジューラ・インスタンスは、全実行ユニットに対して、比較駆動モードＶＭでタスクまたはプログラムを起動したいことを信号で知らせる。これによって、残りの実行ユニットは、特定のアルゴリズムが関わるオペレーティングシステム・スケジューラを、自身で呼び出すように促される。その際、最初にスケジューラを呼び出した実行ユニットは待機する。
【００２３】
４つのタスクＴ１、Ｔ２、Ｔ３、Ｔ４に関する上述の簡単な例の場合、Ｔ１は優先度が最も高く（Ｐｒｉｏ３）、Ｔ２は２番目に優先度が高く（Ｐｒｉｏ２）、Ｔ３は３番目に優先度が高く（Ｐｒｉｏ１）、Ｔ４は優先度が最も低い（Ｐｒｉｏ０）。その際、Ｔ１、Ｔ２はパフォーマンス駆動モードＰＭで実行される必要があり、Ｔ３、Ｔ４は比較駆動モードＶＭで実行される必要がある。実行ユニット２Ａは、タスクＴ１の終了後に、オペレーティングシステム・スケジューラを呼び出す。オペレーティングシステム・スケジューラは、実行ユニット２Ｂに、今正に駆動中のプログラム、または今正に駆動中のタスクＴ２を中断し、オペレーティングシステム・スケジューラを自身で呼び出すように促す。図１に示すように、実行ユニット２Ａは、線１０Ａを介して、切り替えユニット３へと切り替え希望信号を伝送する。同じ方法で、第２実行ユニット２Ｂは、線１０Ｂを介して、切り替えユニット３へと切り替え希望を信号で知らせることが可能である。切り替えユニット３は、必要な場合には、制御線１１Ａ、１１Ｂを介して実行ユニット２Ａ、２Ｂに切り替え信号を印加する。
【００２４】
図１に示される、複数の実行ユニットを有する本発明にかかるシステム１の実施形態の場合、システム１は、割込み制御部４を含んでいる。代替的な実施形態において、複数の割込み制御部４が設けられることが可能である。割込み制御部４は、例えば、ソフトウェアにより制御される割込み、すなわち内部割込みを起動できるようにプログラムされている。割込み制御部４は、線１２Ａ、１２Ｂを介して、実行ユニット２Ａ、２Ｂに別々に割込み要求を出力したり、両プロセッサ２Ａ、２Ｂに同時に割込み要求を出力したりする。可能な実施形態において、割込み制御部４により管理される割込みが優先される。これは必ずしも必須ではない。比較駆動モードＶＭへのモード変更を信号で知らせるために、可能な実施形態において、優先度が最も低い割込みを利用することが可能である。発生する各ハードウェア割込みには、割込みサービスルーチンＩＳＲが割り当てられている。その際、割込みサービスルーチンＩＳＲは、割込みサービスルーチンＩＳＲが比較駆動モードＶＭで実行される必要があるか否かを示す識別子を有している。割込みサービスルーチンＩＳＲが比較駆動モードＶＭで実行される必要がない場合には、割込みサービスルーチンが実行されるべき実行ユニットが、目下比較駆動モードＶＭにある場合には、モード変更は行なわれない。
【００２５】
可能な実施形態において、割込みルーチンは、アプリケーションプログラムの実行よりも優先される。割込みサービスルーチンＩＳＲが比較駆動モードＶＭで実行される場合に、割込み制御部４が線５を介してシステムバス６から獲得する割込み要求が、線１２Ａ、１２Ｂを介して両実行ユニット２Ａ、２Ｂへと送信されるように、割込み制御部４はプログラムされる。オペレーティングシステムＢＳのプログラムコードを実行する実行ユニットまたはプロセッサ・コアでは、この実行ユニットまたはプロセッサ上で、割込み問い合わせ、または割込み要求を処理することは不可能である。ハードウェア割込みが発生した際には、以下の工程が実行される。すなわち、最初に、駆動モードを含めて目下のプロセッサの状態が防護または記憶される。引き続いて、付属する割込みサービスルーチンＩＳＲが実行される際の駆動コードが決定され、必要な場合には、比較駆動モードＶＭへの切り替えが行なわれる。その後、優先度がより高いすべての割込みができる。続いて、割り込みサービスルーチンＩＳＲが実行され、防護または記憶されたプロセッサ状態が再形成される。必要な場合には、引き続いてパフォーマンスモードＰＭへの切り替えが行なわれる。
【００２６】
図１に基づく、複数の実行ユニットを有する本発明にかかるシステム１の場合、タスクまたはプログラムのスケジューリングが以下のように行なわれる。すなわち、複数の実行ユニットを有するシステム１が比較駆動モードＶＭにある場合には、全実行ユニット２Ａ、２Ｂが、同じプログラム、または同じタスクＴを同時に実行する。何らかの理由によりスケジューラＳＣＨがタスク変更のために呼び出される場合、例えば、実行ユニットがそのプログラムを終了したことを示す場合には、オペレーティングシステムＢＳの一部を形成するスケジューラＳＣＨが、最も優先度が高いプログラムまたはタスクを決定し、プログラム識別子によって、パフォーマンス駆動モードＰＭまたは比較駆動モードＶＭへとシステム１を切り替える。
【００２７】
システム１がパフォーマンス駆動モードＰＭにある場合には、複数のスケジューラ・インスタンスが存在する。すなわち、第１実行ユニット２Ａには、スケジューラ・インスタンスＳＣＨ−Ａが存在し、第２実行ユニット２Ｂには、スケジューラ・インスタンスＳＣＨ−Ｂが存在する。
【００２８】
例えば、スケジューラ・インスタンスＳＣＨ−Ｂが、最も優先度が高い次のタスクＴｘを決定し、決定されたプログラムまたは決定されたタスクＴｘが、比較駆動モードＶＭでの実行を要求する場合には、スケジューリング・データ構造は、最初は変更されない。その代わりに、スケジューリング・インスタンスＳＣＨ−Ａにより、プロセッサ２Ｂ上のプログラムまたはタスクＴｙの優先度が決定される。このタスクＴｙが次のタスクＴｘよりも優先度が低い場合には、切り替え希望が発生していることが、割込みによって実行ユニット２Ｂに知らされる。このタスクＴｙがタスクＴｘよりも優先度が高い場合には、スケジューラＳＣＨ−Ａは、アイドル駆動状態を形成するＩＤＬＥタスクを作動させる。報知の後、スケジューリング・インスタンスＳＣＨ−Ａは、スケジューリング・インスタンスＳＣＨ−Ｂが完了するのを待つ（バリア）。実行ユニット２Ａで割込みサービスルーチンＩＳＲが実行される際には、プロセッサ２Ａで全割込みが実行した場合に初めて、切り替え希望・問い合わせの処理が開始される。実行ユニット２Ａが、スケジューラ・インスタンスＳＣＨ−Ａの切り替え希望に基づいてオペレーティングシステムＢＳを作動させる場合に、実行ユニット２Ａによってもスケジューラ・インスタンスＳＣＨ−Ｂが呼び出される。実行ユニット２Ｂで駆動するスケジューラ・インスタンスＳＣＨ−Ｂも、タスクＴｘが実行される必要があるという演算結果に達した場合には、スケジューリング・インスタンスＳＣＨ−Ｂは、実行ユニット２Ａで駆動するスケジューリング・インスタンスＳＣＨ−Ａを、バリアから開放する。
【００２９】
スケジューリング・インスタンスＳＣＨ−Ｂが、タスクＴｘではなくタスクＴｚがパフォーマンス駆動モードＰＭで実行される必要がある、すなわち、タスクＴｚの優先度がタスクＴｘの優先度よりも大きい、という演算結果に達した場合には、スケジューリング・インスタンスＳＣＨ−Ａは同様にバリアから開放される。スケジューリング・インスタンスＳＣＨ−Ｂは、タスクＴｚの実行を促し、スケジューリング・インスタンスＳＣＨ−Ａは、優先度が最も高いタスクまたはプログラムを改めて決定する（再スケジュール）。
【００３０】
スケジューリング・インスタンスＳＣＨ−Ｂが、タスクＴｘではなくタスクＴｚが比較駆動モードＶＭで実行される必要がある、すなわち、タスクＴｚの優先度がタスクＴｘの優先度よりも大きい、という演算結果に達した場合には、スケジューリング・インスタンスＳＣＨは同様にバリアから開放される。その後、スケジューリング・インスタンスＳＣＨ−Ａ、ＳＣＨ−Ｂは、両実行ユニットでのタスクＴｚの実行を促す。
【００３１】
可能な実施形態において、スケジューリング・インスタンスＳＣＨ−Ａによって、内部フラグまたはフラグも設定が可能である。このフラグは、切り替え希望を知らせる。実行ユニット２Ｂが同時にオペレーティングシステムＢＳのプログラムを実行する場合に、スケジューリング・インスタンスＳＣＨ−Ａは、第２実行ユニット２ＢがオペレーティングシステムＢＳを中断し、割込みによって切り替え希望を獲得するまで待機する必要がある。第２実行ユニット２Ｂは、適切な箇所でフラグを問い合わせることが可能である。必要な場合には、オペレーティングシステムＢＳを中断することなく、スケジューラＳＣＨ−Ｂを呼び出したり、再スケジュールを実行したりすることが可能である。
【００３２】
従って、比較駆動モードＶＭへと切り替えるための本発明にかかる方法においては、スケジューラは、１つの実行ユニットだけではなく、残りの実行ユニットによっても呼び出される。最後に呼び出されたスケジューラＳＣＨにより決定された、実行されるべきプログラムが、比較駆動モードＶＭで実行される必要がある場合に初めて、切り替え工程が行なわれる。最後に呼び出されたスケジューラにより決定された、実行されるべきこのプログラムは、最も優先度が高いプログラムとして、全実行ユニット２によって、システム１の比較駆動モードＶＭにおいて実行される。次に実行されるべきプログラムを決定するために最初にスケジューラを呼び出す実行ユニット２は、残りの全実行ユニット２もスケジューラの呼び出しによって次の実行されるべきプログラムを決定するまで、待機する。その後初めて、最後に呼び出されたスケジューラＳＣＨによって決定された、最も優先度が高いプログラムに相当するプログラムが、比較駆動モードＶＭで実行される必要があるかどうかについて検査される。
【００３３】
最後に呼び出されたスケジューラＳＣＨにより決定されたプログラムが、比較駆動モードＶＭで実行される必要がないケースが発生した場合には、スケジューラＳＣＨを最初に呼び出した命令ユニットは、スケジューラＳＣＨを再呼び出しする。このケースは、第１実行ユニット２によるスケジューラＳＣＨの呼び出しと、最後の実行ユニット２によるスケジューラＳＣＨの呼び出しとの間の期間に、タスクＴの異なる優先順位付けを必要とするイベントが起きた場合に、発生しうる。
【００３４】
呼び出されたスケジューラＳＣＨが、次に実行されるべきプログラムとして、比較駆動モードＶＭではなく、パフォーマンス駆動モードＰＭで実行されるべきプログラムを決定する場合に、実行されるべきプログラム、またはタスクＴは、切り替えなしに直接的に実行される。
【００３５】
本発明にかかる方法の好適な実施形態において、他方の実行ユニット２で今正に実行されているプログラムが、最初に呼び出されたスケジューラにより決定された、次に実行されるべきプログラムよりも優先度が高い場合に、最初にスケジューラＳＣＨを呼び出した実行ユニット２は、残りの実行ユニット２が自身のプログラムを終了するまで、アイドル駆動モード（ＩＤＬＥ）に移行する。
【００３６】
本発明にかかる方法の好適な実施形態において、次に実行されるべきプログラムが比較駆動モードＶＭで実行される必要がある場合に、次に実行されるべきプログラムを決定するために最初にスケジューラを呼び出す実行ユニット２は、他の実行ユニットに要求信号を送信することによって、他の実行ユニット２に、スケジューラを同様に呼び出すように促す。
【００３７】
図２Ａは、本発明にかかる方法を解説するためのフローチャートを示している。図２Ａに示されるフローチャートは、例えば、第１実行ユニット２Ａ内での流れを示している。
例えば、実行ユニット２Ａによって、プログラムまたはタスク、例えばタスクＴ１が終えられた場合に、スケジューラの呼び出しが行なわれる。工程Ｓ１ＡでのスケジューラＳＣＨの呼び出しの後に、工程Ｓ２Ａでは、次のプログラムまたは次のタスクＴが、比較駆動モードＶＭまたはパフォーマンスモードＰＭで実行される必要があるかどうかについて決定される。上記の例の第２実行ユニット２ＢでタスクＴ２が駆動し、かつ、スケジューラＳＣＨによって、優先度に対応して、次に実行されるべきタスクとして、比較駆動モードＶＭで実行されるべき優先度１のタスク３が選択される場合に、流れは、工程Ｓ３Ａへと分岐する。反対に、次に実行されるべきプログラムがパフォーマンス駆動モードＰＭで実行される必要がある場合、プログラムは、工程Ｓ４Ａで直接的に開始可能である。工程Ｓ３Ａでは、次に実行されるべきタスクＴ３の優先度と、今正に他方の実行ユニット２Ｂで駆動中のプログラムの優先度とが比較される。これは、上記の例では優先度Ｐｒｉｏ２のタスクＴ２に相当する。他方の実行ユニット、すなわち実行ユニット２Ｂで駆動しているプログラムの優先度がより高い場合には、中断不可能である。この場合、実行ユニット２Ａは、工程Ｓ５Ａで、アイドル駆動モード（ＩＤＬＥ）に移行する。上記の例においては、タスクＴ３の優先度（Ｐｒｉｏ１）よりも駆動中のタスクＴ２の優先度（Ｐｒｉｏ２）が高いので、工程Ｓ５Ａが実行される。反対に、次のタスクの優先度よりも他方の実行ユニット２Ｂのプログラムの優先度が低い場合には、工程Ｓ６Ａで、切り替え希望が、割込みを介して実行ユニット２Ａから実行ユニット２Ｂへと信号で知らされる。その際、割込みサービスルーチンＩＳＲが起動される。報知の後で、第１実行ユニット２Ａは、工程Ｓ７Ａにおいて、バリア状態に入る。バリアでは、実行ユニット２Ａが実行ユニット２Ｂの信号を待つ。バリアは、ソフトウェア同期化データ構造（Ｓｏｆｔｗａｒｅ−Ｓｙｎｃｈｒｏｎｉｓａｔｉｏｎｓ−Ｄａｔｅｎｋｏｎｓｔｒｕｋｔ）に相当し、他の実行ユニットが同じプログラム実行時点に達するまで実行ユニットまたはＣＰＵは待機する。割込みサービスルーチンＩＳＲの起動後に、第２実行ユニット２Ｂは自身でオペレーティングシステム・スケジューラＳＣＨを呼び出す。その際、図２Ｂに示す流れが実行される。実行ユニット２Ｂもバリア状態に入った場合には、両実行ユニット２Ａ、２Ｂが同じ演算結果になったか、すなわち、両実行ユニット２Ａ、２Ｂが、同じプログラムまたは同じタスクを次に実行しようとしているかについて、両実行ユニット２Ａ、２Ｂによってほぼ並行して検査される。この検査は、比較駆動モードＶＭによるものではない。実行ユニット２Ａがバリア状態になる工程は、図２では工程Ｓ７Ａとして示されている。場合によっては、工程Ｓ８Ａで、引き続いて割込みサービスルーチンＩＳＲが解除される。両実行ユニット２Ａ、２Ｂが同じ演算結果になったかどうか、すなわち、同じプログラムまたは同じタスクを実行しようとしているのかについての検査は、工程Ｓ９Ａで示されている。両実行ユニット２Ａ、２Ｂによって、スケジューラＳＣＨの各呼び出しの後で、同じプログラムまたは同じタスクＴが決定された場合に、工程Ｓ１０Ａで、システム１が比較駆動モードＶＭに切り替えられ、引き続いて工程Ｓ４Ａで、プログラムまたはタスクが両実行ユニット２Ａ、２Ｂで実行または開始される。例えば、第２実行ユニット２Ｂも、スケジューラの呼び出しの後に、比較駆動モードＶＭで実行されるべきタスクＴ３を実行したいという演算結果の比較Ｓ９Ａが明らかになった場合に、工程Ｓ１０Ａでの比較駆動モードＶＭへの切り替えの後に、このタスクＴ３が工程Ｓ４Ａで開始される。反対に、他方の実行ユニット２Ｂが異なる演算結果を出すことが確認された場合には、工程Ｓ１１Ａで、実行ユニット２Ｂにより選択されたプログラム、または選択されたタスクＴが、同様に比較駆動モードＶＭで実行される必要があるかどうかについて検査される。これに該当する〔実行ユニット２Ｂにより選択されたプログラム、または選択されたタスクＴが、同様に比較駆動モードＶＭで実行される必要がある〕場合には、工程Ｓ１０Ａで、システム１が比較駆動モードＶＭへと切り替えられ、最後に呼び出されたスケジューラＳＣＨにより決定されるタスク、すなわち、実行ユニット２Ｂにより決定されたタスクが、工程Ｓ４Ａで開始される。工程Ｓ１１Ａで、実行ユニット２Ｂにより決定されたタスクＴが、比較駆動モードＶＭではなく、パフォーマンス駆動モードＰＭで実行される必要があることが確認される場合には、実行ユニット２Ａは、工程Ｓ１ＡでスケジューラＳＣＨを再呼び出しする。
【００３８】
図２Ｂは、他方の実行ユニット２Ｂでの補足的な流れを示している。実行ユニット２Ａによる、図２Ａの工程Ｓ６Ａにおける割込みサービスルーチンＩＳＲの起動の後に、実行ユニット２Ｂは、図２Ｂの工程Ｓ１Ｂにおいて、スケジューラＳＣＨを自身で呼び出す。実行ユニット２Ｂは、対応する割込みサービスルーチンＩＳＲに入る。実行ユニット２Ｂは、最初に、工程Ｓ１ＢでスケジューラＳＣＨを起動し、引き続いて工程Ｓ２Ｂで、バリア状態に入る。従って、プロセッサ２Ａも引き続き駆動する。場合によっては、工程Ｓ３Ｂにおいて、割込み制御部４での割込みの解除が行なわれる。図２Ｂに示すように、工程Ｓ４Ｂでは、実行ユニット２Ａおよび実行ユニット２Ｂが、同じタスクＴまたは同じプログラムを決定したかどうかについて検査される。両実行ユニット２Ａ、２Ｂが同じタスクＴを決定した場合に、工程Ｓ５Ｂで比較駆動モードＶＭへと切り替えられ、引き続いて、工程Ｓ６ＢでタスクＴが実行される。第２実行ユニット２Ｂが、実行のために、実行ユニット２Ａとは異なるタスクを決定した場合には、工程は、工程Ｓ７Ｂへと分岐する。第２実行ユニット２Ｂにより実行されるタスクも比較駆動モードＶＭで実行される必要がある場合には、工程Ｓ５Ｂで比較駆動モードＶＭへの切り替えが行なわれ、最後に決定されたタスク、すなわち、実行ユニット２Ｂにより決定されたタスクが、工程Ｓ６Ｂで実行される。工程Ｓ７Ｂで、第２実行ユニット２Ｂにより決定されたタスクＴが、比較駆動モードＶＭではなく、例えばパフォーマンス駆動モードＰＭで実行される必要があることが確認される場合には、比較駆動モードＶＭへの切り替えは行われず、このタスクは、工程Ｓ６Ｂで実行される。
【００３９】
図２Ａ、２Ｂで示されるプログラムの流れは相補的である。例えば、第２実行ユニット２Ａが、実行ユニット２Ａによる切り替え希望の報知に関係なく、オペレーティングシステムＢＳに入る場合、このケースでは、第２実行ユニット２Ｂは、図２Ａに示す流れを実行し、実行ユニット２Ａは、図２Ｂに示す流れを実行する。
【００４０】
本発明にかかる方法は、どんな場合にも、比較駆動モードＶＭへの切り替えの際の実行ユニット２がロックされるのを予防する。本発明にかかる方法は、特に、２つまたは複数の実行ユニットを有するシステムに適している。システム１が例えば２つの実行ユニット２を有する場合に、本発明にかかる方法の場合、最後に呼び出されたスケジューリング・インスタンスにより決定されたタスクが目下のところ最も優先度が高く、結果として実行されるので、スケジューリングは２回行なわれる。その際、両スケジューリング・インスタンスは、流れに含まれるバリアに基づいて互いに同期している。
【図面の簡単な説明】
【００４１】
以下では、複数の実行ユニットを有する本発明にかかるシステム、および、複数の実行ユニットを有する本発明にかかるシステムを切り替えるための本発明にかかる方法の好適な実施形態が、本発明の基本的な特徴を解説するための添付の図を参照して記載される。
【図１】複数の実行ユニットを有する本発明にかかる方法の可能な実施形態を示す。
【図２Ａ】本発明にかかる切り替え方法を解説するフローチャートを示す。
【図２Ｂ】本発明にかかる切り替え方法を解説する更なる別のフローチャートを示す。
【図１】
2009541887.tif 000003
【図２Ａ】
2009541887.tif 000004
【図２Ｂ】
2009541887.tif 000005
【国際調査報告】
2009541887.tif 000006
2009541887.tif 000007
2009541887.tif 000008
2009541887.tif 000009
2009541887.tif 000010
2009541887.tif 000011
2009541887.tif 000012
2009541887.tif 000013