(57)【特許請求の範囲】
【請求項１】
ハードウェア・リソースに直接リンクするシステム機能を実行するマイクロ・カーネルを含み、一群のタスクを含むアプリケーションを実行するための２つのコアを備える情報処理システムであって、
コアＡ上でのタスクの実行コンテキストの切替えを管理する前記システム機能を実行する該コアＡ上の前記マイクロ・カーネルの計算部分ｍＮ−ＴＴと、
入力／出力割込みによってトリガされるタスクを実行し、前記コアＡ上でのタスク割当て順序の制御に関連するシステム機能を実行するコアＯ上の前記マイクロ・カーネルの制御部分ｍＮ−ＥＴと
を備え、
前記計算部分ｍＮ−ＴＴは、前記システム機能として各タスクについて該タスクが実行可能であるかどうかを示す状態の更新を実行し、該状態が、前記タスクに関連する前記実行コンテキスト内に含まれ、前記タスク用の実行データを集め、
・  前記タスクが動作可能であることを示す値
・  前記タスクがアイドル状態にあることを示す値
・  前記タスクがエラー状態にあることを示す値
を取得することができ、
前記制御部分ｍＮ−ＥＴは、前記システム機能として、
・  前記動作可能であるタスクの順序付きリストの管理、および／または、
・  前記アイドル状態にあるタスクの順序付きリストの管理、および／または、
・  前記エラー状態にあるタスクのリストの管理
の少なくとも１つを実行し、
前記マイクロ・カーネルの前記制御部分ｍＮ−ＥＴと前記計算部分ｍＮ−ＴＴがタスクの順序付きリストのセットを共有し、該リスト内の順序が前記制御部分ｍＮ−ＥＴによって維持され、該リストの各要素のコンテンツが前記計算部分ｍＮ−ＴＴによって維持され、
前記コアＯは、各タスクの実行限度時刻に従って、また各タスクの実行時間割当て分に従って、各タスクを実行することを可能にする順序で、動作可能である前記タスクの前記リスト内の前記タスクを順序付ける
ことを特徴とする、情報処理システム。
【請求項２】
前記マイクロ・カーネルの前記計算部分ｍＮ−ＴＴによって実行される前記システム機能が、前記コアＡによる割込みを受け取ると、
−  前記動作可能であるタスクからタスクの前記実行コンテキストをローディングするステップと、
−  前記タスクの実行をトリガするステップと、
を含むことを特徴とする、請求項１に記載の情報処理システム。
【請求項３】
割込みを受け取ると、前記マイクロ・カーネルの前記計算部分ｍＮ−ＴＴが、前記タスクの前記実行コンテキストを、前記動作可能であるタスクの前記リストにロードすることを特徴とする、請求項２に記載の情報処理システム。
【請求項４】
前記マイクロ・カーネルの前記制御部分ｍＮ−ＥＴによって実装されるタイマにより、前記割込みが生成されることを特徴とする、請求項２に記載の情報処理システム。
【請求項５】
前記タイマが、水晶クロックによってペース調整されて、前記マイクロ・カーネルの前記計算部分ｍＮ−ＴＴにより、リアルタイム・アプリケーション・タスクの前記実行をトリガすることを特徴とする、請求項４に記載の情報処理システム。
【請求項６】
各コアが、タスクに特有のタスク間の通信に関連するシステム機能を実行することを特徴とする、請求項１に記載の情報処理システム。
【請求項７】
メモリ空間と、前記コアにより該コアが相互作用するよう共有された１組の割込みとを含むことを特徴とする、請求項１に記載の情報処理システム。
【請求項８】
前記コアＡと前記コアＢとが、異なるタイプのプロセッサであることを特徴とする、請求項１に記載の情報処理システム。
【請求項９】
前記プロセッサが、チップ上に実装されることを特徴とする、請求項８に記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システム・タスクを実行する複数の処理コアを含む情報処理システムの決定論的実行および同期のための方法に関する。本発明は、詳細には、マイクロエレクトロニクスの分野、または高い計算機能力を有する埋込み式電子システムの分野に関する。
【背景技術】
【０００２】
半導体産業を見ると、期待はずれの状況に直面している。すなわち、もはやプロセッサの性能レベルを著しく改善するためのいかなる確たる道筋もなく、少なくとも個々のレベルではない。並列に動作する複数のプロセッサを使用するシステムのみが、依然として、システムの計算機能力を増大させる有望な道筋を示すものと思われる。実際に、１９６０年代に実施された研究では、計算システムの計算機能力と効率の比が、並列システムにおいては順次システムよりも潜在的にはるかに高いことが示された。現在、マルチメディア、通信、またはリアルタイム処理システムなどの分野における新規の用途が、消費される電力レベルおよび制御された表面積に対してさらに高い計算機能力を必要としている。シングル・コアの処理能力を増大させることができなくなっているので、唯一の解決策は、コアの数を増やし、それらのコアを並列に動作させることであり、それにより新規のアーキテクチャ概念、すなわちオンチップ並列システムの概念が生まれてくる。組込みシステム向けのプロセッサのかなり特殊化した状況から、全く同一のチップ上で実行コアの数を増大させるこの傾向が非常に著しい。このことは、やや長い目で見ると、数十もしくは数百にまで及ぶ実行コアを有するシステムが導入される傾向にあり、または標準化さえされる傾向にあるはずである。これらのシステムの中で、オンチップ・マルチプロセッサ・システムは引き合いに出されるに足り、通常、「マルチプロセッサ・システム・オン・チップ」を意味する頭辞語「ＭＰＳｏＣ」と表される。
【０００３】
しかし、並列システムは、プログラムおよびデバッグを行うことが順次システムよりもはるかに難しい。アプリケーションがより複雑になることにより、これらプログラミングおよびデバッギングがますます困難になる。埋込み式アプリケーションでは、はるかに多くの機能を集積化しようとする要望により、また処理すべきデータのボリュームの増大が進行していることにより、やはりこれらの困難が増大する。たとえば、携帯電話は、遠隔通信機能をマルチメディア、位置決め、またはゲーム機能にまで関連付ける。これにより、これら様々なアプリケーションの要素間に非常に強い相互作用が存在する状態で、制御支配型のタスクとともに集中的な計算タスクが実行される組込みシステムが生まれる。このため、有効な並列性を最良に管理するために様々なコアの処理機能を同期することは、関連するリアルタイム制約条件に応答する際に重要な性能および能力要素である。組込みシステムの並列アーキテクチャの効果的な運用において、このことが主として難しい。この難しさは、予測不可能性の統制、通信の統制、および制御の統制という３重の態様から見なければならない。潜在的な並列性が識別され、アプリケーションから抽出され、プログラムで表されると、次に所与のハードウェア・アーキテクチャにおいて、この並列性を効果的に実施できることが不可欠である。たとえば、ＭＰＳｏＣにおいては、プログラマによってなされるアプリケーションの並列性を抽出する仕事から最大の利益を引き出すために、チップのすべてのリソース内で数多くの処理シーケンスを最良に分散しなければならないが、これらのシーケンスは、データ従属性または実行制御の従属性によって相互に結びついている。以下では、これらのシーケンスを「実行タスク」と呼ぶことにする。すなわち、実行タスクは、処理コア上で処理機能を実行することに関する。ソフトウェアの専門家はまた、それを「スレッド」と呼ぶことに留意されたい。本出願では以降、区別は行わないこととし、用語「タスク」は、もっぱら実行タスクを指すこととする。ＭＰＳｏＣ上でこれらタスクの実行を編成し、開発者の仕事をうまく進めるために、それらの実行に対するソフトウェア支援が、純粋にアプリケーション・パーツおよび他のいわゆる「システム」パーツ内に構築され、その機能は、基礎を成すハードウェアのリソースを抽出することである。各タスクによって表される並列性およびＭＰＳｏＣ内で利用可能な並列性をよりよく利用するために、一方では、様々なコア上で実行すべき処理機能を選択する方式に関する研究を、他方では、それらを一緒に動作させる方式、すなわちハードウェア上でのタスクの実行を制御する基本ソフトウェアの構築方法に関する研究を行うことが必要である。したがって、プログラムがアプリケーションの並列性についての潜在力を表すのと同様に、一般には「カーネル」と呼ばれる基本ソフトウェア・レベルで、各タスクを適切に制御することにより、アーキテクチャの並列性についての潜在力を表す手段を見つけることが不可欠である。この研究は、アーキテクチャの潜在的な並列性を良好に使用することに悪影響を及ぼすあらゆる状況を考慮に入れなければならない。まず、中央記憶装置、ネットワーク、通信バス、またはタスク・マネージャなど、不可欠な共用リソースへのアクセスによって制限されるという危険がある。特に前記タスクが動的性質を有するとき、タスク間の相互依存性をきめ細かに管理することができないという危険もある。また最後に、並列実行の予測不可能性を抑えることができず、プログラムのデバッギングを複雑で難しくするという危険がある。この問題に取り組む１つの標準的な方法は、階層化ソフトウェア手法であり、この手法では、最低限でも、実行すべき各タスクを組み込むアプリケーション層と、ハードウェア・リソースを抽出し、マシン上でタスクの効果的な実行を管理するカーネルとが区別される。カーネルそれ自体は、従来、２つの部分から構成され、１つは「マイクロ・カーネル」と呼ばれ、レジスタ、タイマ、周辺装置などの管理など、ハードウェアに直接関係するすべてのシステム機能を実行し、第２の部分は、この文書では「システム層」と呼ばれ、タスク間の通信および他のハイレベルのタスク制御面に関与している。この研究により、調整された効果的なやり方で、処理コアが選択される方法、および処理コアが動作するようになる方法を規定するカーネルの最高の構成ができるようになるはずである。これは、マイクロエレクトロニクス産業および埋込みソフトウェア産業が現在直面し、本発明が解決策を提供する主要な課題の１つを成す。
【０００４】
既存の解決策は、カーネルを実行するために、処理コアを対称に使用することを提案する。これは、「対称型マルチプロセッシング」（ＳＭＰ）タイプのアーキテクチャにおいて実施される。たとえば、この解決策は、互いに異なる処理コアのそれぞれの上で実行されるＬｉｎｕｘまたはＷｉｎｄｏｗｓ（登録商標）タイプの同一のカーネルを有することが必要になることがある。しかし、主な欠点は、ＬｉｎｕｘまたはＷｉｎｄｏｗｓ（登録商標）タイプのカーネルが、少なくともそのカーネルの重要な機能に関しては、２つの異なるコア上で全く同時には実行できないことである。したがって、並列性は、カーネルの重要ではない機能に限定される。それが、カーネルの重要な機能のうちいくつかの機能を複数の処理コア上に分散することによって本発明が解決することを提案する、技術的な問題の１つである。
【０００５】
いわゆる「パーティション」解決策もあり、各処理コアが相互に関知しない動作の専用になることを提案する。次いで、メモリ空間の共用を介して交換が起こる。たとえば、「Ｒｅａｌ−ｔｉｍｅ  ｔｈｒｅａｄｉｎｇ  ｓｅｒｖｉｃｅ  ｆｏｒ  ｐａｒｔｉｔｉｏｎｅｄ  ｍｕｌｔｉｐｒｏｃｅｓｓｏｒ  ｓｙｓｔｅｍｓ」と題する国際公開第２００７／０３８０１１号パンフレットには、コアがどのようにして、リアルタイム・タスクの実行専用になり、別のコア上で実行される非リアルタイムのカーネルによって実行されるアプリケーションに結果を提供できるかが記載されている。同様にして、各コアがあるタイプの処理機能（論理計算、負荷の重い計算、ネットワークへの入力／出力割込みの実行など）の専用になるように、コアがカーネルを実行する解決策がある。典型的な例では、１つのコアを計算専用とし、その他のコアを、周辺装置の入力／出力にサービスを提供するための割込み実行専用とする。この典型的な場合では、割込みの実行を管理するコアによって利用可能になった入力／出力から生じる非同期データに基づいた計算を、計算コアのカーネルが実行することが可能になる。割込みは、プログラムの外部の事象の発生に対応し、前記事象は、現在のタスクの実行の一時的な停止をトリガして、他の優先順位のより高いタスクを実行する（実行コンテキストのこの変更はスイッチと呼ばれる）。この外部事象は、実際のクロックまたはシミュレートされたクロックを進めることでもよく、場合によっては、優先順位のより高いタスクがタイマによってトリガされる。時間制約型すなわち「タイム・トリガ型」（ＴＴ）であるリアルタイム・タスクについては、特にそうである。すなわち、リアルタイム・タスクは、所与の時刻の前に終了しなければならない場合には、やはり、タスク実行継続時間に依存して、所与の時刻の前に開始しなければならない。リアルタイム・タスクは、水晶によって物理的にペース調整されたタイマによってトリガされ、したがって、リアル・クロックを形成する。外部イベントはまた、データ転送の完了でもよく、このとき、優先順位のより高いタスクが「イベント・トリガ型」（ＥＴ）と呼ばれ、入力／出力割込みに従う。このタイプの比較的従来の設計では、割込み実行コアと計算コアが弱く結合している。このとき、このタイプの解決策は、提供されたデータおよび関連する信号の集まりを提供することをその調整に利用するコプロセッサを有するアーキテクチャに似ている。この解決策の１つの利点は、高速入力／出力に対して良好な応答性を提供することであり、すなわち、計算コア上の処理機能のスケジューリングを決して中断することなく、関連する基本的な計算の実行を可能にすることである。実行すべきタスクが互いに独立しているとき、すなわち、それらのタスクが、データ交換および／または同期について、ほとんどまたは何も要求しないとき、この解決策は効果的である。しかし、入力／出力が、計算との強力な同期を必要とするとき、または様々な速度の数多くの入力／出力が存在するとき、このタイプの解決策はあまり効果的ではない。本発明が解決しようと提案する技術的な問題の１つが、やはりここにある。
【０００６】
他の既存の解決策のカテゴリーは、「マスタ・スレーブ」タイプのカーネル・アーキテクチャ（「Ｃｏｏｒｄｉｎａｔｉｏｎ  ａｎｄ  ｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ  ｏｆ  ａｎ  ａｓｙｍｍｅｔｒｉｃ，  ｓｉｎｇｌｅ−ｃｈｉｐ，  ｄｕａｌ  ｍｕｌｔｉｐｒｏｃｅｓｓｏｒ」と題する、米国特許第００５９７８８３８Ａ号明細書に示す）から成る。あるコアが「マスタ」コアに指定され、すべてのシステム呼出しおよびすべての割込みの管理に関与し、その他のコアが、「スレーブ」コアに指定され、アプリケーション・タスクのアルゴリズム部分のみを実行する。したがって、マスタ・コアは、その他のスレーブ・コアが実行すべき処理機能の制御および割当てをすべて担当する。すなわち、マスタ・コアは、それらの実行を同期させる。利点は、マスタ・プロセッサが完全に管理する同期問題の単純化である。このアーキテクチャでの主な欠点は、その強力な権限集中であり、マスタ・プロセッサは、多数のタスクまたは多数のコアさえもが関係するときに生じる競合問題に曝される。すなわち、総合的な性能レベルは、この場合、マスタ・プロセッサの性能レベルによって急激に制限される。Ｍｉｎｙｅｏｌ  Ｓｅｏらによる「Ａｎ  ｅｆｆｅｃｔｉｖｅ  ｄｅｓｉｇｎ  ｏｆ  ｍａｓｔｅｒ／ｓｌａｖｅ  ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ  ａｒｃｈｉｔｅｃｔｕｒｅ  ｆｏｒ  ｍｕｌｔｉｐｒｏｃｅｓｓｏｒ  ｅｍｂｅｄｄｅｄ  ｓｙｓｔｅｍｓ」と題する、Ａｄｖａｎｃｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ｖｏｌ．４６９７）で公開されているように、様々な改善が提案されてきた。この公開の目的は、スケジューリング問題を最適化することである。これらの改善は、すべての入力／出力の処理、またはすべてのシステム呼出し、特にタスク間通信に関するシステム呼出しの処理からマスタ・コアを決して解放することなく、各コアにおけるスケジューリング・ポリシーを階層的に構成することを提案する。これを実行するために、これらの改善では、各コア上に複製され、各コア間の通信（「プロセッサ間通信」すなわちＩＰＣ）を管理する「ハードウェア・アブストラクション層」と呼ばれるカーネルの一部分を規定する。各コアを同期させるためのＩＰＣのメカニズムは、遠隔手続き呼出しに基づいて実施されるメカニズムである。ところが、このクライアント・サーバ分散機能呼出しメカニズムは、遮断の原因になる。すなわち、あるコア上のタスクが他のタスクに宛てたメッセージの送信を呼び出すとき、このタスクは、マスタ・コア上に遠隔システム機能を呼び出すことになる。このため、呼出しコアが、この機能からのリターン呼出しまでブロックされ、この期間中、他のあらゆる並列実行が阻止される。同様にして、様々な理由によりマスタ・コアがブロックされる場合、すべてのスレーブ・コアもブロックされ、また逆の場合も同様である。したがって、こうした解決策もまた、依然として権限集中している。本発明が解決しようと提案する技術的な問題の１つが、ここにもある。
【０００７】
最後に、欧州特許第１３３７９１９Ｂ１号明細書に記載されているような、シングル・コア・プロセッサ用のカーネル構造化提案もあり、、シングル・コア上でのタスクの決定論的実行を調整することを可能にするマイクロ・カーネルとシステム層とのカーネルの構成を開示している。この特許は、ＭＰＳｏＣアーキテクチャの様々なコア間でカーネルの有利なパーティショニングをどのように進めるかは示していない。また、これが本発明の目的の１つである。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明の目的は、特に、処理コア上のマイクロ・カーネルの最適化されたパーティショニングを提案することにより、前述の欠点に対する解決策を提供することである。
【課題を解決するための手段】
【０００９】
したがって、ペース調整および時間管理の機能の最適な分散に基づいてシステム機能が割り当てられ、その結果、各コアは、マイクロ・カーネルの処理機能のうちのある部分のみを扱う。このとき、コアはタスクの実行専用であり、第２のコアが、第１のコアの部分的な制御装置および割込みマネージャとして振る舞う。本発明は、以下の２つの異なる相補的な部分でマイクロ・カーネルを構成することを提案する。すなわち、
・  時間基準の維持およびスケジューリング・リストの更新に関するシステム割込みの取込みを扱う制御指向の部分、および
・  時間ペース調整されたタスクの実行に関連する計算指向の部分である。次いで、マイクロ・カーネルのこの部分は、「制御」部分によって実装され駆動されるスケジューリング・ポリシーに従って、タスクの切替えを扱う。
マイクロ・カーネルのこの構成により、以下のものから生じるタスクの効果的な共存が容易になる。すなわち、
・  割込み状態のタスクが実行され、割込みによってトリガされる入力／出力動作を集めるＥＴ（「イベント・トリガ型（Ｅｖｅｎｔ  Ｔｒｉｇｇｅｒｅｄ）」）アイランド、および
・  リアルタイムのタスクが実行され、時間ペース調整された動作を集めるＴＴ（「タイム・トリガ型（Ｔｉｍｅ  Ｔｒｉｇｇｅｒｅｄ）」）アイランドである。
したがって、ＴＴアイランドは、計算指向の部分に割り当てられ、一方、マイクロ・カーネルの制御指向の部分は、システム割込みの実行専用であり、やはり、ＥＴアイランドの入力／出力アプリケーションの割込みの取込みおよび処理を扱うことができる。これにより、２つの異なるコア上に２つのアイランドをパーティショニングする利点がもたらされるが、またＴＴアイランドから生じるタスクに最大の計算リソースを付与する利点ももたらされ、これらのタスクは、ＥＴアイランドのタスクが起動されることによる切替えに従うということはない。この文書の以下では、マイクロ・カーネルの「計算」部分は、「ｍＮ−ＴＴマイクロ・カーネル」または「ｍＮ−ＴＴ部分」と呼ばれ、一方、マイクロ・カーネルの「制御」部分は、「ｍＮ−ＥＴマイクロ・カーネル」または「ｍＮ−ＥＴ部分」と呼ばれる。
【００１０】
このために、本発明の主題は、特に、２つの処理コアを備える情報処理システムである。システムによるアプリケーションの実行には、アプリケーション・タスクの実行およびシステム・タスクの実行が含まれ、システムは、ハードウェア・リソースに直接リンクするシステム・タスクを実行するマイクロ・カーネルを含み、
・  第１のコアＡ上でのマイクロ・カーネルの計算部分ｍＮ−ＴＴが、コアＡ上のタスクの切替えに関連するシステム・タスクを実行し、各タスクについての、前記タスクが実行可能であるかどうかを示す状態の更新を含み、前記状態が、前記タスクに関連する実行コンテキスト内に含まれ、前記タスク用の実行データを集め、前記状態が、以下の値を取得することができる。
・  タスクが動作可能であることを示す値
・  タスクがアイドル状態にあることを示す値
・  タスクがエラー状態にあることを示す値。
・  第２のコアＯ上のマイクロ・カーネルの制御部分ｍＮ−ＥＴが、入力／出力割込みによってトリガされるアプリケーション・タスクを実行し、コアＡ上でのタスク割当て順序の制御に関連するシステム・タスクを実行し、前記システム・タスクが以下の管理を含む。
・  動作可能であるタスクの順序付きリストの管理、および／または
・  アイドル状態にあるタスクの順序付きリストの管理、および／または
・  エラー状態にあるタスクのリストの管理。
処理システムは、各タスクの切替えに関連するコアＡによって実行されるシステム・タスクが、各タスクの実行コンテキストにおける更新を含むことを特徴とし、各タスクは以下のものを含む。
・  もっとも早い時点での実行開始限度時刻および／またはもっとも遅い時点での実行終了限度時刻
・  残り実行時間の割当て分。
その結果、コアＯは、実行限度時刻に従って、また実行時間割当て分に従って、各タスクを実行することを可能にする順序で、動作可能であるタスクのリスト内の各タスクを順序付ける。
【００１１】
有利には、各タスクの切替えに関連するマイクロ・カーネルのｍＮ−ＴＴ部分によって実行されるシステム・タスクは、コアＡによる割込みを受け取ると、以下のステップを含み得る。
・  動作可能であるタスクからタスクの実行コンテキストをローディングするステップ
・  前記タスクの実行をトリガするステップ。
【００１２】
有利には、割込みを受け取ると、マイクロ・カーネルのｍＮ−ＴＴ部分は、第１のタスクの実行コンテキストを、動作可能であるタスクのリストにロードすることができる。
【００１３】
必要ならば、マイクロ・カーネルのｍＮ−ＴＴ部分によって実装されるタイマを有する割込みを生成することが可能である。このタイマは、水晶クロックによってペース調整されて、マイクロ・カーネルのｍＮ−ＴＴ部分により、リアルタイム・アプリケーション・タスクの実行をトリガすることが可能である。
【００１４】
有利には、各コアは、タスクに特有のタスク間の通信に関連するシステム・タスクを実行することができる。
【００１５】
有利には、システムは、各コアが相互作用するように、共有メモリ空間および１組の割込みを含んでもよい。
【００１６】
一実施形態では、各コアは、様々なタイプのプロセッサでもよい。プロセッサは、チップ上に実装してもよい。
【００１７】
本発明の他の主な利点は、マイクロ・カーネルのパーティショニングにより、高速な入力／出力の割込み状態の処理機能および特定のシステム処理機能から、計算コアを解放することが可能になり、したがって、計算タスクと割込み状態の処理機能との間でのコンテキストの頻繁な変更が回避されることである。チップ上に実装されると、マルチコア・ハードウェア・アーキテクチャ上の様々な取得または計算の処理機能間での高レベルのセキュリティを保証しながら、達成可能な性能レベルが改善される。本発明により、時間ペース調整された計算処理機能を有することも可能になり、イベントペース調整された入力／出力に関連するルーチンが効果的に共存する。
【００１８】
本発明の他の特徴および利点は、添付図面に照らしてみれば、以下の説明から明らかになろう。
【図面の簡単な説明】
【００１９】
【図１】タイミング図により、２つの処理コア上でのマイクロ・カーネルの各動作の、本発明による例示的な分散を示す図である。
【図２】機能ブロック図により、マイクロ・カーネルのｍＮ−ＥＴ部分を対象とする割込みの、本発明による一例を示す図である。
【図３】機能ブロック図により、ｍＮ−ＥＴ部分から生じ、マイクロ・カーネルのｍＮ−ＴＴ部分を対象とするソフトウェア割込みの、本発明による一例を示す図である。
【図４】機能ブロック図により、マイクロ・カーネルのｍＮ−ＥＴ部分を対象とする入力／出力割込みの、本発明による一例を示す図である。
【図５】機能ブロック図により、マイクロ・カーネルのｍＮ−ＴＴ部分を対象とするｍＮ−ＴＴ部分からのソフトウェア割込みの、本発明による一例を示す図である。
【図６】タイミング図により、本発明による、並列状態の２つのコアの動作状況の一例を示す図である。
【発明を実施するための形態】
【００２０】
本発明によれば、マイクロ・カーネルのｍＮ−ＥＴ部分およびｍＮ−ＴＴ部分は、動作可能／アイドル／エラーの状態にあるタスクについての単一セットのスケジューリング・リストを共有し、タスクに対して、リスト内の順序が、ｍＮ−ＥＴ部分によって維持され、リストの各要素のコンテンツが、ｍＮ−ＴＴ部分によって維持される。ｍＮ−ＴＴマイクロ・カーネルは、ローカル・スケジューリングを要求することなく、直接各リストを調べる。ｍＮ−ＴＴ部分およびｍＮ−ＥＴ部分の処理機能はまた、ソフトウェア割込みを介して非同期の相互作用を生じる。実際には、各部分の一方が、システム処理機能を完了し、共有情報の状態を修正するとすぐに、もう一方の部分を対象として、その事実をそれに通知するソフトウェア割込みが生成される。次いで、送信部分が、その実行を継続して、残りのシステム・タスクまたはアプリケーション・タスクを並列に実行する。したがって、ｍＮ−ＥＴ部分は、動作可能であるタスクのリストを修正するとき、その事実をｍＮ−ＴＴ部分に通知し、次いでその実行を継続する。逆に言えば、ｍＮ−ＴＴ部分は、リストの更新を必要とするタスク状態の変更をｍＮ−ＥＴ部分に通知し、次いで、動作可能である次のタスクに制御権を直ちに渡すことにより、その実行を継続する。したがって、マイクロ・カーネルは、現在は存在していない非同期相互作用の方法を用いて、全体として分散される。
【００２１】
本発明の例示的な実施形態では、ｍＮ−ＴＴ部分は、ｍＮ−ＴＴコアとも呼ばれるコアＡ上にホスティングしてもよく、最大の計算能力を提供する。ｍＮ−ＥＴ部分は、ｍＮ−ＥＴコアとも呼ばれるコアＯ上に置いてもよく、割込みを実行することに最適化することができる。たとえば、Ｆｒｅｅｓｃａｌｅ  Ｓ１２ＸＥ（登録商標）アーキテクチャは、この分散によく適しており、ｍＮ−ＴＴ部分は、ＣＩＳＣコア上に配置され、ｍＮ−ＴＴ部分は、ＲＩＳＣコア上に配置される。したがって、アプリケーション・タスクは、ユーザ・モード（システムのアプリケーション処理機能または機能処理機能に対応する）およびスーパバイザ・モード（その論理的および時間的傾向の制御ならびにそのタスク間通信の管理を含むタスク専用のシステム処理機能に対応する）の両方で実行することができる。したがって、システム呼出しは、アプリケーション・タスクを実行するコア上に保持される。本発明により、同期メカニズムをブロックする必要もなく、ＥＴタスクとＴＴタスクの間の通信を実施することが可能になる。
【００２２】
先に指摘したように、本出願は、高速な入力／出力にリンクした複数の時間ペース調整されたタスクおよび特定の処理機能を、効果的すなわち安全で決定論的な方式で実行することを可能にする情報処理システムについて記載している。本発明は、コアＡおよびコアＯ上での、カーネルの様々な低レベル機能の効果的な分散に基づいている。本発明によるこの効果的な分散を規定するために、本発明の例示的な実施形態におけるカーネル内の２つの異なる部分が区別されている。すなわち、以下の２つである。
・  タイマによるペース調整および各タスク間の通信を管理するための、汎用層でもよいシステム層。このとき、システム層は、タスクの実行のタイマによるペース調整の記述を含み、またタスク間の通信を実施することを可能にする。
・  処理リソースの割当て、例外の管理、およびリアルタイムのタイムスタンプを管理する層であるマイクロ・カーネル。
たとえば、タイマは、水晶クロックによってペース調整されて、コアＡによるリアルタイム・タスクの実行をトリガしてもよい。コアＡは、ＴＴアイランドのリアルタイム・タスクの実行専用であるが、やはり、マイクロ・カーネルのｍＮ−ＴＴ部分の機能を実施する。コアＯは、ＥＴアイランドの割込み状態の処理機能の実行専用であるが、やはり、計算コアに処理機能を割り当てる順序の制御に関連するマイクロ・カーネルのｍＮ−ＥＴ部分の機能を実施する。マイクロ・カーネルのｍＮ−ＥＴ部分はまた、ｍＮ−ＴＴ部分において、割当て時間の監視に関連するマイクロ・カーネルの各機能をトリガする。これは、本発明の重要な原理の１つ、すなわち、アプリケーションのリアルタイム・タスクがコアＡを使用する方式を決定し監視するためにコアＯを使用することである。本発明は、本発明の例示的な実施形態におけるタスク（動作可能であるタスク、アイドル状態にあるタスク、およびエラー状態にあるタスク）のリストの更新にリンクしたシステム動作からコアＡを解放することにより、ならびに、動作可能であるタスクからの計算コアの割当ての選択にリンクしたシステム動作からコアＡを解放することにより、性能を改善することを可能にする。本発明は、無閉塞方式でタスクの割当てを実施するシステム動作を、両方のコアにわたって分散することを可能にする。
【００２３】
本発明の例示的な実施形態では、コアＡ上のマイクロ・カーネルのｍＮ−ＴＴ部分は、コアＡ上のタスクの切替えの管理に関与している。本発明の例示的な実施形態はまた、たとえば、有効な実行時間および残っている割当て（割当てとは、関係するタスクを実行するために予約された実行時間の上限である）に関して、タスクの実行コンテキストの内容を更新することに関する。本発明の例示的な実施形態はまた、たとえば、コンパイルには知られている最早開始時刻またはタイムアウトによって、タイマを管理するコアＯからの割込みへのタスクの実行をトリガすることに関する。こうしたタスクは、そのアプリケーション処理機能の終わりに近づくと、いわゆる「ソフトウェア」割込みによって、コアＡ上のｍＮ−ＴＴマイクロ・カーネルに制御権を渡して、可能な限りそのタイムアウトを遅らせるか、その次の起動時刻を調整する。
【００２４】
本発明の例示的な実施形態では、有利には、マイクロ・カーネルのｍＮ−ＥＴ部分が、タスク・コンテキストの更新を考慮すること、したがってタスクの以下のリスト、すなわち、動作可能であるタスクのリスト、アイドル状態にあるタスクのリスト、およびエラー状態にあるタスクのリストの順序付けに関与している。したがって、マイクロ・カーネルのｍＮ−ＴＴ部分は、有利には、動作可能であるタスクのリスト内のタスクの順序でそのＣＰＵ（中央処理装置）を許可し、各タスクも有効な実行時間を計算することができる。マイクロ・カーネルのｍＮ−ＥＴ部分はまた、現時刻を維持することに関与してもよく、タスクを起動するための時間ペース調整システムに有用である。これはまた、計算コアへの有効な実行時間制御をアクティブにしてもよい。これはまた、入力／出力の割込み状態のタスクの実行をトリガしてもよい。コアＯ上のカーネルの部分がまた、それらの結果にタイムスタンプを押して、それらの結果をコアＡのアプリケーション・タスクにとって利用可能にしてもよい。
【００２５】
図１には、ＴＴアイランドにおけるアプリケーション・タスクＡ１およびＡ２の実行中の、本発明によるコアＯおよびコアＡ上のマイクロ・カーネル（μカーネル）の動作の例示的な分散が示してある。図１に示したように、マイクロ・カーネルの実行は、タイマ（タイマＩＴ）から生じる割込み（ＩＴ）の発生に応じてトリガすることができ、タスクの起動に対応する。マイクロ・カーネルの実行はまた、ソフトウェア割込み（ソフトウェアＩＴ）の発生に応じてトリガすることができる。最後に、マイクロ・カーネルの実行は、高速入力／出力（Ｉ／Ｏ  ＩＴ）にリンクした割込みの発生に応じてトリガすることができる。マイクロ・カーネルの実行は両方のコアにわたって分散されるので、タイマ割込みおよび入力／出力割込みの後のマイクロ・カーネル内での入力は、コアＯ上に直接実行される。以下で詳細に述べるように、ソフトウェア割込みの後のマイクロ・カーネル内での入力は、タスクが実行されるコアＡとコアＯの間で分散される。本発明によるマイクロ・カーネルのパーティショニングから得られる１つの主な利益は、それにより、コアＡがタスクの実行を予想できるようになることである。実際には、タイマ割込みが発生する前に第１のタスクがその処理を終えているとき、このことは、割り当てられているが消費されていない時間を、その時間パラメータに従って動作可能である他のタスクが利用可能であることを意味する。次いで、これにより、第１のタスクに割り当てられた残りの処理時間のすべてが、動作可能である他のタスクを実行することにより、消費されることになる。これはまた、（コアＯ上のｍＮ−ＴＴ部分によって実行される）タスクの新規スケジューリングの計算を待つこと、および閉塞方式で、この動作が完了するのを待つことの両方を回避する。各タスクの終了は、状態の変化に対応し、実行リストの再スケジューリングを必要とするので、この状態変化を通知するために、２つのコアを調整するいくつかの方法がある。第１の方法は、この場合、実行され終了されたすべてのタスクの状態の変化をすべて処理することに等しい、タイマ割込みの発生を待つことである。第２の方法は、ｍＮ−ＥＴマイクロ・カーネル内に関連する追加の入力を、マイクロ・カーネルのｍＮ−ＴＴ部分から生じる割込みによってトリガされて有することである。これは、次のタイマ割込みを禁止し、スケジューリング・リストの更新を予想する効果を有する。以下の詳細説明で維持されるのが、状態通知調整法の第１の変更である。本発明の例示的な実施形態では、タスクは常に、その２つの時刻期限の間で、その時間割当てに従って良好に実行されることに留意されたい。
【００２６】
本発明の例示的な実施形態では、マイクロ・カーネルのｍＮ−ＥＴ部分が、タイマからの割込みの発生に応じて非同期に実行されるので、コアＡ上のマイクロ・カーネルのｍＮ−ＴＴ部分における追加入力が、有利には、考慮すべきタスクのリストにおける変化、または実行すべき割当て制御を通知することを可能にする。次いで、割当てによる有効な実行時間に関する制御は、ｍＮ−ＴＴマイクロ・カーネルに部分的に委譲されているので、この場合、マイクロ・カーネルのｍＮ−ＴＴ部分における関連する追加入力が、マイクロ・カーネルのｍＮ−ＴＴ部分から生じる割込みによってトリガされて、有効な実行時間に関する制御の結果をそれに通知することが必要である。他の実施形態では、コアＡ上の割当て測定値とコアＯ上の割当て測定値との差を管理することを避けるために、割当て制御のための割込みを、コアＡによって完全に管理することができる。
【００２７】
以上述べてきた原理に続いて、有効な実行時間の制御動作に関して２つのコアを調整するいくつかの方法がある。第１の方法は、単一の割込みラウンド・トリップを２つのコア間の適位置に置くことにある。すなわち、タイマが、マイクロ・カーネルのｍＮ−ＥＴ部分に関する割当て制御をトリガし、次にそれが、コアＡへの割込みをトリガし、次いで、制御が実行されると、第２の割込みがｍＮ−ＴＴマイクロ・カーネルによってトリガされて、コアＯに向かう。これは、ハードウェア・リソースを節約するという利点を有し、タイマは、タスクの起動と割当ての制御の両方を管理することができる。ラウンド・トリップのない第２の方法を定義することができる。すなわち、今度はタイマが、ｍＮ−ＴＴマイクロ・カーネルに宛てた制御を開始し、割当て計算が完了すると、コアＯに向けての割込みをトリガして、状態の変化を通知する。この方法を使用する場合、割込みの総合的な数は低減するが、たとえば、中間の割込みが管理されることになるとき、切替え回数に関しては犠牲が大きいことが分かる。以下の詳細説明で維持されてきたのは、割当て制御を調整するための第１の方法である。
【００２８】
本発明の例示的な実施形態では、したがって、ｎａｔＩｎｔと呼ばれるマイクロ・カーネルの状態変数が、次に予期される割込みの特徴を知るためにマイクロ・カーネルのｍＮ−ＥＴ部分の処理機能すべての出力に系統的に配置される。これは、ｍＮ−ＥＴマイクロ・カーネル特有である。たとえば、ｎａｔＩｎｔが０のとき、これは、予期される割込みがコアＡから生じる割込みであることを意味する。コアＯからの関連する処理機能は、有利には、動作可能であるタスク、アイドル状態にあるタスク、およびエラー状態にあるタスクのリスト、ならびに次のタイマ割込み作動の更新を含む。たとえば、ｎａｔＩｎｔが１のとき、これは、予期される割込みが、アクティブにされたタスクの有効な実行時間を制御するためのタイマ割込みであることを意味する。ｍＮ−ＥＴマイクロ・カーネルに関連する処理機能は、効果的な制御のためにコアＡへの割込みをトリガすることを含む。たとえば、ｎａｔｉｎｔが２のとき、これは、予期される割込みが、アイドル状態にあるタスクを起動するためのタイマ割込みであることを意味する。ｍＮ−ＥＴマイクロ・カーネルに関連する処理機能は、有利には、動作可能であるタスク、アイドル状態にあるタスク、およびエラー状態にあるタスクのリスト、コアＡへの割込みのトリガ、ならびに次のタイマ割込み作動の更新を含んでもよい。
【００２９】
本発明の例示的な実施形態では、したがって、コアＯからコアＡへのあらゆる割込みがトリガされるより前に、ｎａｔＡｌｅｒｔと呼ばれるマイクロ・カーネルの状態変数が配置される。この状態変数は、マイクロ・カーネルのｍＮ−ＥＴ部分によって更新され、マイクロ・カーネルのｍＮ−ＴＴ部分によって調べられる。たとえば、ｎａｔＡｌｅｒｔが０のとき、これは、コアＡからの割込みがタスクの起動に対応することを意味する。マイクロ・カーネルのｍＮ−ＴＴ部分に関連する処理機能は、新規リストを考慮に入れることを含む。たとえば、ＮａｔＡｌｅｒｔが１のとき、これは、コアＯから生じる割込みが、有効な実行時間の制御に対応することを意味する。有利には、コアＡ上の関連する処理機能は、アクティブにされた有効な実行時間の制御、次いでタスクの状態の位置決め、次いで計算コアからコアＯへの割込みのトリガを含んでもよい。図１は、コアＡおよびＯによって実行される並列処理機能を明示する。
【００３０】
図２には、コアＯによって処理された、タイマから生じる割込みの、本発明による一例が示してある。この割込みは、有利には、ブロック２０で示すように、関連するルーチンの各終了時点で、マイクロ・カーネルのｍＮ−ＥＴ部分によって実施してもよい。したがって、この割込みにより、ブロック２１で示すように、コアＡ上の処理機能の時間的傾向を監視することが可能になる。この場合、タイマ割込みは、タスクのタイマによる起動（「ＴＴ起動」）か、またはアクティブにされたタスクの時間制約条件が、たとえば割当てもしくはタイムアウトとして、観察されるように制御することかのいずれかに対応する。
【００３１】
タイムアウトもしくは割当てとしての起動時刻または時間制約条件は、タイマ・ペース調整システムの時間で表される。それらは、特定数のビット、たとえば３２ビットで符号化される。タイマで時間制約条件の直接表現が可能でない場合、すなわち、作動させるべき次の割込みが、ブロック２４で示すように、タイマの容量よりもその値が大きい時間制約条件に対応するとき、マイクロ・カーネルは、タイマ・ペース調整システムの時間の、タイマの時間基準へのコピーを管理することに関与してもよい。この場合は、マイクロ・カーネルのｍＮ−ＥＴ部分が、ブロック２３で示すように、中間の割込みを管理して、最新の割込みが発生する前に時間をカウント・ダウンするが、この割込みは、関係する時間制約条件の最終の割込みに対応する。最終の割込みにより、動作可能であるタスクのリストおよびアイドル状態にあるタスクのリストを更新するための処理機能に至り、次いで、ブロック２２で示すように、コアＡでの割込みのトリガに至って、ｎａｔｉｎｔの値（１または２）に従って、マイクロ・カーネルがアクティブにされた時間イベントを考慮に入れる。
【００３２】
ｍＮ−ＥＴマイクロ・カーネルは、本発明の例示的な実施形態でのタイマ割込みマネージャであるため、コアＡのタスクへの割当てをスケジューリングし、制御することに関与している。したがって、動作可能であるコンテキストのリストが更新されるとき、または割当て制御の割込みが生成されるとき、そのことが、ソフトウェア割込みを使用してコアＡに割り込み、ｎａｔＡｌｅｒｔにより、その介入の性質がコアＡに指示される。次いで、マイクロ・カーネルのｍＮ−ＴＴ部分は、有利には、アクティブなタスクの更新および割当て制御を実行し、次いで、場合によっては、図３のブロック３３で示すように、動作可能である新規タスクを確認し、その実行コンテキストをローディングすることにより、コンテキスト切替えを実行する。次いで、ブロック２５で示すように、割当て制御の割込みの終了がｍＮ−ＴＴマイクロ・カーネルによって処理されるとき、ペース調整に関連する次の割込みが作動される（ブロック２４）。図２およびそれに続く各図では、頭辞語「ＲＴＩ」は、「割込みから戻る（ＲｅＴｕｒｎ  ｆｒｏｍ  Ｉｎｔｅｒｒｕｐｔ）」命令を表している。
【００３３】
図３のブロック３０および３１で示すように、本発明の例示的な実施形態では、割当て制御要求に関するときには、ｍＮ−ＥＴマイクロ・カーネルが、ｍＮ−ＴＴマイクロ・カーネルの一部分での割当て分析の結果を待つ。この待機は無閉塞であり、ｍＮ−ＥＴマイクロ・カーネルは、ブロック３２で示すように、ｍＮ−ＴＴマイクロ・カーネルが、次に、注意するための割込みをトリガすることにより、この処理機能の終了をｍＮ−ＥＴマイクロ・カーネルに通知するまで、その処理機能を継続する。そこから、図２にブロック２５およびブロック２４で示すように、次いで、マイクロ・カーネルのｍＮ−ＥＴ部分が、次のタイマ割込みを再度アクティブにしてもよい。これが、割当て制御用であろうと、タイマによる起動用であろうと（動作可能であるタスク、アイドル状態にあるタスク、またはエラー状態にあるタスクのリストの変化）、マイクロ・カーネルのｍＮ−ＴＴ部分は、動作可能である新規タスクを確認し、その実行コンテキストをロードする（ブロック３３）。
【００３４】
図４に示すように、ｍＮ−ＥＴマイクロ・カーネルは、有利には、入力／出力割込みのマネージャを実装する。次いで、それが、入力／出力割込みに関連するルーチンの起動に関与する。このルーチンは、ブロック４０で示すように、割込みの発生を制御するための一般的な初期部分と、ブロック４１で示すように、生成され、この入力／出力にリンクしている結果が、コアにより、コアＡ上のタスクに利用可能にできることを通知する実現可能な方法を含む特定のアプリケーション処理部分とを含んでもよい。たとえば、それを、有利にはたとえば２つのコアの間の共有メモリ領域内に置いてもよく、それはまた、対話するための１組の特定の割込みを共有してもよい。割込みの発生を制御するための方策は、ターゲットになる産業領域および導入されるモニタリングのタイプに依存する。たとえば、この方策は、許可された最大数の入力／出力割込み、または２つの入力／出力割込みの間の許可された最小時間もしくは最大時間を利用してもよい。これらの基準が守られない場合には、制御はまた、関連する「障害」管理方策を指定しなければならない。この方策はまた、様々な種類の方策でよく、場合によっては、この入力／出力用の管理モジュールをゼロにリセットすることから、その動作を一時的または決定的に禁止することまであり得る。生成されたデータは、ｍＮ−ＥＴ部分のシステム機能への呼出しにより、アプリケーション処理機能内のカーネルによって利用可能になる。この機能の目的は、結果にタイムスタンプを押し、コアＡ側のカーネルが利用可能なバッファ内のその位置を通知するインデックスを、このアセンブリに関連付けることである。バッファは、予期される入力／出力割込みの発生、および関連するアプリケーションのリアルタイム・タスクによるこれらデータの使用に従って、そのサイズが決められる。カーネルによって生成される結果のタイムスタンプは、タイマ割込みを介した現時刻のメンテナンスに対して、ごく小さくなければならないことに留意されたい。
【００３５】
図５に示すように、タスクから生じるソフトウェア割込みがトリガされて、システム呼出し、たとえば、ノードを対象とした実行グラフの到達を通知する。本発明の例示的な実施形態では、次いで、ブロック５０で示すように、ｍＮ−ＴＴマイクロ・カーネルが、実行コンテキストに修正を加え、ブロック５１で示すように、呼び出すタスクのシステム層の実行を可能にする。システム層は、処理されている間、タスクの時間制約条件を、その実行グラフに従って修正するように要求されることがある。次いで、この動作により、ブロック５２で示すように、システム層が、消費される割当ての管理を実行し、次いで必要ならば、ブロック５３で示すように、ｍＮ−ＴＴマイクロ・カーネルが、コアＡ上のタスク切替えを実行するようになる。機能は、通信領域での状態変数、およびソース入力に関連するインディケータを設定し、次いで、引き数と、実行されていたタスクとの関連での計算コアの占有時刻および解放時刻とを転送してもよい。次いで、動作可能である新規タスクをアクティブにするために、切替えモジュールへの呼出しが生じることがある。タスクがＣＰＵを解放する時刻すなわち前記タスクがＣＰＵから取り除かれる時刻と、前記タスクがＣＰＵに与えられた時刻との差を計算することにより、消費されるＣＰＵ割当てが評価される。この計算は、マイクロ・カーネルのｍＮ−ＴＴ部分によって提供される情報に基づいて、ｍＮ−ＥＴマイクロ・カーネルによって実行される。実際には、前記タスクの状態の変化に至らない、したがってアクティブにできる状態のままのタスクを強制排除して、有利には、タスクのコンテキスト内に含まれる、関連する消費済み割当て情報を計算コアによって更新してもよい。
【００３６】
同期するために、マイクロ・カーネルの２つの部分が、たとえば以下の表１で定義したようなデータを共有する。しかし、１つのデータに対しては、単一のライタしか存在しない。
【００３７】
【表１】
0005688591.tif 000002
【００３８】
タスク実行コンテキストの構造は、以下の表２の一例として定義されるようなフィールドを使用する。これらのフィールドの内容は、単一のライタによって更新され、これは、ｍＮ−ＥＴマイクロ・カーネルでもｍＮ−ＴＴマイクロ・カーネルでもよい。本発明の例示的な実施形態では、ｍＮ−ＴＴマイクロ・カーネルは、有利には、動作可能であるアクティブ化可能なタスクが、アイドル状態またはエラー状態に変化するかどうかを特に示す「状態」変数を更新することに留意されたい。マイクロ・カーネルのｍＮ−ＥＴ部分は、タスクのリストが更新されるときに、それをアクティブ化可能な状態に戻すことが可能である唯一のものである。
【００３９】
【表２】
0005688591.tif 000003
【００４０】
本発明の例示的な実施形態では、ｃｏｎｔｅｘＰｒｅｔリストは、読取りモードでｍＮ−ＴＴマイクロ・カーネルによってアクセスされ、ｍＮ−ＥＴマイクロ・カーネルによって維持される。すなわち、読取りモードおよび書込みモードでアクセスされる。特に、ｍＮ−ＴＴマイクロ・カーネルが、以下のようにｃｏｎｔｅｘＰｒｅｔリストを読み取る。
−  割当を制御するため、または起動するため、コアＯから生じる割込みの後に。割当て制御については、ｃｏｎｔｅｘＰｒｅｔリストのヘッドが、現在実行中のタスクと比較されて、割当てを超えたかどうか判定する。起動については、ｃｏｎｔｅｘＰｒｅｔリストのヘッドがアクセスされて、それを実行すべき新規タスクにされる。
−  システム層からのソフトウェア割込みを介してシステム入力において、時間制約条件を修正するために。次いで、現在実行中のタスクの次のポインタのみが、実行を継続するために読み取られる。
【００４１】
ｍＮ−ＥＴマイクロ・カーネル側では、まずＣの後続の１つのコンテキスト（Ｄと等しくなる）を修正することにより、次いで、Ｂの後続の１つのコンテキスト（Ｃと等しくなる）を修正することにより、２つのコンテキストＢとＤの間にコンテキストＣの挿入が行われる。
【００４２】
本発明の例示的な実施形態では、もはやアクティブ化可能ではないコンテキストを考慮することにより、コンテキストの抽出を実行してもよい。したがって、制御は、第１のアクティブ化可能なタスク上のｃｏｎｔｅｘＰｒｅｔを使用する（後者は除外される）。抽出はコアＡには見えないが、これは、コンテキストがもはやアクティブ化可能でない場合、このことが、コアＡがすでに抽出を実行したことを意味し、したがって、コアＡ上で現在実行中のタスクが、第１のアクティブ化可能なタスクまたはその後続のタスクのうちの１つに等しいからである。したがって、それは、もはや元には戻らない。
【００４３】
ＤＡＴＥＴＡＲＤ状態の管理に関しては、この動作の目的が、その実行中にコンテキストの制限時刻を遅らせることであることに留意されたい。この時間制限の延長が生じると、ｍＮ−ＥＴマイクロ・カーネルが、このコンテキストの次のものに移る。次に、この制限時刻がこの延長にもかかわらず依然として次のもののアップストリームにある場合、タスクは、ｎａｔＡｌｅｒｔが０に設定された状態でコアＯから生じる次の割込みまで再実行可能にはならない。
【００４４】
先に説明したように、入力／出力割込みを管理するためのアプリケーション・ルーチンの結果をコアＯ上で利用可能にするために、バッファが、計算タスクのシステム層に読取りモードで利用可能になる。この表において索引付けすることにより、タスクによって戻されるまたは戻されない入力／出力結果をコアＡ側でのシステム層が、維持し識別することが可能になる。
【００４５】
図６には、２つの並列コア用の本発明による例示的な動作状況が示してあり、頭辞語ＣＳは「システム層」を表し、ａｇＭＮは「アプリケーション・タスク・モード（エージェント−ａｇ）」からマイクロ・カーネル（ＭＮ）への変化」を表し、ｃｓＭＮは「システム・タスク・モード（システム層−ｃｓ）からマイクロ・カーネル（ＭＮ）への変化」を表す。
ｔ０の時点において、
−  タスクＡＧ１およびＡＧ２が、動作可能なタスクのリストに存在する。
−  タスクＡＧ１は、現在実行中のタスクであり、その割当てはｔ１の時点を超える。
−  次の最終割込みは、ｔ１の時点において、タスクＡＧ３用のタイマによる起動時刻である。
−  タスクＡＧ３は、アイドル状態にあるタスクのリストに存在する。
ｔ０の時点とｔ１の時点との間では、
−  ３つの中間割込みがＯ上に存在する。
−  タスクＡＧ１が、その割当てに達する前に、その基本的な動作を完了する。ｍＮ−ＴＴマイクロ・カーネルが、タスクＡＧ１用の割当てを、タスクＡＧ２に切り替えて実行する。
ｔ１の時点において、
−  タイマによる割込みが到達して、タスクＡＧ３を起動する。
−  ｍＮ−ＥＴマイクロ・カーネルは、アイドル状態にあるタスクのリスト内にタスクＡＧ１を置き、動作可能なタスクのリストの先頭にタスクＡＧ３を置き、ｔ２の時点に対応するタスクＡＧ３割当てにタイマを作動させ、ｎａｔＡｌｅｒｔを０に配置し、ｍＮ−ＴＴマイクロ・カーネルへの割込みにより、考慮に入れるべきタスクの新規リストを通知する。次いで、ｍＮ−ＴＴマイクロ・カーネルは、タスクＡＧ２に関する割当て制御を実行し、次いで、制御権をタスクＡＧ３に渡す。
ｔ１の時点とｔ２の時点との間では、
−  １つの中間割込みがＯ上に存在する。
−  タスクＡＧ３が、その割当てに達する前に、その基本的な動作を完了する。ｍＮ−ＴＴマイクロ・カーネルが、タスクＡＧ３用の割当てを、タスクＡＧ２に切り替え、次いでその実行を継続する。
ｔ２の時点において、
−  タスクＡＧ３用の割当て制御のために、タイマによる割込みが到達する。
−  ｍＮ−ＥＴマイクロ・カーネルは、ｎａｔＡｌｅｒｔを１に配置し、ｍＮ−ＴＴマイクロ・カーネルへの割込みにより、実行すべき割当て制御を通知する。
−  コアＡは、ｍＮ−ＥＴマイクロ・カーネルからの割込みを受信すると、マイクロ・カーネル・モードに移行し、割当て制御のために現在実行中のタスクのコンテキストの内容を修正し（タスクＡＧ３はその動作を完了した）、ｍＮ−ＥＴマイクロ・カーネルに割込みを送信して、更新を通知し、次いで唯一の動作可能でアクティブ化可能なタスク、すなわちタスクＡＧ２に制御権を戻す。
−  ｍＮ−ＥＴマイクロ・カーネルは、アイドル状態にあるタスクのリスト内にタスクＡＧ３を配置し、ｔ３の時点でタスクＡＧ３（ＡＧ２に対して残っている割当ての終点よりも近い）を起動するためにタイマを作動させる。
ｔ３の時点において、
−  タイマ割込みが到達して、タスクＡＧ３を起動する。
−  ｍＮ−ＥＴマイクロ・カーネルは、動作可能なタスクのリスト内にタスクＡＧ３を置き（タスクＡＧ２の後に）、ｔ４の時点に対応するタスクＡＧ２用に許可された残りの割当てにタイマを作動させ、ｎａｔＡｌｅｒｔを０に配置し、ｍＮ−ＴＴマイクロ・カーネルに割込みを送信して、考慮に入れるべきタスクの新規リストを通知する。次いで、ｍＮ−ＴＴマイクロ・カーネルは、タスクＡＧ２に関する割当て制御を実行し、次いで、制御権をタスクＡＧ３に渡す。
ｔ３の時点とｔ４の時点との間では、
−  １つの中間割込みがコアＯ上に存在する。
ｔ４の時点において、
−  タスクＡＧ２用の割当て制御のために、タイマ割込みが到達する。
−  ｍＮ−ＥＴマイクロ・カーネルは、ｎａｔＡｌｅｒｔを１に配置し、ｍＮ−ＴＴマイクロ・カーネルに割込みを送信して、実行すべき割当て制御を通知する。
−  コアＡは、コアＯからの割込みを受信すると、マイクロ・カーネル・モードに移行し、現在実行中のタスクのコンテキストの内容を修正し（タスクＡＧ２はその割当てをすでに超えている）、ｍＮ−ＥＴマイクロ・カーネルに割込みを送信して、更新を通知し、次いで唯一の動作可能でアクティブ化可能なタスク、すなわちタスクＡＧ３に制御権を渡す。
−  ｍＮ−ＥＴマイクロ・カーネルは、エラー状態にあるタスクのリスト内にタスクＡＧ２を配置し、ｔ５の時点でタスクＡＧ１（ＡＧ３に対して残っている割当ての終点よりも近い）を起動するために、タイマを作動させる。
ｔ４の時点とｔ５の時点との間では、
−  タスクＡＧ３が、その割当てに達する前に、その基本的な動作を完了する。コアＡのマイクロ・カーネルが、アイドルモードに移行する。
ｔ５の時点において、
−  タイマ割込みが到達して、タスクＡＧ１を起動する。
−  ｍＮ−ＥＴマイクロ・カーネルは、アイドル状態にあるタスクのリスト内にタスクＡＧ３を、また動作可能なタスクのリストにタスクＡＧ１を置き、タスクＡＧ１に対する割当てにタイマを作動させ、ｎａｔＡｌｅｒｔを０に配置し、ｍＮ−ＴＴマイクロ・カーネルへの割込みを送信して、考慮に入れるべきタスクの新規リストを通知する。
【００４６】
タスク・スケジューリング、時間管理、および割込み状態の入力／出力の管理であるカーネル機能のサブセットを制御専用のコアに移すことにより、前述の本発明は、マルチコア・ハードウェア・アーキテクチャの効果的な並列性を、完全に利用し、最大限活用することを可能にする。本発明によって提案されるｍＮ−ＴＴおよびｍＮ−ＥＴの２つの部分においてマイクロ・カーネルの機能を非対称に分散することにより、時間ペース調整された計算タスクのリアルタイムの実行、および入力／出力割込みによって条件付けられたルーチンの実行を確実にすることが可能になる。実際には、本発明によって提案されるマイクロ・カーネルの機能を非対称に分散することにより、コアＯ上で実行されるＥＴアイランドと、コアＡ上で実行される１つまたは複数のＴＴアイランドとの間の空間的および時間的な分離が確実になる。したがって、割込み状態の処理機能の管理は、コアＡに帰するとは見なされず、特に入力／出力処理機能は、いかなる状況でも、計算タスクによって達成することのできる性能レベルを低下させることはなく、逆の場合も同じである。メモリの観点からすると、メモリ配置、および場合によっては、メモリ保護は、コアＯが、計算タスクのメモリ領域をアクセスするのを防止する。コアＯ上での入力／出力割込み発生に関する制御、および、１つまたは複数の計算コア上での有効実行時間に関する制御により、割当てを監視し、時間に関連するあらゆる例外挙動を検出することが可能になる。
【００４７】
前述の本発明の他の主な利点は、たとえば自動車分野での用途のための完全な埋込み式リアルタイム・システムの、効果的で制御された安全な実行を可能にすることである。実際には、本発明により、埋込み式ハードウェア・アーキテクチャを最大限活用し、タスクの数またはプロセッサ毎の機能の数に関して非常に高い集積度を可能にすることができる。関連するマルチタスク実行法は、コアの調整を組み込むので、本発明はまた、開発者にとってトランスペアレントなやり方で、マルチコア・アーキテクチャ、一群のタスクを含むアプリケーション、および入力／出力割込みによって条件づけられたルーチン上で実行することを可能にする。インターフェースと、コア上のその非対称なパーティショニングを管理するように規定されたカーネル内の共有要素とにより、実際、もはや開発者がタスクの位置またはルーチンの位置にかかわらなければならないことはない。
【図１】
0005688591.tif 000004
【図２】
0005688591.tif 000005
【図３】
0005688591.tif 000006
【図４】
0005688591.tif 000007
【図５】
0005688591.tif 000008
【図６】
0005688591.tif 000009