(57)【要約】【課題】マスタ・プロセッサ（以下、ＭＰ）におけるタスクの実行優先度に則してスレーブ・プロセッサ（以下、ＳＰ）を動作させ、かつ、組み込みシステムの装置規模及び装置コストの抑制に寄与可能な情報処理システムを提供する。【解決手段】ＭＰ１１にて実行される要求元タスクからＳＰ２１に対する処理要求を含む通信データをＳＰ２１に送信する。通信データは、要求元タスクのＭＰ１１における実行優先度に関連付けられた優先度情報を含む。ＳＰ２１は、通信データの受信に応じて、通信処理タスクを起床する。通信処理タスクは、複数の要求元タスクからの複数の通信データの受信に応じて共通的に起床される。通信処理タスクは、処理要求にて要求された処理を実行するための子タスクを、要求元タスクの実行優先度に対応する実行優先度を割り当てて生成する。ＳＰ２１は、各タスクの実行優先度に基づくタスクスケジューリングに従って、子タスクを実行する。【選択図】図１
2009265963.tif 000002
【特許請求の範囲】
【請求項１】
マスタ・プロセッサ及びスレーブ・プロセッサを備え、
前記マスタ・プロセッサは、前記スレーブ・プロセッサに対する処理要求を行う複数の要求元タスクを、各タスクの実行優先度に基づくタスクスケジューリングにより並行して実行することが可能なマルチタスク環境を備え、
前記スレーブ・プロセッサは、前記マスタ・プロセッサとの間の通信を制御する通信処理タスクと、前記処理要求にて要求された処理を実行するために前記通信処理用タスクによって生成される子タスクとを、各タスクの実行優先度に基づくタスクスケジューリングにより並行して実行することが可能なマルチタスク環境を備え、
前記処理要求は、前記要求元タスクの前記マスタ・プロセッサにおける実行優先度に関連付けられた優先度情報を含み、
前記スレーブ・プロセッサは、互いに異なる複数の前記要求元タスクからなされる複数の前記処理要求に応答して共通の前記通信処理タスクを起床し、
前記通信処理タスクは、前記処理要求に含まれる前記優先度情報に基づいて、前記要求元タスクの実行優先度に対応する実行優先度が割り当てられた前記子タスクを生成する、
情報処理システム。
【請求項２】
前記情報処理システムは、
前記マスタ・プロセッサと前記スレーブ・プロセッサの間を接続する割り込み信号線と、
前記マスタ・プロセッサと前記スレーブ・プロセッサの間のプロセッサ間通信に使用される共有メモリとをさらに備え、
前記マスタ・プロセッサは、前記スレーブ・プロセッサへの処理要求に際して、前記優先度情報を含む通信データを前記共有メモリに書き込むとともに、前記割り込み信号線への割り込み信号の出力を行い、
前記スレーブ・プロセッサは、前記割り込み信号線を介して入力される前記割込み信号に応答して前記通信処理タスクを起床し、
前記通信処理タスクは、前記共有メモリに保存された前記通信データから前記優先度情報を取得する、
請求項１に記載の情報処理システム。
【請求項３】
前記通信処理タスクには前記子タスクに比べて高い実行優先度が付与され、前記通信処理タスクは、前記子タスクに優先して前記スレーブ・プロセッサで実行される、請求項１又は２に記載の情報処理システム。
【請求項４】
マスタ・プロセッサ及びスレーブ・プロセッサを備える情報処理システムにおけるタスクの実行制御方法であって、
前記マスタ・プロセッサにて実行される要求元タスクから前記スレーブ・プロセッサに対する処理要求を含む通信データを前記スレーブ・プロセッサに送信し、ここで、前記処理要求は、前記要求元タスクの前記マスタ・プロセッサにおける実行優先度に関連付けられた優先度情報を含み、
前記通信データの受信に応じて、前記スレーブ・プロセッサにて通信処理タスクを起床し、ここで、前記通信処理タスクは、互いに異なる複数の前記要求元タスクから送信される複数の通信データの受信に応じて共通的に起床されるタスクであって、
前記通信処理タスクが、前記通信データから取得された前記優先度情報に基づいて、前記処理要求にて要求された処理を実行するための子タスクを、前記要求元タスクの実行優先度に対応する実行優先度を割り当てて生成し、
前記子タスクを含む複数のタスクの各々の実行優先度に基づくタスクスケジューリングに従って、前記子タスクを前記スレーブ・プロセッサにて実行する、
タスクの実行制御方法。
【請求項５】
前記通信処理タスクには前記子タスクに比べて高い実行優先度が付与され、前記通信処理タスクは、前記子タスクに優先して前記スレーブ・プロセッサで実行される、請求項４に記載のタスクの実行制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサ構成を有する情報処理システムに関する。特に、一方のプロセッサで実行される複数のタスクからの処理要求に基づいて他方のプロセッサにて実行される処理の処理順序制御に関する。
【背景技術】
【０００２】
自動車、航空機等の輸送機械や、携帯電話機、交換機等の通信機器などに組み込まれ、機器制御、信号処理等を行うプロセッサシステムは組み込みシステムと呼ばれている。組み込みシステムは、処理時間の向上、リアルタイム性の確保、プログラムのソフトウェア部品化による生産性向上等を実現するため、一般的にマルチタスク環境を備えている。マルチタスク環境とは、タスクを定期的に切り替えて実行したり、イベントの発生に応じて実行するタスクを切り替えたりすることによって、複数のプログラムがあたかも並列実行されているような環境を意味する。ここで、タスクとは、マルチタスク環境で並列実行されるプログラム単位を意味する。このようなマルチタスク環境は、ＣＰＵ（Central Processing Unit）と、ＣＰＵで実行されるタスクのスケジューリングを担うＯＳ（Operating System）によって実現される。また、組み込みシステムは、単一プロセッサ構成に限られず、複数のプロセッサがマスタ・スレーブ型のプロセッサ間通信を行うマルチプロセッサ構成を有する場合もある。
【０００３】
ところで、特許文献１は、２つのＣＰＵを備える情報処理システムにおいて、２つのＣＰＵ間での処理要求の伝送のためにＣＰＵ間を情報連絡線で接続するとともに、処理要求の内容毎の優先度情報が記載された共通の優先度テーブルを２つのＣＰＵの各々に保持させる技術を開示している。例えば、優先度テーブルには、"障害処理要求"に最高優先度である優先度"１"が付与されていること、"コマンド実行要求"に優先度"２"が付与されていること等が記述される。このとき、一方の第１のＣＰＵから他方の第２のＣＰＵに対して"障害処理要求"がなされ、第２のＣＰＵから第１のＣＰＵに対して"コマンド実行要求"がなされた場合、第１及び第２のＣＰＵはそれぞれの優先度テーブルを参照して、"障害処理要求"が優先されることを認識する。これにより、第１のＣＰＵは、第２のＣＰＵからの"コマンド実行要求"を無視する。一方、第２のＣＰＵは、第１のＣＰＵからの"障害処理要求"を受け付けて障害処理を開始する。
【０００４】
一方、特許文献２及び３には、各々がマルチタスク環境を有する複数の計算機がネットワークを介して接続された分散処理システムが開示されている。例えば、特許文献２に開示された分散処理システムに含まれる各計算機は、タスク間通信のためのメッセージ送信機能を有している。メッセージ送信元タスクは、他の計算機で実行される他のタスクに処理を指示するための処理要求メッセージを送信する。このとき、処理要求メッセージには、メッセージ送信元タスクの優先度が含まれる。メッセージ受信側の計算機では、処理要求メッセージの宛先に指定されたメッセージ送信先タスクを実行待ち状態から実行可能状態に遷移させる。このとき、メッセージ送信先タスクの実行優先度は、処理要求メッセージ中に指定されている優先度に基づいて動的に設定される。これにより、メッセージ送信先タスクは、メッセージ送信元タスクの実行優先度に応じて新たに設定された実行優先度に基づいて、ＯＳにより再スケジューリングされる。つまり、特許文献２に開示された分散処理システムは、異なる計算機で実行されるタスクの間での実行優先度の受け渡しを可能とする。これにより、メッセージ送信先（つまり、処理要求先）タスクを実行する計算機において、メッセージ送信元（つまり、処理要求元）タスクの優先度に基づく効率の良いタスクスケジューリングを実現できる。
【特許文献１】特開昭６０−９５６７６号公報
【特許文献２】特開平６−３０１６５５号公報
【特許文献３】特開平１１−３１２０９３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
マスタ・プロセッサ及びスレーブ・プロセッサを有するマルチプロセッサ構成の組み込みシステムにおいて、マスタ・プロセッサがマルチタスク環境を備えている場合を考える。この場合、マスタ・プロセッサにて並列実行される複数のタスクが、スレーブ・プロセッサに対して並行して処理要求を行なうと、スレーブ・プロセッサの処理順序にマスタ・プロセッサにおけるタスク優先度が反映されないという問題がある。この問題点について図８を用いて具体的に説明する。
【０００６】
図８は、マルチタスク環境を有するマスタ・プロセッサにてタスクＡ〜Ｄが実行され、タスクＡ〜Ｄからスレーブ・プロセッサに対して処理要求が行なわれるタイミングを示す図である。なお、スレーブ・プロセッサにて実行される通信タスクは、マスタ・プロセッサからの複数の処理要求を受信要求の受信順序に従って逐次処理する。つまり、図８の通信タスクは、いわゆるＦＩＦＯ（First In First Out）方式によって複数の処理要求を調停する。このため、タスクＢ〜Ｄに比べて相対的に高い実行優先度が与えられたタスクＡから時刻Ｔ４に処理要求がなされた場合、タスクＡによる処理要求に応じた処理ＯＰ−Ａは、処理ＯＰ−Ｃ及びＯＰ−Ｄが完了するまで待たされる。ここで、処理ＯＰ−Ｃは、時刻Ｔ２にてタスクＣによりなされた処理要求に応じた処理であり、タスクＡによる処理要求の時点で既に実行中の処理である。また、処理ＯＰ−Ｄは、時刻Ｔ３にてタスクＤによりなされた処理要求に応じた処理であって、ＯＰ−Ａより前に実行待ち状態になった処理である。
【０００７】
このように、マルチプロセッサ構成の組み込みシステムでは、マスタ・プロセッサにおけるタスク優先度がスレーブ・プロセッサに反映されないこと、いわゆる優先度の逆転現象がしばしば発生し得る。これを避けるためには、組み込みソフトウェアの開発者は、マスタ・プロセッサ及びスレーブ・プロセッサの間でのプロセッサ間通信の仕組みを十分に理解して、設計、開発及びテストを行なう必要があるため、開発者の負担増大を招く。
【０００８】
なお、上述した特許文献１に開示された技術は、２つのＣＰＵ間の主従関係を無くし、２つのＣＰＵ間で相互に処理要求が行なわれる場合に、２つのＣＰＵから処理要求が同時に交差的になされたときの調停手段として有効である。しかしながら、特許文献１は、マルチタスク環境を想定していない。このため、特許文献１は、一方のＣＰＵで並列実行される複数のタスクから他方のＣＰＵに対して連続的に複数の処理要求が行なわれる場合に、他方のＣＰＵにて複数の処理要求に基づく処理をどのように実行するかについては、何ら開示していない。
【０００９】
また、特許文献２に開示された分散処理システムは、処理要求メッセージの送信先を処理要求先の各々のタスクとしている。このため、処理要求先のタスクは、処理要求の受信が行なわれる前に予め生成されて実行待ち状態におかれている。したがって、特許文献２に開示された技術は、生成済みタスクのコンテキストを保持するためにメモリ資源及びＯＳ資源を多く消費してしまうという問題がある。特許文献２が対象とする分散処理システム、つまり複数の計算機がネットワークを介して接続された計算機システムと比べて、組み込みシステムでは装置規模の制約や装置コストの制約等のためにメモリ資源及びＯＳ資源の制約が大きいという事情がある。したがって、特許文献２に開示された技術を組み込みシステムに転用することは困難である。
【課題を解決するための手段】
【００１０】
本発明の第１の態様にかかる情報処理システムは、マスタ・プロセッサ及びスレーブ・プロセッサを備える。前記マスタ・プロセッサは、前記スレーブ・プロセッサに対する処理要求を行う複数の要求元タスクを、各タスクの実行優先度に基づくタスクスケジューリングにより並行して実行することが可能なマルチタスク環境を備える。また、前記スレーブ・プロセッサは、前記マスタ・プロセッサとの間の通信を制御する通信処理タスクと、前記処理要求にて要求された処理を実行するために前記通信処理用タスクによって生成される子タスクとを、各タスクの実行優先度に基づくタスクスケジューリングにより並行して実行することが可能なマルチタスク環境を備える。ここで、前記処理要求は、前記要求元タスクの前記マスタ・プロセッサにおける実行優先度に関連付けられた優先度情報を含む。さらに、前記スレーブ・プロセッサは、互いに異なる複数の前記要求元タスクからなされる複数の前記処理要求に応答して共通の前記通信処理タスクを起床する。そして、前記処理要求の受信に応じて起床される前記通信処理タスクは、前記処理要求に含まれる前記優先度情報に基づいて、前記要求元タスクの実行優先度に対応する実行優先度が割り当てられた前記子タスクを生成する。
【００１１】
上述したように、本発明の第１の態様にかかる情報処理システムでは、マスタ・プロセッサからの処理要求に応じてスレーブ・プロセッサにて起床される通信処理タスクが、要求元タスクの実行優先度に準じた実行優先度が動的に割り当てられた子タスクを生成する。これにより、マスタ・プロセッサにおける要求元タスクの実行優先度をスレーブ・プロセッサ側の子タスクに継承させることができる。したがって、マスタ・プロセッサにおけるタスクの実行優先度に則してスレーブ・プロセッサを動作させることができる。
【００１２】
また、本発明の第１の態様にかかる情報処理システムでは、互いに異なる複数の要求元タスクからの複数の処理要求の受信処理のために、通信処理タスクを共通的に起床させる。そして、各処理要求に対応した子タスクは、通信処理タスクにより生成される。このため、本発明の第１の態様にかかる情報処理システムは、複数種類の処理要求に対応した子タスクをスレーブ・プロセッサにおいて予め生成しておく必要がない。したがって、特許文献２に開示された分散処理システムとは対照的に、本発明の第１の態様にかかる情報処理システムは、タスクのコンテキストを保持しておくためのメモリ資源及びＯＳ資源の浪費を回避することができ、組み込みシステムの装置規模及び装置コストの抑制に寄与することができる。
【発明の効果】
【００１３】
本発明により、マスタ・プロセッサにおけるタスクの実行優先度に則してスレーブ・プロセッサを動作させることができ、かつ、組み込みシステムの装置規模及び装置コストの抑制に寄与することが可能なマルチプロセッサ構成の情報処理システムを提供できる。
【発明を実施するための最良の形態】
【００１４】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
【００１５】
図１は、本実施の形態にかかる情報処理システム１の全体構成を示すブロック図である。情報処理システム１は、マスタ・プロセッサ１１及びスレーブ・プロセッサ２１を有する。マスタ・プロセッサ１１とスレーブ・プロセッサ２１との間は、割込み信号線３１及び３２により接続されている。割り込み信号線３１は、マスタ・プロセッサ１１からスレーブ・プロセッサ２１に割り込みを発生させるための割込み信号の伝送を行う。一方、割り込み信号線３２は、スレーブ・プロセッサ２１からマスタ・プロセッサ１１に割り込みを発生させるための割込み信号の転送を行う。
【００１６】
また、マスタ・プロセッサ１１及びスレーブ・プロセッサ２１は、共有メモリ３０にアクセス可能とされている。共有メモリ３０は、マスタ・プロセッサ１１及びスレーブ・プロセッサ２１で実行される各タスクのデータ格納領域として使用される。また、共有メモリ３０は、マスタ・プロセッサ１１及びスレーブ・プロセッサ２１の間のプロセッサ間通信に利用される。
【００１７】
専有メモリ１２は、マスタ・プロセッサ１１に読み出されて実行されるＯＳ１２０及びアプリケーションプログラム（以下、ＡＰと呼ぶ）１２１の格納領域、並びに、これらのプログラムによって使用されるデータの格納領域として使用される。
【００１８】
ＯＳ１２０は、マスタ・プロセッサ１１の制御を担うプログラムである。ＯＳ１２０は、マスタ・プロセッサ１１、専有メモリ１２及び共有メモリ３０等のハードウェア資源を利用して、マスタ・プロセッサ１１におけるマルチタスク環境を実現するためのタスク管理を実行する。ここで、タスク管理は、タスクの状態管理、実行可能な状態にあるタスクの実行順序の決定（つまり、タスクスケジューリング）、並びにコンテキストの保存及び切り替えによるタスクディスパッチを含む。
【００１９】
ＡＰ１２１は、ユーザ要求を達成するためのプログラムである。情報処理システム１が組み込み機器に搭載される場合であれば、ＡＰ１２１は、組み込み機器の機能を実現するためのプログラムである。ＡＰ１２１は、使用するハードウェア資源や時間制約の違い等に基づいて分割された複数のタスクを含む。ＡＰ１２１を構成する複数のタスクの各々は、マスタ・プロセッサ１１とＯＳ１２０によって提供されるマルチタスク環境上で実行される。なお、図１では、簡略化のために１つのＡＰ１２１のみを示しているが、専有メモリ１２には、多様な機能を実現するための複数のＡＰが格納されてもよいことは勿論である。
【００２０】
一方、専有メモリ２２は、スレーブ・プロセッサ２１に読み出されて実行されるＯＳ２２０及びＡＰ２２１の格納領域、並びに、これらのプログラムによって使用されるデータの格納領域として使用される。ＯＳ２２０は、スレーブ・プロセッサ２１におけるマルチタスク環境を実現するためのタスク管理を実行する。ＡＰ２２１は、ユーザ要求を達成するためのプログラムである。
【００２１】
なお、図１に示した構成は、一例に過ぎない。よって、ＯＳ１２０、ＡＰ１２１、ＯＳ２２０及びＡＰ２２１の格納場所、並びにこれらのプログラムのマスタ・プロセッサ１１又はスレーブ・プロセッサ２１への供給手順は適宜変更可能である。例えば、マスタ・プロセッサ１１のみがアクセス可能な専有メモリ１２に、スレーブ・プロセッサ２１用のＯＳ２２０を格納してもよい。この場合、マスタ・プロセッサ１１が、ＯＳ２２０を共有メモリ３０上にロードする処理を行い、スレーブ・プロセッサ２１は共有メモリ３０にロードされたＯＳ２２０を読み出して実行すればよい。
【００２２】
続いて以下では、マスタ・プロセッサ１１からスレーブ・プロセッサ２１への処理要求を行なう際の動作手順と、処理要求を受信したスレーブ・プロセッサ２１の動作手順について詳しく説明する。
【００２３】
図２は、マスタ・プロセッサ１１からスレーブ・プロセッサ２１への処理要求の手順を示すフローチャートである。以下では、マスタ・プロセッサ１１で実行され、スレーブ・プロセッサ２１に処理要求を行なうタスクを、「要求元タスク」と呼ぶ。ステップＳ１１では、スレーブ・プロセッサ２１への処理要求の送信可否が判定される。具体的には、共有メモリ３０の利用可能な空き領域が、プロセッサ間通信のために十分なサイズであるか、言い換えると、処理要求を含む通信データを保存可能なサイズであるかを判定すればよい。
【００２４】
スレーブ・プロセッサ２１への処理要求が可能と判定された場合（ステップＳ１１でＹＥＳ）、ステップＳ１２にて、プロセッサ間通信用のメモリ領域の確保が行われる。具体的には、プロセッサ間通信のために予め確保されたメモリ空間において、通信管理フラグをセットすればよい。通信管理フラグとは、プロセッサ間通信でやりとりされる通信データを保存する領域が使用中であるか否かを示すフラグ情報である。
【００２５】
ここで、通信管理フラグを含む通信データのデータ構造の具体例を図３に示す。図３に示す通信データ３３は、通信管理フラグ３３０、優先度情報３３１、データサイズ３３２、及び処理要求データ３３３を含む。上述したように、通信管理フラグ３３０は、プロセッサ間通信でやりとりされる通信データを保存する領域が使用中であるか否かを示すフラグ情報である。
【００２６】
優先度情報３３１は、マスタ・プロセッサ１１における要求元タスクの相対的な実行優先度をスレーブ・プロセッサ２１に伝達するための情報である。優先度情報で指定される具体的な値は、要求元タスクの実行優先度の値そのものでもよいし、要求元タスクの実行優先度に対応付けられた他の値でもよい。つまり、優先度情報３３１は、複数の要求元タスク間の相対的な実行優先順序をスレーブ・プロセッサ２１に伝達可能であればよい。
【００２７】
データサイズ３３２は、処理要求データ３３３のデータサイズを識別可能な値を示す。データサイズ３３２の具体的な値は、処理要求データ３３３のみのデータサイズでもよいし、通信データ３３のヘッダ部分（即ち通信管理フラグ３３０、優先度情報３３１、データサイズ３３２）を含む通信データ３３全体のデータサイズでもよい。
【００２８】
処理要求データ３３３は、スレーブ・プロセッサ２１による処理のために、マスタ・プロセッサ１１から引き渡されるデータである。
【００２９】
図２に戻り説明を続ける。ステップＳ１３では、要求元タスクが自身に設定された実行優先度を取得する。実行優先度の取得は、ＯＳに対するシステムコール（サービスコール）により行なえばよい。また、生成済みタスクの状態が保持されるマスタ・プロセッサ１１内のレジスタ（不図示）に対する要求元タスクのアクセスが許可されるならば、当該レジスタを参照して実行優先度を取得してもよい。
【００３０】
ステップＳ１４では、マスタ・プロセッサ１１が、スレーブ・プロセッサ２１先に設定済みの通信管理フラグ３３０を除く通信データ３３の残部、すなわち優先度情報３３１、データサイズ３３２及び処理要求データ３３３を共有メモリ３０に書き込む。
【００３１】
ステップＳ１５では、処理要求の発生をスレーブ・プロセッサ２１に伝達するために、マスタ・プロセッサ１１が、割り込み信号線３１に割り込み信号を出力する。
【００３２】
ステップＳ１６では、スレーブ・プロセッサ２１の処理完了まで待機する。要求元タスクは、いったん実行を中断して"待ち状態（ＷＡＴＩＮＧ状態）"に遷移し、後述するスレーブ・プロセッサ２１からの割り込み信号の受信に応じて"実行可能状態（ＲＥＡＤＹ状態）"、"実行状態（ＲＵＮ状態）"の順に遷移して、処理完了結果を示す通信データを確認すればよい。なお、スレーブ・プロセッサ２１からの割り込み発生に応じて要求元タスクの動作状態を"実行可能状態（ＲＥＡＤＹ状態）"に遷移させる処理は、割り込みの発生に応じて起動される割り込みハンドラによって容易に実現できる。また、要求元タスクは、スレーブ・プロセッサ２１の処理完了に際して共有メモリ３０に書き込まれる通信管理フラグを定期的に確認するポーリングを実行することによって、スレーブ・プロセッサ２１の処理完了を検知してもよい。
【００３３】
次に、スレーブ・プロセッサ２１による処理要求の受け付け動作手順と、処理要求で要求された処理の実行手順について説明する。図４は、マスタ・プロセッサ１１からの処理要求に伴う割り込み信号の受信に応じて起床される通信処理タスクの処理手順を示すフローチャートである。ここで、通信処理タスクの起床は、割り込み信号線３１を介した割り込み信号の受信に応じて起動される割込みハンドラによって行えばよい。具体的には、割込みハンドラが、"待ち状態（ＷＡＩＴ状態）"にある通信処理タスクに対して処理要求の発生を通知し、通信処理タスクを"実行可能状態（ＲＥＡＤＹ状態）"に遷移させ、ＯＳに対してタスクスケジューリングを要求すればよい。なお、通信処理タスクが優先的に実行されるようするため、通信処理タスクには、スレーブ・プロセッサ２１における最高の実行優先度を付与しておくとよい。
【００３４】
図４のステップＳ２１では、通信処理タスクが、マスタ・プロセッサ１１により共有メモリ３０に書き込まれた通信データを参照して優先度情報を取得する。ステップＳ２２では、通信処理タスクが、要求元タスクからの処理要求で依頼された処理を実行するための子タスクを生成する。子タスクの生成を完了した通信処理タスクは、"待ち状態（ＷＡＴＩＮＧ状態）"への遷移をＯＳ２２０に通知して処理を終了すればよい。ステップＳ２２で生成される子タスクの実行優先度は、優先度情報に指定された要求元タスクのマスタ・プロセッサ１１における実行優先度に応じて動的に決定される。言い換えると、子タスクのスレーブ・プロセッサ２１における実行優先度は、要求元タスクのマスタ・プロセッサ１１における実行優先度が高くなるにつれて、相対的に高くなるように設定される。
【００３５】
図５は、通信処理タスクにより生成された子タスクが、要求元タスクからの処理要求に基づく処理を実行する手順を示すフローチャートである。ステップＳ３１では、共有メモリ３０から処理要求データを取得し、これを解釈する。ステップＳ３２では、要求元タスクから要求された処理を実行する。処理要求に関する処理が完了すると、処理要求データの伝達のために要求元タスクによって確保されていたプロセッサ間通信用のメモリ領域を解放する。具体的には、当該メモリ領域の通信管理フラグをクリアすればよい。ステップＳ３４では、処理完了を伝達するために、割り込み信号線３２を介してマスタ・プロセッサ１１に割り込み信号を出力する。図５に示す全ての処理を完了した子タスクは、タスク終了をＯＳ２２０に通知する。これにより、ＯＳ２２０が、子タスクの終了処理を行い、子タスクのタスクコンテキストが保持されていたメモリ領域を解放する。
【００３６】
ところで、通信処理タスクによって生成された子タスクは、ＯＳ２２０によるタスクディスパッチによってスレーブ・プロセッサ２１上で実行される。上述したように、子タスクのスレーブ・プロセッサ２１における実行優先度には、要求元タスクのマスタ・プロセッサ１１における実行優先度が反映される。したがって、ある子タスク（第１の子タスクと呼ぶ）が実行状態にあるとき、第１の子タスクの要求元タスク（第１の要求元タスクと呼ぶ）より実行優先度の高い第２の要求元タスクから処理要求がなされると、スレーブ・プロセッサ２１では最高の実行優先度を付与された通信処理タスクが起床され、第１の子タスクの実行が中断される。そして、通信処理タスクによって第２の要求元タスクの処理要求を実行するための子タスク（第２の子タスクと呼ぶ）が、第１の子タスクに比べて高い実行優先度が付与された状態で生成される。このため、第２のタスク生成後に行われるＯＳ２２０によるタスクスケジューリングによって、第１の子タスクではなく、第２の子タスクが優先的に実行される。
【００３７】
マスタ・プロセッサ１１及びスレーブ・プロセッサ２１での実行タスクの遷移過程について図６及び７を用いて詳細に説明する。図６は、情報システム１がスレーブ・プロセッサ２１を有していないシステムであり、単一プロセッサで処理を行うと仮定した場合に期待されるタイミング図である。図６は、本願発明の課題に関連して図８に示したタイミング図と対応している。図６に示す４つのタスクＡ〜Ｄの実行優先度は、タスクＡが最も高く、タスクＢ、Ｃ、Ｄの順値が低くなるように割り当てられている。時刻Ｔ１に実行可能となったタスクＢは、他に実行中タスク及び実行可能なタスクが存在しないために、他のタスクの影響を受けずに実行開始され、処理完了とともに終了する（ＯＰ−Ｂ）。
【００３８】
次に、時刻Ｔ２に実行可能となったタスクＣは、他に実行中タスク及び実行可能なタスクが存在しないために、実行が開始される（ＯＰ−Ｃ１）。続いて、タスクＣの実行中である時刻Ｔ３にタスクＤが実行可能となるが、タスクＤの実行優先度はタスクＣより低い。このため、タスクＤの実行は、タスクＤより実行優先度の高い他の全てのタスクが終了するか、何らかの要因でこれら全てのタスクがプロセッサの使用権限を手放すまで開始されることはない。そして、時刻Ｔ４にてタスクＡが実行可能となると、相対的に実行優先度の低いタスクＣの実行は中断され、代わりにタスクＡの実行が開始される（ＯＰ−Ａ）。
【００３９】
その後、時刻Ｔ５にてタスクＡが終了すると、実行待ち状態にある全てのタスク、具体的にはタスクＣ及びタスククＤの実行優先度が比較される。当該比較の結果、タスクＤに比べて実行優先度の高いタスクＣが選択され、中断されていたタスクＣの実行が再開される（ＯＰ−Ｃ２）。最後に、時刻Ｔ６にてタスクＣが終了すると、他の３つのタスクに比べて最も実行優先度の低いタスクＤの実行が開始される（ＯＰ−Ｄ）。つまり、図８に示した場合と異なり、単一プロセッサであれば、タスクの実行優先度に基づくタスクスケジューリングが正常に機能する結果、ソフトウェア開発者の期待通りのタスク実行順序が得られる。
【００４０】
一方、図７は、本実施の形態にかかる情報処理システム１における、マスタ・プロセッサ１１及びスレーブ・プロセッサ２１での実行タスクの遷移過程を示すタイミング図である。情報処理システム１は、マルチプロセッサ構成を有するにも関わらず、図６に示した単一プロセセッサの場合と同様の順序でタスクを実行可能である。以下に、詳しく説明する。
【００４１】
図７の時刻Ｔ１において、要求元タスクの１つであるタスクＢから処理要求がなされると、処理要求に起因する割り込み信号の受信に応じて、最高の実行優先度が付与された通信処理タスクがスレーブ・プロセッサ２１で優先的に起床される。通信処理タスクは、要求元タスクＢのマスタ・プロセッサ１１における実行優先度を反映して、処理要求を実行するタスクである子タスクｂを生成する。子タスクｂは、通信処理タスクの処理終了後、他の子タスクが存在しないために、速やかに実行が開始される（ＯＰ−Ｂ）。
【００４２】
次に、時刻Ｔ２において要求元タスクの１つであるタスクＣから処理要求がなされると、スレーブ・プロセッサ２１において通信処理タスクが子タスクｃを生成する。子タスクｃは、通信処理タスクの処理終了後、他の子タスクが存在しないために、速やかに実行が開始される（ＯＰ−Ｃ１）。
【００４３】
子タスクｃの実行中である時刻Ｔ３において、要求元タスクの１つであるタスクＤから処理要求がなされると、通信処理タスクが起床されて子タスクｄが生成される。ここで、子タスクｄのスレーブ・プロセッサ２１における実行優先度は、実行中であった子タスクｃの実行優先度に比べて低く設定されている。なぜなら、要求元タスクＣ及びＤのマスタ・プロセッサ１１における実行優先度の相対関係が、子タスクｃ及びｄの実行優先度にそのまま反映されるためである。したがって、子タスクｄの実行は、子タスクｄより実行優先度の高い他の全てのタスクが終了するか、何らかの要因でこれら全てのタスクがスレーブ・プロセッサ２１の使用権限を手放すまで開始されることはない。
【００４４】
時刻Ｔ４において、要求元タスクの１つであるタスクＡから処理要求がなされると、通信処理タスクが起床されて子タスクａが生成される。ここで、子タスクａのスレーブ・プロセッサ２１における実行優先度は、実行中であった子タスクｃの実行優先度に比べて高く設定されている。このため、通信処理タスク終了後のタスクスケジューリングによって、子タスクｃに代わり子タスクａがディスパッチされる（ＯＰ−Ａ）。
【００４５】
その後、時刻Ｔ５にて子タスクａが終了すると、実行待ち状態にある子タスクｃ及び子タスクｄの実行優先度が比較される。当該比較の結果、子タスクｄに比べて実行優先度の高い子タスクｃが選択され、中断されていた子タスクｃの実行が再開される（ＯＰ−Ｃ２）。そして、時刻Ｔ６にて子タスクｃが終了すると、他の３つの子タスクに比べて最も実行優先度の低い子タスクｄの実行が開始される（ＯＰ−Ｄ）。
【００４６】
つまり、本実施の形態にかかる情報処理システム１は、スレーブ・プロセッサ２１において処理要求に関する処理を担う複数の子タスクの実行順序を、図６に示した単一プロセッサでのタスク実行順序に則した順序とすることができる。このため、ソフトウェア開発者は、プロセッサ間通信の存在を特段意識することなく、設計、開発及びテストを行なうことができる。
【００４７】
また、スレーブ・プロセッサ２１は、各々異なる複数の要求元タスクからなされた処理要求に対して共通の通信処理タスクを起床し、通信処理タスクを介して各処理要求を実行する主体である子タスクを生成する。このため、スレーブ・プロセッサ２１は、複数種類の処理要求に対応した子タスクを予め生成しておく必要がない。したがって、スレーブ・プロセッサ２１は、タスクのコンテキストを保持しておくためのメモリ資源及びＯＳ資源の浪費を回避することができ、組み込みシステムの装置規模及び装置コストの抑制に寄与することができる
【００４８】
なお、本発明の適用先が組み込みシステムに限定されないことはもちろんである。つまり、本発明は、マルチプロセッサ構成の情報処理システムに広く適用可能である。
【００４９】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【図面の簡単な説明】
【００５０】
【図１】本発明の実施の形態にかかる情報処理システムの構成例を示すブロック図である。
【図２】本発明の実施の形態にかかる情報処理システムに関する動作手順を示すフローチャートである。
【図３】本発明の実施の形態にかかる情報処理システムにおけるプロセッサ間通信データの構成例を示す図である。
【図４】本発明の実施の形態にかかる情報処理システムに関する動作手順を示すフローチャートである。
【図５】本発明の実施の形態にかかる情報処理システムに関する動作手順を示すフローチャートである。
【図６】仮想的な単一プロセッサ装置におけるタスク実行順序を示す参考図である。
【図７】本発明の実施の形態にかかる情報処理システムにおけるタスク実行順序を示す図である。
【図８】本発明の背景技術かかる情報処理システムにおけるタスク実行順序を示す図である。
【符号の説明】
【００５１】
１  情報処理システム
１１  マスタ・プロセッサ
１２  専有メモリ
２１  スレーブ・プロセッサ
２２  専有メモリ
３０  共有メモリ
３１、３２  割込み信号線
３３  通信データ
１２０、２２０  オペレーティングシステム（ＯＳ）
１２１、２２１  アプリケーションプログラム（ＡＰ）
【図１】
2009265963.tif 000003
【図２】
2009265963.tif 000004
【図３】
2009265963.tif 000005
【図４】
2009265963.tif 000006
【図５】
2009265963.tif 000007
【図６】
2009265963.tif 000008
【図７】
2009265963.tif 000009
【図８】
2009265963.tif 000010