(57)【要約】  複数のプロセッサ間で共有資源に対するアクセスが競合することにより生ずるタスクの破綻によりリアルタイムシステムの性能保証を実現するため、マルチプロセッサシステム（１００）が備える複数のプロセッサの各々は、タスクセットの繰り返し実行の１周期として定められたタスク周期以内に複数のプロセッサで実行されるべきタスクセットに含まれるタスクのタスク実行順序と各タスクを実行するプロセッサとを決定するタスクスケジューラ（２０１）を備え、マルチプロセッサシステム（１００）は、複数のタスクスケジューラ（２０１）の少なくとも１つにタスク実行順序の変更を指示する指示部（３１０）を有するスケジューラ管理装置（３００）を備えており、複数のタスクスケジューラ（２０１）の各々は、指示部（３１０）から指示を受けると、複数のプロセッサのタスク実行順序を変更する。
2012001835.tif 000002
【特許請求の範囲】
【請求項１】
複数のタスクからなるタスクセットを繰り返し実行するマルチプロセッサシステムであって、
前記マルチプロセッサシステムが備える複数のプロセッサの各々は、前記タスクセットの繰り返し実行の１周期として定められたタスク周期以内に前記複数のプロセッサで実行されるべき前記タスクセットに含まれるタスクのタスク実行順序と各前記タスクを実行するプロセッサとを決定するタスクスケジューラを備え、
前記マルチプロセッサシステムは、前記複数のタスクスケジューラの少なくとも１つに前記タスク実行順序の変更を指示する指示部を有するスケジューラ管理装置を備えており、
前記複数のタスクスケジューラの各々は、前記指示部から前記指示を受けると、前記複数のプロセッサの前記タスク実行順序を変更する
マルチプロセッサシステム。
【請求項２】
前記スケジューラ管理装置は、さらに、タスク比較部と、破綻パターン記憶部とを備えており、
前記破綻パターン記憶部は、前記タスクセットの繰り返し実行の１回分の処理であるタスクセット処理が複数プロセッサ間のアクセス競合に起因して前記タスク周期以内に完了しないタスクセットに含まれるタスクのタスク実行順序、各前記タスクを実行するプロセッサのプロセッサＩＤ及び前記タスク周期を含む情報を破綻パターンとして１以上記憶し、
前記複数のタスクスケジューラのうちの第１のタスクスケジューラは、前記タスクセットに含まれるタスクのタスク実行順序、各前記タスクを実行するプロセッサのプロセッサＩＤ及び前記タスク周期を含む周期スケジューリング情報を前記タスク比較部に通知し、
前記タスク比較部は、通知された前記周期スケジューリング情報と前記破綻パターンとを比較することにより一致するか否かを判定し、
一致する前記破綻パターンがある場合には、前記指示部は前記複数のタスクスケジューラの少なくとも１つに前記周期スケジューリング情報に含まれるタスク実行順序の変更を指示する
請求項１に記載のマルチプロセッサシステム。
【請求項３】
前記スケジューラ管理装置は、前記タスク周期内に前記タスクセットの繰り返し実行の１回分の処理であるタスクセット処理が完了したか否かを判定し、
前記指示部は、前記タスク周期内に前記タスクセット処理が完了していないと判定された場合に、前記タスク実行順序の変更を指示する
請求項１に記載のマルチプロセッサシステム。
【請求項４】
前記スケジューラ管理装置は、さらに、タスク周期カウンタと、完了タスク記憶部と、破綻判定部とを備えており、
前記複数のプロセッサの各々は、前記繰り返し実行の１回分の処理であるタスクセット処理が完了したタスクのタスク識別情報を前記スケジューラ管理装置へ通知し、
前記完了タスク記憶部は、通知された前記タスクセット処理が完了したタスクのタスク識別情報を記憶し、
前記タスク周期カウンタは、前記複数のプロセッサにより前記タスクセットの実行を開始してからのサイクル数をカウントし、
前記破綻判定部は、前記タスクセットに含まれているタスクのうち、前記サイクル数が前記タスク周期を超えた時点で前記完了タスク記憶部に記憶されていないタスクである破綻タスクがあるか否かを判定し、
判定の結果、前記破綻タスクが１以上あった場合には、前記指示部は前記複数のタスクスケジューラのうち少なくとも１つに前記タスク実行順序の変更を指示する
請求項１に記載のマルチプロセッサシステム。
【請求項５】
前記タスク実行順序の変更の指示には、前記１以上の破綻タスクのタスク識別情報が含まれており、
前記指示を受けたタスクスケジューラは、当該タスク識別情報に対応するタスクを実行するプロセッサが実行する他のタスクよりも、前記タスク識別情報に対応するタスクの実行順位が後になるように、前記タスク実行順序を変更する
請求項４に記載のマルチプロセッサシステム。
【請求項６】
前記マルチプロセッサシステムは、さらに、バスコントローラを有する共有バスと、前記共有バスを介して前記複数のプロセッサが情報を書き込む共有資源とを備え、
前記バスコントローラは、前記複数のプロセッサの各々で実行され、前記共有資源に書き込みを行う時間が重なっている２以上の競合タスクのタスク識別情報を保持する保持部を有しており、
前記指示部は、前記タスク実行順序の変更の指示に、前記破綻タスクであり、かつ、前記保持部に保持されている前記競合タスクのタスク識別情報を含める
請求項５に記載のマルチプロセッサシステム。
【請求項７】
前記共有資源は共有メモリ及び入出力インタフェースのいずれかである
請求項６に記載のマルチプロセッサシステム。
【請求項８】
前記スケジューラ管理装置は、さらに、破綻パターン記憶部とタスク比較部とを備えており、
実行されたタスクセットに破綻タスクが含まれると前記破綻判定部によって判定された場合に、前記スケジューラ管理装置は、当該タスクセットに含まれるタスクのタスク実行順序、各前記タスクを実行するプロセッサのプロセッサＩＤ及び前記タスク周期を含む情報を破綻パターンとして前記破綻パターン記憶部に記憶させ、
前記複数のタスクスケジューラのうちの第１のタスクスケジューラは、これから実行されるタスクセットに含まれるタスクのタスク実行順序、各前記タスクを実行するプロセッサのプロセッサＩＤ及び前記タスク周期を含む周期スケジューリング情報を前記タスク比較部に通知し、
前記タスク比較部は、通知された前記周期スケジューリング情報と前記破綻パターンとを比較することにより一致するか否かを判定し、
一致する前記破綻パターンがある場合には、前記指示部は前記複数のタスクスケジューラの少なくとも１つに前記周期スケジューリング情報に含まれる前記タスク実行順序の変更を指示する
請求項４に記載のマルチプロセッサシステム。
【請求項９】
前記タスク周期カウンタはレジスタである
請求項４に記載のマルチプロセッサシステム。
【請求項１０】
複数のタスクからなるタスクセットを繰り返し実行するシステムＬＳＩであって、
前記システムＬＳＩは、マルチプロセッサシステムと、前記マルチプロセッサシステムとシステムバスを介してそれぞれ接続されている外部データ入出力部、外部記憶装置接続部、及び、外部制御機器接続部とを備えており、
前記マルチプロセッサシステムが備える複数のプロセッサの各々は、前記タスクセットの繰り返し実行の１周期として定められたタスク周期以内に前記複数のプロセッサで実行されるべき前記タスクセットに含まれるタスクのタスク実行順序と各前記タスクを実行するプロセッサとを決定するタスクスケジューラを備え、
前記マルチプロセッサシステムは、前記複数のタスクスケジューラの少なくとも１つに前記タスク実行順序の変更を指示する指示部を有するスケジューラ管理装置を備えており、
前記複数のタスクスケジューラの各々は、前記指示部から前記指示を受けると、前記複数のプロセッサの前記タスク実行順序を変更する
システムＬＳＩ。
【請求項１１】
請求項１０に記載のシステムＬＳＩを備えるデジタルテレビ。
【発明の詳細な説明】
【技術分野】
【０００１】
マルチプロセッサシステムに関し、特に、複数のタスクからなるタスクセットを繰り返し実行するマルチプロセッサシステムに関する。
【背景技術】
【０００２】
従来、複数のタスクの実行を、事前に定められた制限時間内に完了させられるよう、タスクのスケジューリングを行うための技術が知られてきた。【０００３】
例えば、特許文献１では、プロセッサによるタスクの実行が、過去所定の制限時間を超えた（デッドラインミス）回数をタスク毎に記憶しておき、その回数が多いタスクほど、スケジューリング時に実行順序を繰り上げる処理を行うことで、デッドラインミスの回数を減らすことが試みられている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−７３３５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術では、プロセッサが複数協調して動作するマルチプロセッサシステムにおいて、複数のプロセッサ間で共有資源に対するアクセスが競合することにより生ずるタスクの破綻には対応できず、その結果リアルタイムシステムの性能保証ができないという課題を有していた。【０００６】
図２０は、マルチプロセッサシステムにおいて、複数プロセッサによる共有資源（例えば共有メモリなど）へのアクセス競合が要因となるタスク処理の破綻の一例を時間軸上で表した図である。【０００７】
図２０に示されるように、プロセッサの各々で実行されるタスク処理（図２０ではプロセッサ０のタスク処理３２０及びプロセッサ１のタスク処理３３０と記載）の途中で共有資源へのアクセスが同時に発生するアクセス競合が起こった結果、事前に見積もられた時間内でタスクが完了せず、処理の破綻に陥る。【０００８】
より詳細には、プロセッサ１で実行中のタスクＡ３３１とプロセッサ０上で実行中のタスクＣ３２１との間にバスアクセスの競合が生じている。【０００９】
その結果、プロセッサ１はタスクＡ３３１の実行を、タスクＣ３２１のバスアクセスが終了するまで待たねばならず、その待ち時間の影響でプロセッサ１はタスクＡ３３１の実行に当初の見積もりより多くの時間を消費する。【００１０】
その結果、プロセッサ１が次のタスクコンテキストの切替までに完了させることが期待されているタスクＢ３３２の処理が、タスク周期２２２以内に完了せず、タスクＢ３３２の実行が破綻している。【００１１】
また、図２１は、マルチプロセッサシステムにおいて、複数プロセッサのアクセス競合により生じるタスク処理の遅延の一例を示す図である。【００１２】
図２１に示すように、タスクＡ１及びタスクＢ１が頻繁に共有資源（図２１では、共有メモリ１０２）への書き込み処理を行う場合には、タスク間で競合が頻発し、その結果タスクＡ１及びタスクＢ１の処理時間が延び、プロセッサ０及びプロセッサ１によるタスクの処理効率が低下することになる。【００１３】
すなわち、事前に机上で見積もられた理想的なタスク処理時間に対して、マルチプロセッサシステムにおける共有メモリ等の共有資源へのアクセス競合は従来技術では想定外であり、その影響によりリアルタイム処理を必要とされる場合の性能保証が困難になるという課題を有していた。【００１４】
本発明は上記従来の課題を解決するものであり、特に、複数のタスクからなるタスクセットを繰り返し実行するマルチプロセッサシステムにおいて、タスク周期内で完了するようにスケジューリングされた複数のタスクの実行がアクセス競合によりタスク周期内で完了できなくなるスケジューリングを事前に検出し、タスク処理の破綻を回避することで、リアルタイム処理の性能保証が容易なマルチプロセッサシステムの提供を目的とする。
【課題を解決するための手段】
【００１５】
上記目的を達成するために、本発明のある局面に係るマルチプロセッサシステムは、複数のタスクからなるタスクセットを繰り返し実行するマルチプロセッサシステムであって、前記マルチプロセッサシステムが備える複数のプロセッサの各々は、前記タスクセットの繰り返し実行の１周期として定められたタスク周期以内に前記複数のプロセッサで実行されるべき前記タスクセットに含まれるタスクのタスク実行順序と各タスクを実行するプロセッサとを決定するタスクスケジューラを備え、前記マルチプロセッサシステムは、前記複数のタスクスケジューラの少なくとも１つに前記タスク実行順序の変更を指示する指示部を有するスケジューラ管理装置を備えており、前記複数のタスクスケジューラの各々は、前記指示部から前記指示を受けると、前記複数のプロセッサの前記タスク実行順序を変更する。【００１６】
本構成によると、スケジューラ管理装置からの指示により、複数のプロセッサの各々が実行するタスクの実行順序が入れ替えられる。その結果、同一の共有リソースへ書き込み等のアクセスをするタスクの実行時間に差が生じ、アクセス競合及びタスク処理の破綻が回避できる。【００１７】
より好ましくは、前記スケジューラ管理装置は、さらに、タスク比較部と、破綻パターン記憶部とを備えており、前記破綻パターン記憶部は、前記タスクセットの繰り返し実行の１回分の処理であるタスクセット処理が複数プロセッサ間のアクセス競合に起因して前記タスク周期以内に完了しないタスクセットに含まれるタスクのタスク実行順序、各タスクを実行するプロセッサのプロセッサＩＤ及び前記タスク周期を含む情報を破綻パターンとして少なくとも１以上記憶し、前記複数のタスクスケジューラのうちの第１のタスクスケジューラは、前記タスクセットに含まれるタスクのタスク実行順序、各タスクを実行するプロセッサのプロセッサＩＤ及び前記タスク周期を含む周期スケジューリング情報を前記タスク比較部に通知し、前記タスク比較部は、通知された前記周期スケジューリング情報と前記破綻パターンとを比較することにより一致するか否かを判定し、一致する前記破綻パターンがある場合には、前記指示部は前記複数のタスクスケジューラの少なくとも１つに前記周期スケジューリング情報に含まれるタスク実行順序の変更を指示する。【００１８】
この構成によると、スケジューラ管理装置は破綻パターン記憶部にタスク処理が破綻するタスクの実行順序である破綻パターンを記憶している。よって、スケジューラが決定したタスクの実行順序と、破綻パターンをタスク情報分析部が比較することにより、スケジューラ管理装置はタスクの実行前に破綻するスケジューリングを検出できる。さらに、破綻する場合にはタスクの実行順序を入れ替えることによる再スケジューリングをスケジューラ管理装置はスケジューラに指示できる。その結果、タスク処理の破綻を事前に回避できる。【００１９】
具体的には、前記スケジューラ管理装置は、前記タスク周期内に前記タスクセットの繰り返し実行の１回分の処理であるタスクセット処理が完了したか否かを判定し、前記指示部は、前記タスク周期内に前記タスクセット処理が完了していないと判定された場合に、前記タスク実行順序の変更を指示する。【００２０】
より具体的には、前記スケジューラ管理装置は、さらに、タスク周期カウンタと、完了タスク記憶部と、破綻判定部とを備えており、前記複数のプロセッサの各々は、前記繰り返し実行の１回分の処理であるタスクセット処理が完了したタスクのタスク識別情報を前記スケジューラ管理装置へ通知し、前記完了タスク記憶部は、通知された前記タスクセット処理が完了したタスクのタスク識別情報を記憶し、前記タスク周期カウンタは、前記複数のプロセッサにより前記タスクセットの実行を開始してからのサイクル数をカウントし、前記破綻判定部は、前記タスクセットに含まれているタスクのうち、前記サイクル数が前記タスク周期を超えた時点で前記完了タスク記憶部に記憶されていないタスクである破綻タスクがあるか否かを判定し、判定の結果、前記破綻タスクが１以上あった場合には、前記指示部は前記複数のタスクスケジューラのうち少なくとも１つに前記タスク実行順序の変更を指示する。【００２１】
さらには、前記スケジューラ管理装置は、さらに、破綻パターン記憶部とタスク比較部とを備えており、実行されたタスクセットに破綻タスクが含まれると前記破綻判定部によって判定された場合に、前記スケジューラ管理装置は、当該タスクセットに含まれるタスクのタスク実行順序、各タスクを実行するプロセッサのプロセッサＩＤ及び前記タスク周期を含む情報を破綻パターンとして前記破綻パターン記憶部に記憶させ、前記複数のタスクスケジューラのうちの第１のタスクスケジューラは、これから実行されるタスクセットに含まれるタスクのタスク実行順序、各タスクを実行するプロセッサのプロセッサＩＤ及び前記タスク周期を含む周期スケジューリング情報を前記タスク比較部に通知し、前記タスク比較部は、通知された前記周期スケジューリング情報と前記破綻パターンとを比較することにより一致するか否かを判定し、一致する前記破綻パターンがある場合には、前記指示部は前記複数のタスクスケジューラの少なくとも１つに前記周期スケジューリング情報に含まれる前記タスク実行順序の変更を指示する。【００２２】
これにより、スケジューラ管理装置は破綻するタスクの実行順序をタスク処理の破綻事例から学習する。その結果、自動的に破綻パターン記憶部に記憶される破綻パターンを更新していくことができる。【００２３】
また、前記タスク実行順序の変更の指示には、前記１以上の破綻タスクのタスク識別情報が含まれており、前記指示を受けたタスクスケジューラは、当該タスクを実行するプロセッサが実行する他のタスクよりも前記指示に含まれるタスク識別情報に対応するタスクの実行順位が後になるように、前記タスク実行順序を変更するとしてもよい。【００２４】
これにより、特にタスク処理が破綻したタスクを指定し、そのタスクの実行順位を同じプロセッサが実行する他のタスクよりも後にすることができる。その結果、タスク処理破綻後の再スケジューリングの際に、アクセス競合が生じるタスクの実行時間を後にずらすことで競合を回避し、次のタスク実行時に破綻を回避することができる。【００２５】
また、前記マルチプロセッサシステムは、さらに、バスコントローラを有する共有バスと、前記共有バスを介して前記複数のプロセッサが情報を書き込む共有資源とを備え、前記バスコントローラは、前記複数のプロセッサの各々で実行され、前記共有資源に書き込みを行う時間が重なっている２以上の競合タスクのタスク識別情報を保持する保持部を有しており、前記指示部は、前記タスク実行順序の変更の指示に、前記破綻タスクであり、かつ、前記保持部に保持されている前記競合タスクのタスク識別情報を含めるとしてもよい。【００２６】
また、前記共有資源は共有メモリ及び入出力インタフェースのいずれかであるとしてもよい。【００２７】
これにより、タスク処理が破綻した場合、共有バス側からの情報により、タスク処理の破綻原因がアクセス競合による場合を特定できる。また、タスクの実行順序の変更は、主に共有資源へのアクセス競合を回避するために有効である。よって、アクセス競合が原因で破綻したタスクを特定し、その実行順序を変更することで、次のタスク実行により確実に破綻を回避することができる。【００２８】
なお、本発明は、このようなマルチプロセッサシステムとして実現できるだけでなく、マルチプロセッサシステムに含まれる特徴的な手段をステップとする情報処理方法として実現したり、そのような特徴的なステップをコンピュータに実行させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、ＣＤ−ＲＯＭ等の記録媒体及びインターネット等の伝送媒体を介して流通させることができるのは言うまでもない。【００２９】
さらに、本発明は、このようなマルチプロセッサシステムを含むシステムＬＳＩとして実現したりできる。
【発明の効果】
【００３０】
複数のタスクからなるタスクセットを繰り返し実行するマルチプロセッサシステムにおいて、アクセス競合によりタスク周期内で完了できなくなるスケジューリングを事前に検出し、タスク処理の破綻を回避することで、リアルタイム処理の性能保証が容易なマルチプロセッサシステムを提供できる。
【図面の簡単な説明】
【００３１】
【図１】図１は、本発明の実施の形態１におけるマルチプロセッサシステムの構成図である。
【図２】図２は、本発明の実施の形態１におけるプロセッサの構成図である。
【図３】図３は、本発明の実施の形態１におけるスケジューラ管理装置の構成図である。
【図４】図４は、本発明の実施の形態１〜３における周期スケジューリング情報の一例を示す図である。
【図５】図５は、本発明の実施の形態１〜３における再スケジューリング指示の一例を示す図である。
【図６】図６は、アクセス競合が要因となるタスク処理の破綻を、本実施の形態１〜３にかかるマルチプロセッサシステムにより回避できる例を示す図である。
【図７】図７は、本発明の実施の形態１〜３におけるタスク処理の破綻回避の他の例を示す参考図である。
【図８】図８は、本発明の実施の形態１〜３におけるタスク処理の破綻回避のさらに他の例を示す参考図である。
【図９】図９は、本発明の実施の形態１におけるタスクスケジューリング処理の流れを示すフローチャートである。
【図１０】図１０は、本発明の実施の形態１における詳細なタスクスケジューリング処理の流れを示すフローチャートである。
【図１１】図１１は、本発明の実施の形態１におけるタスクセットの繰り返し実行の１回分の処理の流れを示すフローチャートである。
【図１２】図１２は、本発明の実施の形態１におけるタスク破綻判定処理の流れを示すフローチャートである。
【図１３】図１３は、本発明の実施の形態１におけるタスク破綻処理の流れを示すフローチャートである。
【図１４】図１４は、本発明の実施の形態１におけるタスク処理の流れを示すフローチャートである。
【図１５】図１５は、本発明の実施の形態２におけるマルチプロセッサシステムの構成図である。
【図１６】図１６は、本発明の実施の形態２におけるバスコントローラの構成図である。
【図１７】図１７は、本発明の実施の形態２におけるバスロックアクセス調停処理の流れを示すフローチャートである。
【図１８】図１８は、本発明の実施の形態３における、マルチプロセッサシステムを備えたシステムＬＳＩの構成図である。
【図１９】図１９は、本発明の実施の形態３における、マルチプロセッサシステムを備えたシステムＬＳＩを用いたデジタルテレビの構成図である。
【図２０】図２０は、従来技術におけるタスク処理の破綻の一例を示す図である。
【図２１】図２１は、従来技術におけるタスク処理の遅延の一例を示す図である。
【発明を実施するための形態】
【００３２】
以下、本発明の実施の形態におけるマルチプロセッサシステム１００について、図面を参照しながら説明する。
【００３３】
（実施の形態１）
図１は本発明の実施の形態１における、マルチプロセッサシステム１００の構成図である。マルチプロセッサシステム１００は、複数のタスクからなるタスクセットを繰り返し実行するマルチプロセッサシステムである。
【００３４】
図１に示されるように、マルチプロセッサシステム１００は、仮想マルチタスク処理機構を持つ２つのプロセッサ２００、共有バス１０１、共有資源１０２及びスケジューラ管理装置３００を備えるプロセッサシステムである。
【００３５】
より詳しく述べると、プロセッサ２００は、それぞれ共有バス１０１に対してバスアクセス１０３で接続されており、また、共有バス１０１を介して共有資源１０２にアクセスすることができる。
【００３６】
なお、共有資源１０２としては、例えば共有メモリや、入出力用のＩ／Ｏインタフェース等が考えられる。
【００３７】
プロセッサ２００はそれぞれ、分析結果バス１０６及びタスク情報バス１０５を介してスケジューラ管理装置３００と接続されている。なお、マルチプロセッサシステム１００が備える２つのプロセッサの総称として、「プロセッサ２００」を用いる。
【００３８】
共有バス１０１上で検出されたアクセス競合情報は、アクセス競合バス１０４を介してスケジューラ管理装置３００へ伝達される。
【００３９】
スケジューラ管理装置３００は、プロセッサ２００の各々からタスク情報バス１０５を介して受信したタスク情報を分析し、分析結果バス１０６を介してプロセッサ２００の各々へアクセス競合の分析結果を伝達する。
【００４０】
スケジューラ管理装置３００からアクセス競合の分析結果を受け取ったプロセッサ２００は、プロセッサ２００の各々（すなわち、プロセッサ２００に含まれる複数のプロセッサの各々）に必要なタスクスケジューリングを行うことでアクセス競合を回避し、次スケジューリングでの処理破綻の回避を行う。
【００４１】
図２は、実施の形態１における仮想マルチタスク処理機構を持つプロセッサ２００の構成図である。
【００４２】
図２に示されるように、プロセッサ２００は、タスクスケジューラ２０１、タイムカウンタ２０２、タスク切替器２０３、タスクコンテキスト２０４及び演算ユニット２０５を備える。
【００４３】
タスクスケジューラ２０１は、タスク切替器２０３を用いて演算ユニット２０５に割り当てられるタスクコンテキスト２０４を切り替えることにより、事前に定められた時間内で複数のタスク処理を完了させる。
【００４４】
タスクコンテキスト２０４の切替が行われると、タイムカウンタ２０２は初期化される。
【００４５】
タスクスケジューラ２０１は、タイムカウンタ２０２、及び、タスク切替器２０３と接続されている。
【００４６】
タスクスケジューラ２０１は、タイムカウンタ２０２からタスク実行時間残量２０６を受信し、その値が０になるとタスクＩＤ、プロセスＩＤ、プロセッサＩＤ、タスクプライオリティなどを含む、タスク情報を生成し、タスク切替器２０３に伝達する。
【００４７】
同時に、タスクスケジューラ２０１は、タスク情報バス１０５を介してスケジューラ管理装置３００へタスク情報を伝達する。
【００４８】
タスク切替器２０３は、タスクスケジューラ２０１からタスク情報を受信し、タスクコンテキスト接続バス２０８を介して、必要となるタスクコンテキスト２０４を選択、取得し、演算ユニット接続バス２０９を介して接続された演算ユニット２０５に対してタスクコンテキストを供給する。
【００４９】
演算ユニット２０５は、タスク切替器２０３から供給されたタスクコンテキストに従って演算を行い、その結果、バスアクセス１０３を介して共有バス１０１とのアクセスを開始する。
【００５０】
図３は実施の形態１における、スケジューラ管理装置３００の構成図である。
【００５１】
図３に示されるように、スケジューラ管理装置３００は、タスク情報分析部３０１、タスク周期カウンタ３０２、完了タスク記憶部３０３、破綻パターン記憶部３０４、競合カウンタ３０５及び記憶許可情報保持部３０６を備える。
【００５２】
タスク情報分析部３０１は、タスク情報バス１０５を介してプロセッサ２００と接続されており、プロセッサ２００の各々から得られるタスク情報（例えばタスク完了通知、タスクＩＤ、スケジューリング完了通知、タスク周期以内に実行されるべきタスクセットに含まれる複数タスクのタスク属性・タスクの実行順序・各タスクを実行するプロセッサのプロセッサＩＤ・タスクプライオリティ・タスク周期等からなる周期スケジューリング情報）を受け取る。
【００５３】
ここで、タスクセットとは、複数のタスクを含み、プロセッサ２００により繰り返し実行させられる単位となるタスクの組である。
【００５４】
また、タスク周期とは、タスクセットの繰り返し実行の１周期として事前に定められた時間である。
【００５５】
また、タスク情報分析部３０１はタスク周期カウンタ３０２、完了タスク記憶部３０３、破綻パターン記憶部３０４及び記憶許可情報保持部３０６と接続されている。
【００５６】
タスク情報分析部３０１は、指示部３１０、タスク比較部３１２及び破綻判定部３１４を有している。
【００５７】
タスク比較部３１２は、タスク情報バス１０５を介して取得した周期スケジューリング情報と、破綻パターン記憶部３０４から取得した破綻パターンとを比較する。
【００５８】
ここで、破綻パターンとは、タスク周期以内にタスクセットに含まれる全てのタスクの実行が完了せずに破綻した、過去の周期スケジューリング情報２２０の履歴である。
【００５９】
タスク比較部３１２による比較の結果、破綻パターンに、取得した周期スケジューリング情報２２０が含まれている場合、指示部３１０は、分析結果バス１０６を介してプロセッサ２００の各々にスケジューリングの変更を指示する。
【００６０】
スケジューリングの変更指示を受け取ったプロセッサ２００の各々は、タスク実行順序の変更の他、特定タスクのスケジュールキャンセル・ペンディング・タイムカウンタ増減などのタスクの再スケジューリングを行い、タスク情報バス１０５を介して新たな周期スケジューリング情報２２０とスケジューリング完了通知をタスク情報分析部３０１へ伝達する。
【００６１】
タスク比較部３１２及び指示部３１０は、周期スケジューリング情報２２０に含まれるタスク実行順序と、破綻パターン記憶部３０４に記憶された破綻パターンが一致しなくなるまでこの動作を繰り返す。
【００６２】
破綻判定部３１４は、１タスク周期で処理されるべき全てのタスクが完了しているか否かを判定する。
【００６３】
具体的には、破綻判定部３１４は、タスク周期カウンタ３０２がオーバーフロー（ダウンカウンタを用いる場合はアンダーフロー）した際に、タスクセットに含まれる各タスクについて、プロセッサ２００から通知されるタスク完了通知が完了タスク記憶部３０３に記憶されているか否かを判定する。
【００６４】
タスクセットに含まれる全てのタスクについてタスク完了通知が記憶されていれば、破綻判定部３１４は、このタスク周期内のタスク処理が全て完了したと判定する。その後、指示部３１０は、次のタスクセットを実行するため、必要であれば再度プロセッサ２００に対してスケジューリング要求を行う。
【００６５】
一方、タスク完了通知が記録されていないタスクが１つ以上ある場合、破綻判定部３１４はタスク処理が破綻したとみなす。
【００６６】
その場合、タスク情報分析部３０１は、周期スケジューリング情報と、競合カウンタ３０５から取り出したタスクセットに含まれるタスクごとの競合回数とを、破綻パターン記憶部３０４に記憶させる。また、指示部３１０はプロセッサ２００に対して、再スケジューリングを要求する指示であるスケジューリング変更指示を通知する。
【００６７】
スケジューリング変更指示により、再スケジューリングの要求を受けたプロセッサ２００が備えるタスクスケジューラ２０１は、例えば、破綻した周期スケジューリング情報に含まれるタスクの実行順序を変更したものを再スケジューリング後の新たな周期スケジューリング情報としてタスク情報分析部３０１へ通知する。
【００６８】
また、再スケジューリングを行ったタスクスケジューラ２０１は、新たな周期スケジューリング情報を他のプロセッサ２００へ通知する。
【００６９】
タスク周期カウンタ３０２は、タスクセットに含まれるタスクのプロセッサ２００による実行サイクルを計測するカウンタである。
【００７０】
タスク情報分析部３０１は、プロセッサ２００にタスクセットの実行を開始させる場合、タスク周期カウンタ３０２を初期化した後、カウントを開始させると同時に、分析結果バス１０６を介してプロセッサ２００に伝達しているスケジューリング変更要求を取り下げる。
【００７１】
ここで、タスク周期カウンタ３０２の初期化とは、タスク周期の経過後にタスク周期カウンタ３０２がオーバーフローする値を、カウンタの初期値に設定することである。
【００７２】
例えば、タスク周期カウンタ３０２の最大値が２５５であり、タスク周期が５０であれば、タスク周期カウンタ３０２の初期値を２０５に設定することになる。
【００７３】
その後、プロセッサ２００がスケジューリング済みのタスク処理を開始する。
【００７４】
また、プロセッサ２００がタスク処理を行っている間、タスク周期カウンタ３０２は同サイクルでカウンタがオーバーフローするまでカウントアップ（ダウンカウンタを用いる場合はアンダーフローするまでカウントダウン）を続ける。
【００７５】
オーバーフロー後、タスク周期カウンタ３０２は、タスク周期が経過したことを破綻判定部３１４に通知する。
【００７６】
完了タスク記憶部３０３は、前述のとおり、タスクセットに含まれるタスク毎に、タスク各々が完了したか否かを記憶している。
【００７７】
より具体的には、完了タスク記憶部３０３はレジスタの１ビットずつにそれぞれのタスクを割り当てた後に０で初期化し、プロセッサ２００から出力されたタスク完了通知を受け取るごとに割り当てられたビットを１に設定することで、タスク完了通知を記憶できる。
【００７８】
なお、このタスク完了通知は、例えばカウンタに設定されるオーバーフローまでの値など、ユーザーによる任意の設定条件をハードウェアが満たした際に出力させることが可能である。また、任意の設定条件に加え、例えばユーザーにより、プログラム内に記述されたタスク完了を通知させるための命令コードを実行することによりタスク完了通知を出力させることも可能であり、ユーザーによるプログラマブルなタスク処理完了制御が実現できる。
【００７９】
破綻パターン記憶部３０４は、前述の破綻パターンを記憶している。
【００８０】
競合カウンタ３０５は、アクセス競合バス１０４を介して、共有バス１０１と接続されており、プロセッサ２００の各々で実行される複数のタスクが共有バス１０１へ同時にアクセスを行う際に発生する競合回数をタスク毎にカウントし、保持する。
【００８１】
記憶許可情報保持部３０６は、破綻パターン記憶部３０４へ破綻パターンを記憶する場合の条件である記憶許可情報を保持する。
【００８２】
記憶許可情報としては、例えば有効期限の指定が考えられる。この場合、破綻パターン記憶部３０４は、有効期限以前の破綻パターンを破棄する。
【００８３】
また、記憶許可情報として除外タスクを指定してもよい。この場合、破綻パターン記憶部３０４は、除外タスクとして指定されたタスク識別情報をもつタスクの破綻は記憶しない。
【００８４】
また、記憶許可情報として破綻パターンの最大記憶数を指定してもよい。この場合、破綻パターン記憶部３０４は、ＦＩＦＯ（First In First Out）等のルールに従い、記憶する破綻パターンの数を管理する。
【００８５】
なお、破綻パターン記憶部３０４に記憶された破綻パターンは、必要に応じて圧縮形式での保存も可能である。さらに、破綻要因としてのタスク競合の組合せだけではなく、例えば競合要因となったバスアクセス情報などをそのまま破綻パターンとして記録してもよい。
【００８６】
これにより、タスク組合せに加えて、共有バス１０１へのアクセスの監視状況に応じたタスク破綻可能性の判定を行うことができる。また、ユーザーが任意にこれらの破綻タスク記憶情報を参照し、利用することも可能である。
【００８７】
すなわち、本実施の形態に係るマルチプロセッサシステム１００は、複数のタスクからなるタスクセットを繰り返し実行するマルチプロセッサシステム１００であって、マルチプロセッサシステム１００が備える複数のプロセッサの各々（すなわち、プロセッサ２００の各々）は、タスクセットの繰り返し実行の１周期として定められたタスク周期以内に複数のプロセッサで実行されるべきタスクセットに含まれるタスクのタスク実行順序と各タスクを実行するプロセッサとを決定するタスクスケジューラ２０１を備えている。
【００８８】
また、マルチプロセッサシステム１００は、複数のタスクスケジューラ２０１の少なくとも１つにタスク実行順序の変更を指示する指示部３１０を有するスケジューラ管理装置３００を備えている。
【００８９】
また、複数のタスクスケジューラ２０１の各々は、指示部３１０から指示を受けると、複数のプロセッサのタスク実行順序を変更する。
【００９０】
具体的には、スケジューラ管理装置３００は、さらに、タスク比較部３１２と、破綻パターン記憶部３０４とを備えている。
【００９１】
破綻パターン記憶部３０４は、タスクセットの繰り返し実行の１回分の処理であるタスクセット処理が複数プロセッサ間のアクセス競合に起因してタスク周期以内に完了しないタスクセットに含まれるタスクのタスク実行順序、各タスクを実行するプロセッサのプロセッサＩＤ及びタスク周期を含む情報を破綻パターンとして少なくとも１以上記憶している。
【００９２】
複数のタスクスケジューラ２０１のうちの第１のタスクスケジューラは、タスクセットに含まれるタスクのタスク実行順序、各タスクを実行するプロセッサのプロセッサＩＤ及びタスク周期を含む周期スケジューリング情報をタスク比較部３１２に通知する。
【００９３】
タスク比較部３１２は、破綻パターンと通知されたタスク実行順序とを比較することにより一致するか否かを判定する。
【００９４】
タスク比較部３１２による判定の結果、一致する破綻パターンがある場合には、指示部３１０は複数のタスクスケジューラ２０１の少なくとも１つに周期スケジューリング情報に含まれるタスク実行順序の変更を指示する。
【００９５】
一方、一致する破綻パターンがない場合には、スケジューラ管理装置３００は、プロセッサ２００にタスクセットの実行を開始させる。
【００９６】
その後、スケジューラ管理装置３００はタスク周期２２２内にタスクセット処理が完了したか否かを判定する。その結果、タスク周期２２２内にタスクセット処理が完了していないと判定された場合には、指示部３１０は、タスクスケジューラ２０１へ実行順序の変更を指示する。
【００９７】
より具体的には、スケジューラ管理装置３００は、さらに、タスク周期カウンタ３０２と、完了タスク記憶部３０３と、破綻判定部３１４とを備えている。
【００９８】
プロセッサ２００の各々は、繰り返し実行の１回分の処理が完了したタスクのタスク識別情報をスケジューラ管理装置３００へ通知する。
【００９９】
完了タスク記憶部３０３は、通知された繰り返し実行の１回分の処理が完了したタスクのタスク識別情報を記憶する。
【０１００】
タスク周期カウンタ３０２は、プロセッサ２００によりタスクセットの実行が開始されてからのサイクル数をカウントする。
【０１０１】
破綻判定部３１４は、タスクセットに含まれる複数のタスクのうちサイクル数がタスク周期２２２を超えた時点で完了タスク記憶部３０３に記憶されていないタスクである破綻タスクがあるか否かを判定する。
【０１０２】
この判定の結果、破綻タスクが１以上あった場合には、指示部３１０は複数のタスクスケジューラ２０１のうち少なくとも１つにタスク実行順序の変更を指示する。
【０１０３】
また、破綻判定部３１４によって破綻タスクがあると判定された場合に、スケジューラ管理装置３００は、破綻した周期スケジューリング情報２２０を新たな破綻パターンとして破綻パターン記憶部３０４に記憶させる。
【０１０４】
なお、タスク実行順序の変更の指示であるスケジューリング変更指示２３０には、１以上の破綻タスクのタスク識別情報が含まれており、指示を受けたタスクスケジューラは、指示に含まれるタスク識別情報に対応するタスクの実行順位が同じプロセッサが実行する他のタスクよりも後になるように、タスク実行順序を変更する。
【０１０５】
なお、タスク周期カウンタ３０２は、例えばレジスタを用いて実現できる。その場合、プロセッサ２００の実行サイクルがタスク周期を超えたことは、カウンタのオーバーフローに伴う割り込みとして実現される。
【０１０６】
以下、より詳細に説明する。
【０１０７】
図４は、タスクスケジューラ２０１からタスク情報バス１０５を介してタスク情報分析部３０１へ伝達される周期スケジューリング情報２２０の一例を示す図である。
【０１０８】
図４に示されるように、周期スケジューリング情報２２０は、タスク周期２２２と、プロセッサ０の実行順序２２４と、プロセッサ１の実行順序２２６とを含む。
【０１０９】
タスク周期２２２は、タスクセット（この例では、タスクＡ、タスクＢ及びタスクＣの３つのタスクからなる組）に含まれる全てのタスクが繰り返し実行の１回分の処理を完了させるべき時間である。
【０１１０】
例えば、タスク周期２２２が２０サイクルに指定されている場合、タスクセットの実行サイクルが２０サイクルを超えると、タスクの実行が破綻することになる。
【０１１１】
プロセッサ０の実行順序２２４及びプロセッサ１の実行順序２２６は、それぞれのプロセッサにおいて実行されるべきタスクの実行順序を示す。
【０１１２】
例えば、プロセッサ１の実行順序２２６として、第１順位にタスクＡが、第２順位にタスクＢが指定されている場合、プロセッサ１はまずタスクＡの実行を開始し、その完了後に、タスクＢを実行する。
【０１１３】
なお、プロセッサ０の実行順序２２４のように、タスクＣのみが指定されている場合、プロセッサ０はタスクＣのみを実行する。
【０１１４】
図５は、指示部３１０からタスクスケジューラ２０１へタスク実行順序の変更を要求するために伝達されるスケジューリング変更指示２３０の一例を示す図である。
【０１１５】
図５に示されるように、スケジューリング変更指示２３０は、破綻タスク識別情報２３２を含む。ここでは、破綻タスク識別情報２３２として、タスクＢが指定されている。
【０１１６】
例えば、図４に示された周期スケジューリング情報２２０に従ったタスクセットの実行の後、タスクが破綻したとする。
【０１１７】
その後、指示部３１０からタスクスケジューラ２０１へ通知されるスケジューリング変更指示２３０において、タスクＢが破綻タスク識別情報２３２として指定されると、タスクスケジューラ２０１は、プロセッサ１の実行順序２２６のうちでタスクＢの実行順序を後ろに下げる。
【０１１８】
その結果、タスクＡとタスクＢの実行順位が逆になった周期スケジューリング情報がタスクスケジューラ２０１からタスク情報分析部３０１へ通知される。
【０１１９】
なお、スケジューリング変更指示２３０は、破綻タスク識別情報２３２を含まなくともよい。その場合、スケジューリング変更指示２３０を受け取ったタスクスケジューラ２０１は、プロセッサ２００の各々で実行されるべきタスクのうち、例えばランダムに選択した２つのタスクの実行順序を変更してもよい。
【０１２０】
又は、タスクスケジューラ２０１は、プロセッサ２００の各々で実行されるべき複数のタスクのうち最後に実行されるタスクを１つ前のタスクと入れ替えてもよい。
【０１２１】
なお、指示部３１０によるスケジューリング変更指示２３０は、具体的には割り込みによって実現することができる。
【０１２２】
また、指示部３１０は、スケジューリング変更指示２３０を、プロセッサ２００の全てに対して通知してもよく、または、識別子を指定することにより特定のプロセッサに対してのみ通知してもよい。
【０１２３】
図６は、共有資源１０２へのアクセス競合が要因となるタスク処理の破綻を、本実施の形態にかかるマルチプロセッサシステム１００により回避できる例を示す図である。
【０１２４】
図６では、図２０と同様に、スケジューリングされたタスクＡ３３１、タスクＢ３３２及びタスクＣ３２１よりなるタスクセットが実行される様子を示す。
【０１２５】
ただし、図６では、タスクＡとタスクＢとの実行順序が逆になるように、タスクスケジューラ２０１によりタスク実行順序が変更されている。その結果、プロセッサ０とプロセッサ１の間のアクセス競合が解消され、タスクセット内の全てのタスクが、繰り返し実行１回分の処理をタスク周期２２２以内に完了することができる。
【０１２６】
すなわち、上記の構成による本実施の形態によれば、図４に示される周期スケジューリング情報２２０に従うとプロセッサ１で実行中のタスクＡ３３１がプロセッサ０上で実行中のタスクＣ３２１とがアクセス競合を起こし、その結果プロセッサ１にスケジューリングされているタスクＢ３３２の処理破綻につながることを未然に検出することができる。
【０１２７】
具体的には、タスク比較部３１２が、破綻パターン記憶部３０４に記憶された破綻パターンと周期スケジューリング情報２２０とを比較し、破綻パターンにタスクスケジューラ２０１によって決定された周期スケジューリング情報２２０が含まれているか否かを判定することによる。
【０１２８】
その結果、破綻パターンにタスクスケジューラ２０１によって決定された周期スケジューリング情報２２０が含まれている場合には、タスクスケジューラ２０１は再スケジューリングを行い、タスクＡ３３１とタスクＢ３３２の順序を入れ替える。これにより、プロセッサ０とプロセッサ１のバスアクセス競合を解消し、プロセッサ１で実行されるタスクＢの処理破綻を回避できるという効果を奏する。
【０１２９】
なお、破綻パターンとして、必ずしも周期スケジューリング情報２２０に含まれる全ての情報を破綻パターン記憶部３０４に記憶しておく必要はない。
【０１３０】
例えば、少なくともタスク実行順序を記憶しておけばよい。
【０１３１】
また、タスクセットが複数存在し、かつ、タスクセット毎にタスク周期２２２が異なる場合には、タスク実行順序に加えて各タスク周期２２２も破綻パターン記憶部３０４に記憶しておくことが好ましい。
【０１３２】
図９は、実施の形態１における１タスクセット分のタスクスケジューリング処理の概要を示すフローチャートである。
【０１３３】
まず、プロセッサ２００のうち、いずれかのプロセッサが備えるタスクスケジューラ２０１がタスクスケジューリングを行う（Ｓ２１０）。その結果、周期スケジューリング情報２２０が生成される。
【０１３４】
生成された周期スケジューリング情報２２０は、タスク情報分析部３０１へ送られる。
【０１３５】
タスク情報分析部３０１では、タスク比較部３１２が、周期スケジューリング情報２２０と、破綻パターン記憶部３０４に記憶されている破綻パターンとを比較する。
【０１３６】
タスク比較部３１２による比較の結果、送られてきた周期スケジューリング情報２２０と一致する破綻パターンが見つかると、タスク情報分析部３０１が有する指示部３１０はタスクスケジューラ２０１へスケジューリング変更指示２３０を通知する（Ｓ２１４でＹｅｓ）。
【０１３７】
スケジューリング変更指示２３０を受けたタスクスケジューラ２０１は、再度タスクスケジューリングを行う（Ｓ２１０）。
【０１３８】
一方、周期スケジューリング情報２２０と破綻パターンとが一致しなかった場合（Ｓ２１４でＮｏ）、タスク情報分析部３０１は、タスク周期カウンタ３０２にカウントを開始させると同時に、プロセッサ２００に対して通知された周期スケジューリング情報２２０に従ったスケジューリングによるタスクセットの実行を指示する（Ｓ２１６）。
【０１３９】
その後、タスク情報分析部３０１が有する指示部３１０は、タスクセットの実行が破綻した場合には、タスクスケジューラ２０１に対してスケジューリング変更指示２３０を通知する。
【０１４０】
スケジューリングの変更を指示された（Ｓ２１２でＹｅｓ）タスクスケジューラ２０１は、破綻したタスクセットについて再度スケジューリングを行う（Ｓ２１０）。
【０１４１】
図１０は、タスクスケジューラ２０１によるタスクスケジューリング処理の流れを示すフローチャートである。
【０１４２】
タスクスケジューラ２０１は、タスク情報分析部３０１が有する指示部３１０から、スケジューリング変更指示２３０を受けた場合（Ｓ２２０でＹｅｓ）、スケジューリング変更指示２３０に含まれる破綻タスク識別情報２３２に対応するタスクの実行順位を変更する。より具体的には、対応するタスクの実行順位を１つ下げる（Ｓ２２２）。
【０１４３】
一方、例えば、タスクが破綻することなく実行が終了した後に別のタスクセットを実行する場合であって、そのタスクセットを初めて実行する場合などでは、タスクスケジューラ２０１は、指示部３１０からスケジューリング変更の指示を受けることなく（Ｓ２２０でＮｏ）、従来技術を用いてスケジューリングを行う（Ｓ２２４）。
【０１４４】
この場合には、タスクスケジューラ２０１は、例えばＬＳＴ（Least Slack Time）等の従来から知られるスケジューリングアルゴリズムを用いて、タスクセットに含まれる全てのタスクの１周期分の処理がタスク周期２２２以内に完了するようにスケジューリングを行う（Ｓ２２４）。
【０１４５】
図１１は、実施の形態１におけるタスクセットの繰り返し実行の１回分の処理の流れを示すフローチャートである。
【０１４６】
タスク情報分析部３０１から起動されたタスク周期カウンタ３０２は、まず、自らのカウンタを前述のように初期化する（Ｓ２３０）。
【０１４７】
なお、タスク情報分析部３０１は、タスク周期カウンタ３０２を起動させるのと同時に、プロセッサ２００にタスク処理を開始させる（Ｓ２３２）が、タスク情報分析部３０１に代わってタスク周期カウンタ３０２がプロセッサ２００に処理の開始を指示してもよい。
【０１４８】
次に、タスク周期カウンタ３０２は、プロセッサ２００に処理の開始を指示してからのサイクル数をカウントする（Ｓ２３５）。
【０１４９】
タスク周期カウンタ３０２は、カウンタがオーバーフローするまでカウントを続ける（Ｓ２３４でＮｏ）。
【０１５０】
その後、カウント数がカウンタの最大値を超えた（すなわち、オーバーフローした）時に（Ｓ２３４でＹｅｓ）、破綻判定部３１４へカウンタがオーバーフローしたことを通知する（Ｓ２３６）。
【０１５１】
その後、通知を受けた破綻判定部３１４は、タスクの破綻判定処理を開始する（Ｓ２３８）。
【０１５２】
図１２は、実施の形態１におけるタスク破綻判定処理の流れを示すフローチャートである。
【０１５３】
破綻判定部３１４は、繰り返し実行の１回分の処理（すなわち、現在の１タスク周期２２２以内に実行されるべきタスク）としてプロセッサ２００の各々にスケジューリングされている全てのタスク（すなわち、現在実行しているタスクセットに含まれている全てのタスク）の完了が完了タスク記憶部３０３に記憶されているか否かを判定する（Ｓ２４０）。
【０１５４】
全てのタスクが完了している場合には（Ｓ２４０でＹｅｓ）、破綻判定部３１４は、現在の１タスク周期２２２での処理は破綻せずに完了したと判定する。また、必要であれば、分析結果バス１０６を介してプロセッサ２００の各々に対して次のタスクスケジューリングを要求する（Ｓ２１０、図１０のＳ２２０でＮｏ）。
【０１５５】
一方、完了タスク記憶部３０３に全てのタスクの完了通知が記録されていない場合には（Ｓ２４０でＮｏ）、破綻判定部３１４は、現在の１タスク周期２２２における処理が破綻したと判定し、タスク破綻処理を開始する（Ｓ２４８）。
【０１５６】
図１３は、実施の形態１におけるタスク破綻処理の流れを示すフローチャートである。
【０１５７】
破綻判定部３１４により、現在の１タスク周期２２２における処理が破綻したとみなされた場合に、タスク情報分析部３０１は、その周期スケジューリング情報２２０を破綻パターン記憶部３０４に記憶させる。
【０１５８】
同時に、タスク情報分析部３０１は、破綻パターン記憶部３０４を介して接続されている競合カウンタ３０５から現在の１タスク周期２２２に発生したタスクごとの競合回数のカウント値を取り出して、破綻パターン記憶部３０４に記憶させる（Ｓ２５０）。
【０１５９】
次に、タスク情報分析部３０１は、破綻したタスクを含むタスクセットを再度実行するため、分析結果バス１０６を介してプロセッサ２００の各々が備えるタスクスケジューラ２０１に、再度のタスクスケジューリングを要求する（Ｓ２１０、図１０のＳ２２０でＹｅｓ）。
【０１６０】
図１４は、実施の形態１における、プロセッサ２００によるタスク処理の流れを示すフローチャートである。
【０１６１】
前述の通り、タスク周期カウンタ３０２が起動されると同時に、タスク情報分析部３０１からプロセッサ２００へタスク処理の開始が指示される（または、タスクスケジューリング要求が取り下げられる）ことで、プロセッサ２００の各々はタスク処理を開始する（Ｓ２６０）。
【０１６２】
プロセッサ２００の各々は、スケジューリングの結果自らに割り当てられたタスク処理が完了していない間はタスクの実行を継続する（Ｓ２６２でＮｏ）。
【０１６３】
また、プロセッサ２００の各々は、スケジューリングの結果自らに割り当てられたタスクの実行が完了する度に（Ｓ２６２でＹｅｓ）、タスク情報バス１０５を介してタスク情報分析部３０１にタスクの完了を通知する（Ｓ２６４）。
【０１６４】
その後、タスク情報分析部３０１の備える完了タスク記憶部３０３が、タスクごとにタスク完了の有無を記憶するのは、前述の通りである。
【０１６５】
以上述べたように、本実施の形態によれば、タスクスケジューラ２０１から通知されたタスクの周期スケジューリング情報２２０と破綻パターン記憶部３０４に記憶された破綻パターンとをタスク情報分析部３０１が比較することにより、プロセッサ間のアクセス競合による破綻を未然に検出することができる。
【０１６６】
その結果、タスクスケジューラ２０１が、破綻するタスクの処理の順序を入れ替える再スケジューリングをすることにより、プロセッサ間のアクセス競合を回避し、タスク処理の破綻を回避することができる。
【０１６７】
（実施の形態２）
以下、本発明の実施の形態２におけるマルチプロセッサシステム１００について、図面を参照しながら説明する。
【０１６８】
図１５は本実施の形態におけるマルチプロセッサシステム１００の構成図である。
【０１６９】
本実施の形態において、実施の形態１と同様の部分については同一符号を付し、その詳細な説明は省略する。
【０１７０】
図１５に示される本実施の形態と、前述した実施の形態１との相違点は、本実施の形態におけるバスコントローラ１５０が調停部１０８を備えている点と、マルチプロセッサシステム１００が調停信号バス１０７を備えている点である。
【０１７１】
図１６は、本実施の形態における調停部１０８を備えるバスコントローラ１５０の構成図である。
【０１７２】
バスコントローラ１５０は、共有バス１０１を介したアクセスを制御するコントローラである。
【０１７３】
バスコントローラ１５０は、調停部１０８を有する。調停部１０８は、共有バスへのアクセス競合を調停する。
【０１７４】
図１６に示されるように、調停部１０８は、リソースアクセス調停部１１２と保持部１２０とを備える。
【０１７５】
リソースアクセス調停部１１２は、アクセス情報であるロック情報、共有領域情報、プロセッサの優先度情報を、保持部１２０に格納する。
【０１７６】
より具体的には、保持部１２０は、ロック情報保持部１０９、共有領域情報保持部１１０、優先度保持部１１１を有しており、それぞれにロック情報、共有領域情報、プロセッサの優先度情報を格納する。
【０１７７】
リソースアクセス調停部１１２は、格納されたそれぞれの情報を用いて、時間ごとの共有資源１０２へのアクセス調停を行う。
【０１７８】
リソースアクセス調停部１１２は、例えばラウンドロビン方式を用いてアクセス調停を行うことによりプロセッサごとの共有資源ウェイト回数を平均化することが考えられる。
【０１７９】
また、さらに優先度を加えた調停により、リソースアクセス調停部１１２によって、プロセッサ２００の各々の共有資源１０２へのアクセス優先度を制御することが考えられる。
【０１８０】
競合を調停した結果は調停信号バス１０７を通じて、スケジューラ管理装置３００へと伝達される。また、その時の競合回数及びタスク情報が、競合カウンタ３０５及び破綻パターン記憶部３０４にそれぞれ記憶される。
【０１８１】
すなわち、本実施の形態に係るマルチプロセッサシステム１００は、さらに、バスコントローラ１５０を有する共有バス１０１と、共有バス１０１を介して複数のプロセッサが情報を書き込む共有資源１０２とを備えている。
【０１８２】
また、バスコントローラ１５０は、複数のプロセッサの各々で実行され、かつ、共有資源１０２に書き込みを行う時間が重なっている２以上の競合タスクのタスク識別情報を保持する保持部１２０を有している。
【０１８３】
この構成により、指示部３１０は、タスク実行順序の変更の指示に、破綻タスクであり、かつ、保持部１２０に保持されている競合タスクのタスク識別情報を含めることができる。
【０１８４】
その結果、再スケジューリングにより競合が解消し、破綻を回避できる可能性が高まる。競合により破綻した場合には、タスクの実行順序を入れ替えることで、共有資源１０２へのアクセスのタイミングをずらすことができるためである。
【０１８５】
なお、共有資源１０２は、例えば、共有メモリ及び入出力インタフェース等の少なくとも１つであると考えられる。
【０１８６】
なお、リソースアクセス調停部１１２は調停信号バス１０７を介して、アクセス競合が発生していないことを示すアイドル情報をスケジューラ管理装置３００へ伝達することができる。これにより、スケジューラ管理装置３００では、タスクセットの実行時におけるリソース競合およびアイドル状況を把握することができる。
【０１８７】
その結果、スケジューラ管理装置３００は、優先度およびアクセスタイミングの調整によるアクセス競合緩和、アイドル時におけるペンディングしていたタスクの積極的なスケジューリングなどを実施することができる。
【０１８８】
以下、より詳細に説明する。
【０１８９】
図１７は、本実施の形態におけるバスロック発生時のバスロックアクセス調停処理の流れを示すフローチャートである。
【０１９０】
調停部１０８は、共有資源１０２へのアクセス（例えば、共有メモリへの書き込み）を開始したいプロセッサ２００からバスロックの要求を受けると（Ｓ３１０）、保持部１２０が備えるロック情報保持部１０９を確認し（Ｓ３１２）、共有バス１０１が既にロックされているか否かを判定する（Ｓ３１４）。
【０１９１】
判定の結果、まだロックされていなければ（Ｓ３１４でＮｏ）、調停部１０８は他のプロセッサから共有バス１０１へのアクセスを排除するためのロック情報をロック情報保持部１０９へ格納し、バスロックを要求したプロセッサ２００に処理を継続させる（Ｓ３１６）。
【０１９２】
一方、既にロックされていた場合には（Ｓ３１４でＹｅｓ）、調停部１０８はタスク情報分析部３０１へバスロック競合の発生を通知する（Ｓ３１８）。
【０１９３】
通知を受けたタスク情報分析部３０１は、共有バス１０１へのアクセスの競合により実行が中断するタスクのタスク情報を破綻パターン記憶部３０４へ記憶させる。さらに、通知を受ける度に、競合カウンタ３０５をカウントアップし、競合回数をカウントする（Ｓ３２０）。
【０１９４】
その後、調停部１０８は、ロック情報保持部１０９から共有バス１０１に対するロック情報が削除されるまで、プロセッサ２００に含まれるプロセッサのうち、共有バス１０１に対するアクセス権を最初に獲得した（最初にバスロック要求を出した）プロセッサ以外のプロセッサの処理を中断させる（Ｓ３２２）。
【０１９５】
以上述べた実施の形態により、タスク情報分析部３０１は、タスクの実行の破綻した原因が共有資源１０２へのアクセス競合によるものか否かを知ることができる。また、その結果を再スケジューリングに利用することができる。
【０１９６】
例えば、前述のように、タスク情報分析部３０１が、破綻タスクであり、かつ、破綻の原因がアクセス競合によるタスクを特定し、指示部３１０は特定されたタスクの実行順序を変更するようにタスクスケジューラ２０１へ指示することが考えられる。
【０１９７】
タスク処理の破綻する理由がアクセス競合によるものであれば、そのタスクの実行順序を変更することにより、競合が解消し、破綻を回避できる可能性が高いからである。
【０１９８】
すなわち、実施の形態１においては、タスク情報分析部３０１は、破綻したか否かというプロセッサ側の情報をもちいてスケジューリングを行うが、本実施の形態においては、バス側の競合情報も併せて用いたスケジューリングを行うことで、より競合を解消できる可能性の高いスケジューリングが可能となる。
【０１９９】
（実施の形態３）
以下、本発明の実施の形態３における、マルチプロセッサシステム１００を備えるシステムＬＳＩ、及び、テジタルテレビについて、図面を参照しながら説明する。
【０２００】
図１８は、本実施の形態における、マルチプロセッサシステム１００を備えるシステムＬＳＩ４００の構成図である。
【０２０１】
システムＬＳＩ４００は、例えば、デジタルテレビ等に用いられ、複数の構成部を１個のチップの上に集積して製造された超多機能ＬＳＩである。具体的には、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、マイクロプロセッサ等を含んで構成されている。ＲＡＭに記憶されているコンピュータプログラムをマイクロプロセッサが実行することにより、システムＬＳＩ４００は、その機能を達成する。
【０２０２】
なお、図１８におけるマルチプロセッサシステム１００は、例えば、実施の形態１または実施の形態２で述べたマルチプロセッサシステム１００と同一の構成を有してもよい。
【０２０３】
図１８に示されるように、マルチプロセッサシステム１００は、システムバス４０１と接続されている。また、システムバス４０１には、外部データ入出力部４０２、外部記憶装置接続部４０３及び外部制御機器接続部４０４が接続されている。
【０２０４】
図１９は、本実施の形態におけるシステムＬＳＩ４００を用いたデジタルテレビ５００の構成図である。
【０２０５】
図１９に示されるように、本実施の形態におけるマルチプロセッサシステム１００を用いたシステムＬＳＩ４００に、リモートコントローラーなどの外部制御機器５０１、ディスクドライブなどの外部記憶装置５０２、放送データの受信装置５０３、テレビ用プラズマパネル又は液晶パネルなどの映像出力装置５０４及びスピーカーなどの音声出力装置５０５を接続することにより、デジタルテレビ５００を構成している。
【０２０６】
その結果、図１９に示されるデジタルテレビ５００へマルチプロセッサシステム１００を適用することが可能となる。
【０２０７】
すなわち、本実施の形態に係るシステムＬＳＩ４００は、複数のタスクからなるタスクセットを繰り返し実行するシステムＬＳＩ４００であって、マルチプロセッサシステム１００と、マルチプロセッサシステム１００とシステムバスを介してそれぞれ接続されている外部データ入出力部４０２、外部記憶装置接続部４０３、及び、外部制御機器接続部４０４とを備えている。
【０２０８】
マルチプロセッサシステム１００が備えるプロセッサ２００の各々は、タスクスケジューラ２０１を備えている。
【０２０９】
マルチプロセッサシステム１００は、複数のタスクスケジューラ２０１の少なくとも１つにタスク実行順序の変更を指示する指示部３１０を有するスケジューラ管理装置３００を備えている。
【０２１０】
複数のタスクスケジューラ２０１の各々は、指示部３１０から指示を受けると、対応するプロセッサ２００の各々のタスク実行順序を変更する。
【０２１１】
なお、上記実施の形態１〜２において、タスク情報分析部３０１が備える指示部３１０からの再スケジューリングの指示に対し、タスクスケジューラ２０１はタスクの実行順序を変更することによる再スケジューリングを行うことを述べたが、他の方法で再スケジューリングを行ってもよい。
【０２１２】
例えば、図７に示されるように、タスクＡ３３１が出来高保証の場合、このタスクセットからタスクＡ３３１の処理を省き、タスクＢ３３２及びタスクＣ３２１をタスク周期２２２以内に実行する新たなタスクセットとするスケジューリングも考えられる。
【０２１３】
または、図８に示されるように、タスクセットの１タスク周期に十分な時間が確保できる場合には、タスクＡ３３１及びタスクＢ３３２の実行開始時間を遅らせ、それに伴ってタスク周期を延ばすことによって、タスクＡ３３１とタスクＣ３２１との競合を回避するスケジューリングも考えられる。
【０２１４】
なお、上記実施の形態１〜３に係るマルチプロセッサシステム１００に含まれる各処理部は典型的には集積回路であるＬＳＩとして実現される。これらは個別に１チップ化されてもよいし、一部又はすべてを含むように１チップ化されてもよい。
【０２１５】
ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
【０２１６】
また、集積回路化はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後にプログラムすることが可能なＦＰＧＡ（Field Programmable Gate Array）、又はＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
【０２１７】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて各処理部の集積化を行ってもよい。
【０２１８】
また、本発明の実施の形態１〜３に係る、マルチプロセッサシステム１００の機能の一部又は全てを、ＣＰＵ等のプロセッサがプログラムを実行することにより実現してもよい。
【０２１９】
さらに、本発明は上記プログラムであってもよいし、上記プログラムが記録された記録媒体であってもよい。また、上記プログラムは、インターネット等の伝送媒体を介して流通させることができるのは言うまでもない。
【０２２０】
また、上記実施の形態１〜３に係る、マルチプロセッサシステム１００、及びその変形例の機能のうち少なくとも一部を組み合わせてもよい。
【０２２１】
また、上記で用いた数字は、すべて本発明を具体的に説明するために例示するものであり、本発明は例示された数字に制限されない。例えば、マルチプロセッサシステム１００が備えるプロセッサの数は３個以上の任意の数であってもよい。
【０２２２】
また、構成要素間の接続関係は、本発明を具体的に説明するために例示するものであり、本発明の機能を実現する接続関係はこれに限定されない。
【０２２３】
さらに、本発明の主旨を逸脱しない限り、実施の形態１〜３に対して当業者が思いつく範囲内の変更を施した各種変形例も本発明に含まれる。
【産業上の利用可能性】
【０２２４】
本発明は、コンピュータ組み込みシステムなどに用いられるマルチプロセッサシステムのリアルタイム処理性能保証において有用である。
【符号の説明】
【０２２５】
１００  マルチプロセッサシステム
１０１  共有バス
１０２  共有資源（メモリ）
１０３  バスアクセス
１０４  アクセス競合バス
１０５  タスク情報バス
１０６  分析結果バス
１０７  調停信号バス
１０８  調停部
１０９  ロック情報保持部
１１０  共有領域情報保持部
１１１  優先度保持部
１１２  リソースアクセス調停部
１２０  保持部
１５０  バスコントローラ
２００  プロセッサ
２０１  タスクスケジューラ
２０２  タイムカウンタ
２０３  タスク切替器
２０４  タスクコンテキスト
２０５  演算ユニット
２０６  タスク実行時間残量
２０８  タスクコンテキスト接続バス
２０９  演算ユニット接続バス
２２０  周期スケジューリング情報
２２２  タスク周期
２２４  プロセッサ０の実行順序
２２６  プロセッサ１の実行順序
２３０  スケジューリング変更指示
２３２  破綻タスク識別情報
３００  スケジューラ管理装置
３０１  タスク情報分析部
３０２  タスク周期カウンタ
３０３  完了タスク記憶部
３０４  破綻パターン記憶部
３０５  競合カウンタ
３０６  記憶許可情報保持部
３１０  指示部
３１２  タスク比較部
３１４  破綻判定部
３２０  プロセッサ０のタスク処理
３２１  タスクＣ
３３０  プロセッサ１のタスク処理
３３１  タスクＡ
３３２  タスクＢ
４００  システムＬＳＩ
４０１  システムバス
４０２  外部データ入出力部
４０３  外部記憶装置接続部
４０４  外部制御機器接続部
５００  デジタルテレビ
５０１  外部制御機器
５０２  外部記憶装置
５０３  放送データの受信装置
５０４  映像出力装置
５０５  音声出力装置
【図１】
2012001835.tif 000003
【図２】
2012001835.tif 000004
【図３】
2012001835.tif 000005
【図４】
2012001835.tif 000006
【図５】
2012001835.tif 000007
【図６】
2012001835.tif 000008
【図７】
2012001835.tif 000009
【図８】
2012001835.tif 000010
【図９】
2012001835.tif 000011
【図１０】
2012001835.tif 000012
【図１１】
2012001835.tif 000013
【図１２】
2012001835.tif 000014
【図１３】
2012001835.tif 000015
【図１４】
2012001835.tif 000016
【図１５】
2012001835.tif 000017
【図１６】
2012001835.tif 000018
【図１７】
2012001835.tif 000019
【図１８】
2012001835.tif 000020
【図１９】
2012001835.tif 000021
【図２０】
2012001835.tif 000022
【図２１】
2012001835.tif 000023
【手続補正書】
【提出日】平成23年10月26日(2011.10.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のタスクからなるタスクセットを繰り返し実行するマルチプロセッサシステムであって、
前記マルチプロセッサシステムが備える複数のプロセッサの各々は、前記タスクセットの繰り返し実行の１周期として定められたタスク周期以内に前記複数のプロセッサで実行されるべき前記タスクセットに含まれるタスクのタスク実行順序と各前記タスクを実行するプロセッサとを決定するタスクスケジューラを備え、
前記マルチプロセッサシステムは、前記複数のタスクスケジューラの少なくとも１つに前記タスク実行順序の変更を指示する指示部を有するスケジューラ管理装置を備えており、
前記複数のタスクスケジューラの各々は、前記指示部から前記指示を受けると、前記複数のプロセッサの前記タスク実行順序を変更する
マルチプロセッサシステム。
【請求項２】
前記スケジューラ管理装置は、さらに、タスク比較部と、破綻パターン記憶部とを備えており、
前記破綻パターン記憶部は、前記タスクセットの繰り返し実行の１回分の処理であるタスクセット処理が複数プロセッサ間のアクセス競合に起因して前記タスク周期以内に完了しないタスクセットに含まれるタスクのタスク実行順序、各前記タスクを実行するプロセッサのプロセッサＩＤ及び前記タスク周期を含む情報を破綻パターンとして１以上記憶し、
前記複数のタスクスケジューラのうちの第１のタスクスケジューラは、前記タスクセットに含まれるタスクのタスク実行順序、各前記タスクを実行するプロセッサのプロセッサＩＤ及び前記タスク周期を含む周期スケジューリング情報を前記タスク比較部に通知し、
前記タスク比較部は、通知された前記周期スケジューリング情報と前記破綻パターンとを比較することにより一致するか否かを判定し、
一致する前記破綻パターンがある場合には、前記指示部は前記複数のタスクスケジューラの少なくとも１つに前記周期スケジューリング情報に含まれるタスク実行順序の変更を指示する
請求項１に記載のマルチプロセッサシステム。
【請求項３】
前記スケジューラ管理装置は、前記タスク周期内に前記タスクセットの繰り返し実行の１回分の処理であるタスクセット処理が完了したか否かを判定し、
前記指示部は、前記タスク周期内に前記タスクセット処理が完了していないと判定された場合に、前記タスク実行順序の変更を指示する
請求項１に記載のマルチプロセッサシステム。
【請求項４】
前記スケジューラ管理装置は、さらに、タスク周期カウンタと、完了タスク記憶部と、破綻判定部とを備えており、
前記複数のプロセッサの各々は、前記繰り返し実行の１回分の処理であるタスクセット処理が完了したタスクのタスク識別情報を前記スケジューラ管理装置へ通知し、
前記完了タスク記憶部は、通知された前記タスクセット処理が完了したタスクのタスク識別情報を記憶し、
前記タスク周期カウンタは、前記複数のプロセッサにより前記タスクセットの実行を開始してからのサイクル数をカウントし、
前記破綻判定部は、前記タスクセットに含まれているタスクのうち、前記サイクル数が前記タスク周期を超えた時点で前記完了タスク記憶部に記憶されていないタスクである破綻タスクがあるか否かを判定し、
判定の結果、前記破綻タスクが１以上あった場合には、前記指示部は前記複数のタスクスケジューラのうち少なくとも１つに前記タスク実行順序の変更を指示する
請求項１に記載のマルチプロセッサシステム。
【請求項５】
前記タスク実行順序の変更の指示には、前記１以上の破綻タスクのタスク識別情報が含まれており、
前記指示を受けたタスクスケジューラは、当該タスク識別情報に対応するタスクを実行するプロセッサが実行する他のタスクよりも、前記タスク識別情報に対応するタスクの実行順位が後になるように、前記タスク実行順序を変更する
請求項４に記載のマルチプロセッサシステム。
【請求項６】
前記マルチプロセッサシステムは、さらに、バスコントローラを有する共有バスと、前記共有バスを介して前記複数のプロセッサが情報を書き込む共有資源とを備え、
前記バスコントローラは、前記複数のプロセッサの各々で実行され、前記共有資源に書き込みを行う時間が重なっている２以上の競合タスクのタスク識別情報を保持する保持部を有しており、
前記指示部は、前記タスク実行順序の変更の指示に、前記破綻タスクであり、かつ、前記保持部に保持されている前記競合タスクのタスク識別情報を含める
請求項５に記載のマルチプロセッサシステム。
【請求項７】
前記共有資源は共有メモリ及び入出力インタフェースのいずれかである
請求項６に記載のマルチプロセッサシステム。
【請求項８】
前記スケジューラ管理装置は、さらに、破綻パターン記憶部とタスク比較部とを備えており、
実行されたタスクセットに破綻タスクが含まれると前記破綻判定部によって判定された場合に、前記スケジューラ管理装置は、当該タスクセットに含まれるタスクのタスク実行順序、各前記タスクを実行するプロセッサのプロセッサＩＤ及び前記タスク周期を含む情報を破綻パターンとして前記破綻パターン記憶部に記憶させ、
前記複数のタスクスケジューラのうちの第１のタスクスケジューラは、これから実行されるタスクセットに含まれるタスクのタスク実行順序、各前記タスクを実行するプロセッサのプロセッサＩＤ及び前記タスク周期を含む周期スケジューリング情報を前記タスク比較部に通知し、
前記タスク比較部は、通知された前記周期スケジューリング情報と前記破綻パターンとを比較することにより一致するか否かを判定し、
一致する前記破綻パターンがある場合には、前記指示部は前記複数のタスクスケジューラの少なくとも１つに前記周期スケジューリング情報に含まれる前記タスク実行順序の変更を指示する
請求項４に記載のマルチプロセッサシステム。
【請求項９】
前記タスク周期カウンタはレジスタである
請求項４に記載のマルチプロセッサシステム。
【請求項１０】
複数のタスクからなるタスクセットを繰り返し実行するシステムＬＳＩであって、
前記システムＬＳＩは、マルチプロセッサシステムと、前記マルチプロセッサシステムとシステムバスを介してそれぞれ接続されている外部データ入出力部、外部記憶装置接続部、及び、外部制御機器接続部とを備えており、
前記マルチプロセッサシステムが備える複数のプロセッサの各々は、前記タスクセットの繰り返し実行の１周期として定められたタスク周期以内に前記複数のプロセッサで実行されるべき前記タスクセットに含まれるタスクのタスク実行順序と各前記タスクを実行するプロセッサとを決定するタスクスケジューラを備え、
前記マルチプロセッサシステムは、前記複数のタスクスケジューラの少なくとも１つに前記タスク実行順序の変更を指示する指示部を有するスケジューラ管理装置を備えており、
前記複数のタスクスケジューラの各々は、前記指示部から前記指示を受けると、前記複数のプロセッサの前記タスク実行順序を変更する
システムＬＳＩ。
【請求項１１】
請求項１０に記載のシステムＬＳＩを備えるデジタルテレビ。
【請求項１２】
前記指示部は、前記複数のタスクスケジューラの少なくとも１つに、前記タスク実行順序の変更を含むスケジューリング変更を指示し、
前記複数のタスクスケジューラの各々は、前記指示部から前記スケジューリング変更の指示を受けると、前記複数のプロセッサのタスク実行時間残量を変更する
請求項１に記載のマルチプロセッサシステム。
【請求項１３】
前記複数のプロセッサの各々は、タスク実行時間残量を前記タスクスケジューラに送信するタイムカウンタを有し、
前記指示部は、前記複数のタスクスケジューラの少なくとも１つに、前記タスク実行順序の変更を含むスケジューリング変更を指示し、
前記複数のタスクスケジューラの各々は、前記指示部から前記スケジューリング変更の指示を受けると、前記タイムカウンタの前記タスク実行時間残量を変更する
請求項１に記載のマルチプロセッサシステム。
【国際調査報告】
2012001835.tif 000024
2012001835.tif 000025
2012001835.tif 000026
2012001835.tif 000027