(57)【要約】【課題】メモリ量の増加を抑制したマルチプロセッサシステム、マルチプロセッサの制御方法およびマルチプロセッサの制御方法のプログラムを提供すること。【解決手段】本発明にかかるマルチプロセッサシステムは、複数のプロセッサと、複数のプロセッサが実行するタスクの実行コード、及びアイドル時に実行するアイドル状態実行コードを保持した共通記憶部とを有する。複数のプロセッサは、それぞれのプロセッサ毎に異なる複数のタスクを、それぞれのタスクの実行コードを用いて実行した実行情報、変数及び算出結果をそれぞれ格納するタスク実行ブロックと、実行時間及びアイドルタイムを算出する時間算出部とを有する。実行時間及びアイドルタイムに基づいてそれぞれのプロセッサの負荷を算出し、タスク実行ブロックの有する実行情報を移動することによりタスクを移動させる制御部とを有する。【選択図】図４
2011233057.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサと、
前記複数のプロセッサが実行するタスクの実行コード、及びアイドル時に実行するアイドル状態実行コードを保持した共通記憶部とを有し、
前記複数のプロセッサは、
それぞれの前記プロセッサ毎に異なる複数の前記タスクを、それぞれの前記タスクの実行コードを用いて実行した実行情報、変数及び算出結果をそれぞれ格納するタスク実行ブロックと、
前記複数のプロセッサが前記タスクの実行コードを実行した時間である実行時間及び前記アイドル状態の時間であるアイドルタイムを算出する時間算出部とを有し、
前記複数のプロセッサの少なくとも１つは、
前記時間算出部の算出した実行時間及びアイドルタイムに基づいてそれぞれの前記プロセッサの負荷を算出し、負荷の高いものから負荷の低いものへ、前記タスク実行ブロックの有する前記実行情報を移動することにより前記タスクを移動させる制御部とを有するマルチプロセッサシステム。
【請求項２】
前記時間算出部は、
一定時間ごとに、前記実行時間及び前記アイドルタイムを算出し、
前記制御部は、前記一定時間のうちの前記実行時間の占める割合により、前記プロセッサの負荷を算出する請求項１記載のマルチプロセッサシステム。
【請求項３】
前記制御部は、
前記プロセッサを移動させた場合に、前記アイドルタイム及び前記実行時間から予測される前記プロセッサのアイドルタイムである予測アイドルタイムを算出する予測アイドルタイム算出部と、
前記各プロセッサの前記予測アイドルタイムの差が予め定められた閾値以下になるよう前記タスクを移動するタスク移動部とを有する請求項１又は２記載のマルチプロセッサシステム。
【請求項４】
前記複数のプロセッサのうち１つのみが前記制御部を有する請求項１乃至３のいずれか１項記載のマルチプロセッサシステム。
【請求項５】
前記予測アイドルタイム算出部は、
「前記プロセッサのアイドルタイム−他のプロセッサから移動するタスクの前記実行時間」と、「前記プロセッサのアイドルタイム＋当該プロセッサから移動させるタスクの前記実行時間」とを算出することにより、前記予測アイドルタイムを算出する請求項３記載のマルチプロセッサシステム。
【請求項６】
前記制御部は、一定時間ごとに前記タスクを移動させるタスク移動処理を実行する請求項１乃至５のいずれか１項記載のマルチプロセッサシステム。
【請求項７】
複数のプロセッサが実行するタスクの実行コード、及びアイドル時に実行するアイドル状態実行コードを共通記憶部に保持し、
それぞれの前記プロセッサ毎に異なる複数の前記タスクを、それぞれの前記タスクの実行コードを用いて実行した実行情報、変数及び算出結果をそれぞれ格納し、
前記複数のプロセッサが前記タスクの実行コードを実行した時間である実行時間及び前記アイドル状態の時間であるアイドルタイムを算出し、
前記複数のプロセッサの少なくとも１つが、前記実行時間及びアイドルタイムに基づいてそれぞれの前記プロセッサの負荷を算出し、負荷の高いものから負荷の低いものへ、前記実行情報を移動することにより前記タスクを移動させるマルチプロセッサシステムの制御方法。
【請求項８】
前記実行時間及びアイドルタイムを算出する際は、
一定時間ごと、前記実行時間及び前記アイドルタイムを算出し、
前記一定時間のうちの前記実行時間の占める割合により、前記プロセッサの負荷を算出する請求項７記載のマルチプロセッサシステムの制御方法。
【請求項９】
前記プロセッサを移動させた場合に、前記アイドルタイム及び前記実行時間から予測される前記プロセッサのアイドルタイムである予測アイドルタイムを算出し、
前記各プロセッサの前記予測アイドルタイムの差が予め定められた閾値以下になるよう前記タスクを移動する請求項７又は８記載のマルチプロセッサシステムの制御方法。
【請求項１０】
前記複数のプロセッサのうち１のみが前記プロセッサを移動させる処理を行う請求項７乃至９のいずれか１項記載のマルチプロセッサシステムの制御方法。
【請求項１１】
前記予測アイドルタイムを算出する際、
「前記プロセッサのアイドルタイム＋他のプロセッサから移動するタスクの前記実行時間」と、「前記プロセッサのアイドルタイム−当該プロセッサから移動させるタスクの前記実行時間」とを算出することにより、前記予測アイドルタイムを算出する請求項９記載のマルチプロセッサシステムの制御方法。
【請求項１２】
前記タスクを移動させるタスク移動処理を、一定時間ごとに実行する請求項７乃至１１のいずれか１項記載のマルチプロセッサシステムの制御方法。
【請求項１３】
複数のプロセッサが実行するタスクの実行コード、及びアイドル時に実行するアイドル状態実行コードを共通記憶部に保持させる共通記憶処理と、
それぞれの前記プロセッサ毎に異なる複数の前記タスクを、それぞれの前記タスクの実行コードを用いて実行した実行情報、変数及び算出結果をそれぞれ格納させるタスク実行処理と、
前記複数のプロセッサが前記タスクの実行コードを実行した時間である実行時間及び前記アイドル状態の時間であるアイドルタイムを算出させる時間算出処理とをコンピュータに実行させ、
前記時間算出処理の算出した実行時間及びアイドルタイムに基づいてそれぞれの前記プロセッサの負荷を算出し、負荷の高いものから負荷の低いものへ、前記実行情報を移動することにより前記タスクを移動させるタスク移動処理とを前記複数のプロセッサの少なくとも１つに実行させるマルチプロセッサシステムの制御プログラム。
【請求項１４】
前記時間算出処理を行う際、
一定時間ごと、前記実行時間及び前記アイドルタイムを算出させ、
前記タスク移動処理は、前記一定時間のうちの前記実行時間の占める割合により、前記プロセッサの負荷を算出する処理を実行させる請求項１３記載のマルチプロセッサシステムの制御プログラム。
【請求項１５】
前記タスク移動処理は、
前記プロセッサを移動させた場合に、前記アイドルタイム及び前記実行時間から予測される前記プロセッサのアイドルタイムである予測アイドルタイムを算出させる予測アイドルタイム算出処理と、
前記各プロセッサの前記予測アイドルタイムの差が予め定められた閾値以下になるよう前記タスクを移動させるタスク移動処理とを実行させる請求項１３又は１４記載のマルチプロセッサシステムの制御プログラム。
【請求項１６】
前記複数のプロセッサのうち１のみが前記タスク移動処理を実行する請求項１３乃至１５のいずれか１項記載のマルチプロセッサシステムの制御プログラム。
【請求項１７】
前記予測アイドルタイムを算出する処理は、
「前記プロセッサのアイドルタイム＋他のプロセッサから移動するタスクの前記実行時間」と、「前記プロセッサのアイドルタイム−当該プロセッサから移動させるタスクの前記実行時間」とを算出することにより、前記予測アイドルタイムを算出させる処理を実行させる請求項１５記載のマルチプロセッサシステムの制御プログラム。
【請求項１８】
前記タスクを移動させるタスク移動処理を、一定時間ごとに実行させる請求項１３乃至１７のいずれか１項記載のマルチプロセッサシステムの制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマルチプロセッサシステム、マルチプロセッサの制御方法およびマルチプロセッサの制御方法のプログラムに関し、特にプロセッサ間でタスクを移動するマルチプロセッサシステム、マルチプロセッサの制御方法およびマルチプロセッサの制御方法のプログラムに関する。
【背景技術】
【０００２】
近年、組み込みシステムの機能が複雑になり、機能単位で処理を分割してマルチコアプロセッサ上に配置し、リアルタイムＯＳ（Operating System）で制御するアプリケーションの需要が高まってきた。その流れの中で、効率よくアプリケーションを稼動させるためには、タスクを実行するプロセッサ毎の負荷を平準化する必要がある。したがって、マルチコアプロセッサ内に実装されたＣＰＵ（Central Processing Unit）上のタスクを、他のＣＰＵに変更する動作（以降、マイグレーション動作という。）を効率良く行なう必要性が高まってきた。
【０００３】
例えば、複数のプロセッサにタスクを配置する技術が、特許文献１に記載されている。特許文献１に記載の技術は、複数のＣＰＵに動的にタスクを配置することを目的としている。
【０００４】
図１３は、特許文献１のマルチプロセッサシステムの構成を示す図である。複数のＣＰＵ１００〜ＣＰＵ１０ｎを有し、それぞれ同一の構成であり、ＯＳ上でアプリケーションソフトウエアが実行されるように構成され、更にＯＳとアプリケーションソフトウエアの中間として、ミドルウエアを有する。
【０００５】
図１４は、図１３に示すマルチプロセッサシステムの１つのＣＰＵの構成を示す図である。ミドルウエアは、後に説明するエージェント２０１、関数リストテーブル２０２及びタスクマッピングテーブル２０３を構成している。図１５は、タスクマッピングテーブルを示す図である。さらに、複数のタスク５０１〜タスク５０ｎはアプリケーションソフトウエアで実現される。
【０００６】
従来のマルチプロセッサシステムでは、図１３に示すように、全てのＣＰＵ５０１〜ＣＰＵ５０ｎに対して同じロードモジュールがロードされ、一様に全タスクが生成される。
【０００７】
さらに、メッセージ送信先ＣＰＵを動的に切替えることで、ＣＰＵ単位で動作するタスクを変更している。したがってメッセージ送信を行う際、対象タスクが動作しているＣＰＵを知る必要がある。
【０００８】
特許文献１のマルチプロセッサシステムでは、上記のタスクマッピングテーブル２０３を使用して、タスク動作情報を管理する。これにより、対象タスクが動作しているＣＰＵを判断することができる。
【０００９】
以下に、特許文献１に記載の機能を説明する。
［タスク走行時間算出機能］
タスク走行時間管理部２１０において、自ＣＰＵ内の各タスク走行時間を算出し、タスク走行時間管理部２１０内のタスク走行時間管理テーブルで管理する。
【００１０】
［タスク配置の動的切替機能］
エージェントは、タイマ管理部２１２において、開始された周期タイマのタイムアウトを検出するとホストＣＰＵとして動作し、メッセージ送信部２０７よりＣＰＵ間通信を用いて他ＣＰＵに対してＣＰＵ使用率報告要求を送信する。ここで、エージェントとは、メッセージ送信機能と共有メモリアクセス機能を司る処理部のことをいう。
【００１１】
メッセージ受信部２０８によりＣＰＵ使用率報告要求を受信したエージェントは、メッセージ送信部２０７よりタスク走行時間管理テーブル情報をＣＰＵ使用率報告メッセージとして要求元エージェントに送信する。
【００１２】
さらに、メッセージ受信部２０８において、ＣＰＵ使用率報告を受信したエージェントは、タスク配置切替部２１１で各タスクの走行時間を元に、タスク配置のばらつきを算出し、タスクマッピングテーブル３を更新する。
【００１３】
更新されたタスクマッピングテーブル３は、メッセージ送信部２０７より各ＣＰＵのエージェントにＣＰＵ間通信を用いて送信する。
【００１４】
更新されたタスクマッピングテーブルを受信したエージェントは、タスク配置切替部２１１でＣＰＵ切替時の追い越し制御を行いながらタスク配置を切り替える。
【００１５】
［タスク再配置］
タスク再配置について説明する。図１６は、タスク再配置シーケンスを示す図である。まず、システム再開時（処理工程Ｐ１）に各ＣＰＵでＣＰＵのシリアル番号等から得られる個別のタイマ値をタイマ管理部で計算する（ステップＳ１）。この個別のタイマ値を設定し、個別にタイマ値を設定する（ステップＳ２）。個別のタイマ値は、例えば、ＣＰＵ１００〜ＣＰＵ１０２の順に１秒、２秒、３秒とする。
【００１６】
次に、個別タイマが最初にタイムアウトする（処理工程Ｐ２）と、最初にタイムアウトしたＣＰＵがホストＣＰＵとして動作する（ステップＳ３）。ＣＰＵ１００の個別タイマが最初にタイムアウトするので、ＣＰＵ１００がホストＣＰＵとして、ＣＰＵ１００のエージェント２００がＣＰＵ間通信を用いて他ＣＰＵ１０１、１０２に対してＣＰＵ使用率報告要求を送信する（ステップＳ４）。
【００１７】
次に、ＣＰＵ使用率報告要求を受信したＣＰＵ１０１、及びＣＰＵ１０２のエージェント２００は個別タイマを停止する（ステップＳ５）。ＣＰＵ１０１、及び１０２から計測していたＣＰＵ使用率をＣＰＵ間通信によりホストＣＰＵに報告する。システム再開時はＣＰＵ使用率を０％として報告する（ステップＳ６）。次に、ＣＰＵ使用率報告メッセージを受けたホストＣＰＵのエージェント２００では、ＣＰＵ使用率からシステム再開かＣＰＵリセット再開かを判断する（ステップＳ７）。システム再開時は全ＣＰＵからＣＰＵ使用率０％で報告される為、タスクマッピングテーブル２０３はデフォルトタスクマッピングテーブルを使用する。
【００１８】
また、ＣＰＵリセット再開時はＣＰＵ使用率が０％以外で報告される為、ＣＰＵ使用率報告メッセージで通知されたタスクマッピングテーブル３とＣＰＵ使用率を使用して、ＣＰＵ負荷率にばらつきがないかを判断し、タスクマッピングテーブルを作成、又は更新する。但し、ＣＰＵ障害時に備え意図的にＣＰＵ使用率を下げたＣＰＵについては対象外とする。
【００１９】
ホストＣＰＵのエージェント２００は、タスクマッピングテーブル２０３を更新すると、他ＣＰＵに対してＣＰＵ間通信を用いてタスクマッピングテーブル更新通知を送信する。これにより、タスクマッピングテーブル更新通知を受けた全てのＣＰＵのエージェント２００は、自ＣＰＵ内のタスクマッピングテーブル２０３を更新し、タスクマッピングテーブル２０３で示されたタスク配置に切り替える。ここで、全ＣＰＵはシステム共通に持つ周期タイマ（＝  基準タイマ値＋個別タイマ値）でタイマを開始する（ステップＳ８）。但し、基準タイマ値は各ＣＰＵに対して同一であり、個別タイマ値に対して十分に大きいタイマ値である。
【００２０】
以降は、周期タイマのタイムアウトを契機に同様に上記Ｓ１〜Ｓ７の手順を繰り返し、タスクマッピングテーブルを更新し、動的なタスク再配置を行う。したがって、ＣＰＵ上で動作するタスクを動的に切り替え、動的にＣＰＵ負荷分散し、ＣＰＵの使用率の均一化を図ることが可能となる。
【００２１】
図１７は、デフォルトマッピングによるタスク配置のＣＰＵ使用率を示す図である。デフォルトマッピングによるタスク配置のＣＰＵ使用率は、実施例として、ＣＰＵ１に関してタスクＡに対し２０％、タスクＢに対し２０％、ＣＰＵ２に関してタスクＣに対し１０％、タスクＤに対し５％、更にＣＰＵ３に関してタスクＥに対し５％、タスクＦに対し０％である。
【００２２】
このデフォルトマッピングの状態から、図１７に示した手順により、ＣＰＵ使用率からタスクを動的に配置する処理を行う。その結果として、ＣＰＵ１に関してタスクＡに対し２０％、ＣＰＵ２に関してタスクＢに対し２０％、更にＣＰＵ３に関してタスクＣに対し１０％、タスクＤに対し５％、タスクＥに対して５％、タスクＦに関して０％となる。ＣＰＵ１、ＣＰＵ２、ＣＰＵ３ともに使用率２０％ととなり、使用率が均一化する。
【００２３】
図１７Ａに示すように、上記の様に初期立ち上げ直後は、デフォルトマッピングによる配置のため、各ＣＰＵで使用率にばらつきが生じている。しかし、図１７Ｂに示すように、ＣＰＵ使用率報告によりホストＣＰＵがマッピング変更をすることにより、ＣＰＵの使用率が均一化される。
【先行技術文献】
【特許文献】
【００２４】
【特許文献１】特開２００３−２７１４０４号公報
【発明の概要】
【発明が解決しようとする課題】
【００２５】
特許文献１に記載の技術では、全てのプロセッサに対して同じロードモジュールをロードして、全てのタスクを生成し、各プロセッサが実行するタスクを切り替えることにより、タスクの配置を行う。したがって、あるプロセッサがあるタスクを実行すれば、当該タスクは、他のプロセッサでは、実行されないこととなる。すなわち、実行されないタスクであってもプロセッサに配置されてしまうため、その分のメモリが増加するという問題があった。また、マルチプロセッサに機能を追加する際も、当該機能を実現するための複数のタスクを全てのプロセッサにロードし、全てのプロセッサにおいて、複数のタスクを生成する必要がある。機能を追加する場合も、各プロセッサが実行するタスクを切り替えることによりタスクの配置を行い、あるプロセッサで実行されたタスクは他のプロセッサで実行されない。そのため、実行されないタスクのためにメモリが増加してしまうという問題があった。
【課題を解決するための手段】
【００２６】
本発明にかかるマルチプロセッサシステムは、複数のプロセッサと、複数のプロセッサが実行するタスクの実行コード、及びアイドル時に実行するアイドル状態実行コードを保持した共通記憶部とを有する。複数のプロセッサは、それぞれのプロセッサ毎に異なる複数のタスクを、それぞれのタスクの実行コードを用いて実行した実行情報、変数及び算出結果をそれぞれ格納するタスク実行ブロックと、複数のプロセッサがタスクの実行コードを実行した時間である実行時間及びアイドル状態の時間であるアイドルタイムを算出する時間算出部とを有する。複数のプロセッサの少なくとも１つは、時間算出部の算出した実行時間及びアイドルタイムに基づいてそれぞれのプロセッサの負荷を算出し、負荷の高いものから負荷の低いものへ、タスク実行ブロックの有する実行情報を移動することによりタスクを移動させる制御部とを有する。
【００２７】
本発明にかかるマルチプロセッサの制御方法は、複数のプロセッサが実行するタスクの実行コード、及びアイドル時に実行するアイドル状態実行コードを共通記憶部に保持し、それぞれのプロセッサ毎に異なる複数のタスクを、それぞれのタスクの実行コードを用いて実行した実行情報、変数及び算出結果をそれぞれ格納し、複数のプロセッサがタスクの実行コードを実行した時間である実行時間及びアイドル状態の時間であるアイドルタイムを算出し、複数のプロセッサの少なくとも１つが、実行時間及びアイドルタイムに基づいてそれぞれのプロセッサの負荷を算出し、負荷の高いものから負荷の低いものへ、実行情報を移動することによりタスクを移動させる。
【００２８】
本発明にかかるマルチプロセッサの制御方法のプログラムは、複数のプロセッサが実行するタスクの実行コード、及びアイドル時に実行するアイドル状態実行コードを共通記憶部に保持させる共通記憶処理と、複数のプロセッサが、それぞれのプロセッサ毎に異なる複数のタスクを、それぞれのタスクの実行コードを用いて実行した実行情報、変数及び算出結果をそれぞれ格納させるタスク実行処理と、複数のプロセッサがタスクの実行コードを実行した時間である実行時間及びアイドル状態の時間であるアイドルタイムを算出させる時間算出処理と、を実行させる。複数のプロセッサの少なくとも１つに、時間算出処理の算出した実行時間及びアイドルタイムに基づいてそれぞれのプロセッサの負荷を算出し、負荷の高いものから負荷の低いものへ、実行情報を移動することによりタスクを移動させるタスク移動処理を実行させる。
【００２９】
本発明においては、全てのプロセッサにタスクを生成することなく、タスクの実行情報、変数及び算出結果を移動先のプロセッサに移動させることにより、タスクを移動させることができる。
【発明の効果】
【００３０】
本発明によれば、メモリの増加を抑えたマルチプロセッサシステム、マルチプロセッサの制御方法及びマルチプロセッサの制御プログラムを提供することができる。
【図面の簡単な説明】
【００３１】
【図１】実施の形態１にかかるマルチプロセッサシステムを示す図である。
【図２】実施の形態１にかかるマルチプロセッサシステムのＣＰＵ１に配置するリアルタイムＯＳの構成を示す図である。
【図３】実施の形態１にかかるマルチプロセッサシステムのＣＰＵ１およびＣＰＵ２に、ＣＰＵ毎のリアルタイムＯＳの構成要素を配置したものを示す図である。
【図４】実施の形態１にかかる図３においてＣＰＵ１に存在するタスク２をＣＰＵ２にマイグレーションする動作を示す図である。
【図５】実施の形態１にかかる本実施の形態にかかるマイグレーション動作の概要を示すフローチャートである。
【図６】実施の形態１にかかるマイグレーションするタスクの決定方法のフローチャートを示す図である。
【図７】実施の形態１にかかる基準時間内におけるＣＰＵ１、ＣＰＵ２、ＣＰＵ３それぞれで実行されたタスク、アイドルハンドラの実行時間を示す表である。
【図８】実施の形態１にかかる表２は、ＣＰＵ１のタスクをＣＰＵ２に移動したときのＣＰＵ１とＣＰＵ２のアイドルハンドラの実行時間を、ＣＰＵ１上のそれぞれのタスクに対して算出した結果を示す表である。
【図９】実施の形態１にかかるＣＰＵ１上のタスクＢをＣＰＵ２に移動したときのＣＰＵ１、ＣＰＵ２、ＣＰＵ３それぞれで実行されたタスク、アイドルタイム、実行時間及び稼働率を示す表である。
【図１０】実施の形態１にかかるＣＰＵ３のタスクをＣＰＵ２に移動したときのＣＰＵ３及びＣＰＵ２のアイドルタイムを、ＣＰＵ３上のそれぞれのタスクに対して算出した表である。
【図１１】実施の形態１にかかるＣＰＵ３上のタスクＡ＿２をＣＰＵ２に移動したときのＣＰＵ１、ＣＰＵ２、ＣＰＵ３それぞれで実行されたタスク、アイドルタイム、実行時間及び稼働率を示す表である。
【図１２】実施の形態１にかかる図５のステップＳ３２の詳細を示す図である。
【図１３】従来のマルチプロセッサシステムの構成を示す図である。
【図１４】従来のマルチプロセッサシステムの１つのＣＰＵの構成を示す図である。
【図１５】従来のタスクマッピングテーブルを示す図である。
【図１６】従来のタスク再配置シーケンスを示す図である。
【図１７】従来のデフォルトマッピングによるタスク配置のＣＰＵ使用率を示す図である。
【発明を実施するための形態】
【００３２】
実施の形態１
以下、図面を参照して本発明の実施の形態について説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ（Central Processing Unit）、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。また、以下の図面に示す各装置の構成は、例えば記憶装置に読み込まれたプログラムをコンピュータ（ＰＣ（personal computer）や携帯端末装置等）上で実行することにより実現される。また、これらのプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（Random Access Memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００３３】
図１は、本実施の形態にかかるマルチプロセッサシステムを示す図である。本実施の形態にかかるマルチプロセッサシステムは、複数のプロセッサとしてのＣＰＵ１〜ＣＰＵｎ（ｎは１以上の自然数）と、複数のプロセッサが実行するタスクの実行コード、及びアイドル時に実行するアイドル状態実行コードを保持した共通記憶部としての全ＣＰＵ共通ＲＯＭ領域１０とを有する。
【００３４】
それぞれのＣＰＵは、全ＣＰＵ共通ＲＯＭ領域１０と、各ＣＰＵのＲＡＭ領域（ＣＰＵ１ＲＡＭ領域１１、ＣＰＵ２ＲＡＭ領域１２、ＣＰＵ３ＲＡＭ領域１３、ＣＰＵｎＲＡＭ領域１４）から構成される。
【００３５】
全ＣＰＵ共通ＲＯＭ領域１０は、どのＣＰＵからも同じアドレスで参照および実行できる領域である。ＣＰＵ１ＲＡＭ領域１１は、ＣＰＵ１に配置されているＲＡＭ領域であり、ＣＰＵ１以外からの参照、書き込みも可能である。ＣＰＵ２ＲＡＭ領域１２、ＣＰＵ３ＲＡＭ領域１３、及びＣＰＵｎＲＡＭ領域１４は、それぞれＣＰＵ１乃至ＣＰＵｎに配置されているＲＡＭ領域であり、ＣＰＵ１ＲＡＭ領域１１と同様に、他のＣＰＵからの参照及び書き込みも可能である。本実施の形態にかかるマルチプロセッサシステムは、ＲＯＭ領域が共通で、ＲＡＭ領域が全ＣＰＵからアクセス可能である。各ＣＰＵは、タスクを制御するためにリアルタイムＯＳを実装している。
【００３６】
本実施の形態にかかるＣＰＵについて、更に詳細に説明する。図２は、マルチプロセッサシステムのＣＰＵ１に配置するリアルタイムＯＳの構成を示す図である。リアルタイムＯＳ２７は、タスクを実行する処理を行うタスク実行管理部２０と、リアルタイムＯＳを実行するための実行コード２５と、リアルタイムＯＳの時間の管理を行う時間管理部２６と、複数のタスクＡ＿１〜タスクＡ＿ｎ、アイドルハンドラ３３とで構成される。
【００３７】
タスク実行管理部２０は、時間算出部としての自ＣＰＵタスク実行状態管理部２１と、制御部としての全ＣＰＵタスク実行状態管理部２２と、タスクスケジューリング管理部２３と、タスクレディキュー管理部２４とを有する。自ＣＰＵタスク実行状態管理部２１は、ＣＰＵ１がタスクの実行コードを実行した時間である実行時間及びアイドル状態の時間であるアイドルタイムを算出する。
【００３８】
全ＣＰＵタスク実行状態管理部２２は、時間算出部の算出した実行時間及びアイドルタイムに基づいて、それぞれのＣＰＵの負荷を算出する。そして、負荷の高いＣＰＵから負荷の低いＣＰＵへ、タスクを移動する。複数のＣＰＵの少なくとも１つは、全ＣＰＵタスク実行状態管理部２２を有する。全ＣＰＵタスク実行状態管理部２２を１つのＣＰＵのみが有する形態とすることで、よりメモリ量の増加を抑制することができる。本実施の形態では、ＣＰＵ１のみが全ＣＰＵタスク実行状態管理部２２を有する。
【００３９】
タスクレディキュー管理部２４は、実行可能になったタスクの順番を管理する。タスクスケジューリング管理部２３は、タスクレディキュー管理部２４が管理しているタスクのうち、最初に実行可能になったタスクに対してＣＰＵ使用権を与えることによってタスクを実行し、タスクレディキュー管理部２４で管理するタスクがなくなった場合は、タスクスケジューリング管理部２３はアイドルハンドラ３３を実行する。
【００４０】
リアルタイムＯＳ実行コード２５は、実際にリアルタイムＯＳを動作するためのプログラムコードである。
【００４１】
複数のタスクＡ＿１〜タスクＡ＿ｎは、それぞれタスク実行コード３０ｎ（ｎは、１以上の自然数）と、タスク実行ブロックとしてのタスク管理ブロック３１ｎ（ｎは、１以上の自然数）及びタスクスタック領域３２ｎ（ｎは、１以上の自然数）を有する。
【００４２】
タスク管理ブロック３１ｎ及びタスクスタック領域３２ｎは、タスクの実行コードを用いて実行した実行情報、変数及び算出結果をそれぞれ格納する。タスク管理ブロック３１ｎは、タスク状態が格納されている領域である。タスクレディキュー管理部２４は、管理対象にするか否かを判定するために、タスク管理ブロック３１ｎを参照する。
【００４３】
タスクスタック領域３２ｎは、タスク実行コンテキストと呼ばれる、タスクが実行中断したときにタスクの実行再開に必要なレジスタ情報が格納される領域である。
タスク実行コード３０ｎ（ｎは、１以上の自然数）は、タスクのプログラムコードである。
【００４４】
アイドルハンドラ３３は、アイドル状態、つまり実行すべきタスクが無い場合に実行されるハンドラで、アイドルハンドラ実行コード３３は、その際に実行されるプログラムコードである。
【００４５】
自ＣＰＵタスク実行状態管理部２１は、タスクＡ＿１〜タスクＡ＿ｎ、およびアイドルハンドラ３３の実行時間の集計を行う。当該集計動作は、ある一定時間ごと繰り返し行われ、自ＣＰＵタスク実行状態管理部２１は、自ＣＰＵの稼働状況として保持する。
【００４６】
全ＣＰＵタスク実行状態管理部２２は、ＣＰＵ１〜ＣＰＵｎの自ＣＰＵタスク実行状態管理部で集計した自ＣＰＵの稼働状況を取得する。全ＣＰＵタスク実行状態管理部２２は、一定時間のうちの前記実行時間の占める割合により、前記プロセッサの負荷を算出する。また、タスクを移動させる際は、タスク管理ブロック３１ｎ及びタスクスタック領域３２ｎの有する実行情報を移動することによりタスクを移動させ、マイグレーション動作を行う。
【００４７】
本実施の形態にかかるマルチプロセッサシステムは、タスクが実行されているＣＰＵの自ＣＰＵタスク実行状態管理部２１において、各ＣＰＵの実行時間を測定する。全ＣＰＵタスク実行状態管理部２２は、当該測定した値を元にＣＰＵの負荷率を算出し、当該算出結果より適切なタスクを負荷率に余裕があるＣＰＵに、タスクを移動させる。その際、移動させたいタスクのタスク管理ブロック、スタック領域のみを該当プロセッサに移動することでマイグレーションを行う。これにより、本実施の形態にかかるマルチプロセッサシステムは、全てのプロセッサに、全てのタスクを生成する必要がないため、使用するメモリ容量を抑えながら、マイグレーションを行うことができる。また、全てのプロセッサに全てのタスクを生成する必要がないため、機能を追加する際も、一部のプロセッサのみにタスクを生成すればよい。従って、メモリの増加を抑えつつより容易に機能を追加することができる。
【００４８】
さらに、全ＣＰＵタスク実行状態管理部２２は、タスクを移動させた場合に、アイドルタイム及び実行時間から予測されるプロセッサのアイドルタイムである、予測アイドルタイムを算出する。そして、各プロセッサの予測アイドルタイムの差が、予め定められた閾値以下になるようタスクを移動する。
【００４９】
予測アイドルタイムを算出する場合、「プロセッサのアイドルタイム−他のプロセッサから移動するタスクの実行時間」と、「プロセッサのアイドルタイム＋当該プロセッサから移動させるタスクの実行時間」とを算出する。そして、その算出結果を予測アイドルタイムとする。
【００５０】
これにより、それぞれのタスクを移動させた場合のアイドルタイムである予測アイドルタイムを算出することができる。それぞれのＣＰＵ毎に、それぞれのタスクを移動させた場合の予測アイドルタイムを算出し、どのタスクをどのＣＰＵに移動させることが適当であるか算出できるため、よりＣＰＵの負荷を均等にすることができる。
【００５１】
本実施の形態にかかるタスクの移動処理について、更に詳細に説明する。図３は、マルチプロセッサシステムのＣＰＵ１およびＣＰＵ２に、ＣＰＵ毎のリアルタイムＯＳの構成要素を配置したものを示す図である。
【００５２】
全ＣＰＵ共通ＲＯＭ領域１０は、リアルタイムＯＳ実行コード２５と、ＣＰＵ１に配置するタスク実行コード３０ｎ（ｎは、１以上の自然数）とＣＰＵ２に配置するタスク実行コード４０ｎ（ｎは、１以上の自然数）とアイドルハンドラ実行コード３３を配置する。
【００５３】
各ＣＰＵのＲＡＭ領域には、例えばＣＰＵ１ＲＡＭ領域１１は、時間管理部２６と、ＣＰＵ１で動作するタスクのタスク実行管理部２０と、タスク管理ブロック３１１〜３１ｎと、タスクスタック領域３２１〜３２ｎとを有する。
【００５４】
図４は、図３においてＣＰＵ１に存在するタスク２をＣＰＵ２にマイグレーションする動作を示す図である。ＣＰＵ１のタスク実行管理部２０は、一定の時間毎にＣＰＵ１で実行されたタスクの、タスク毎の実行時間及びアイドルタイムを算出する。また、一定時間毎に他のＣＰＵから、他のＣＰＵのタスク毎の実行時間及びアイドルタイムを受け取る。そして、ＣＰＵ毎のアイドルタイムを比較し、タスクの移動を行うか否か決定する。
【００５５】
ＣＰＵ２のタスク実行管理部４０は、一定時間毎に、ＣＰＵ２で実行されたタスク毎の実行時間及びアイドルタイムを算出する。
【００５６】
タスクの移動を行う場合は、まず、移動させるタスクと移動先のＣＰＵを決定する。例えば、ＣＰＵ１のタスクＡ＿２をＣＰＵ２に移動させる場合、タスク２管理ブロック３１２の有する実行情報を、ＣＰＵ２のタスク管理ブロックにコピーすることによりタスクを移動する。
【００５７】
タスクの移動処理について、図５乃至図７を用いて、更に詳細に説明する。この場合、マイグレーション動作はＣＰＵ１とＣＰＵ２の間で行われるものとする。ここで、マイグレーション動作は、システムの影響を最小限にとどめるため、ＣＰＵ１、およびＣＰＵ２でどのタスクも動作していない状態で行う。マイグレーション動作中にタスク２の動作を再開した場合は、マイグレーション動作をいったん中止する。そして、次にＣＰＵ１、およびＣＰＵ２でどのタスクも動作していない状態になったときに、マイグレーション動作をはじめから開始する。
【００５８】
図５は本実施の形態にかかるマイグレーション動作の概要を示すフローチャートである。タスクのマイグレーションを行なう際に、全ＣＰＵタスク実行状態管理部２２は、一定時間でマイグレーションをするか否かの判断を行う。当該一定時間の基準となる時間は、マルチプロセッサシステムの外部から予め設定されるものとする。
【００５９】
まず、特定のＣＰＵでリアルタイムＯＳの実行が開始されると、基準時間が経過したかどうかを判定し（ステップＳ３０）、経過していない場合は再びＳ３０に戻る。基準時間を経過した場合は（ステップＳ３０：Ｙｅｓ）、マイグレーションするタスクを決定し（ステップＳ３１）、実際にマイグレーション動作を行う（ステップＳ３２）。
【００６０】
次に、移動させるタスクの決定方法について詳細に説明する。図６は、マイグレーションするタスクの決定方法のフローチャートを示す図である。図６は、図５のステップＳ３１を詳細に説明したものである。
【００６１】
タスクを算出する際は、ＣＰＵ負荷の平準化を行うために各ＣＰＵのタスクの動作状況を把握し、タスクを移動することによって、負荷が均等になるかを決定する。本実施の形態では、平準化の閾値として、各ＣＰＵのアイドルハンドラを実行した時間の割合の差分を用いる。
【００６２】
まず、ＣＰＵ１のタスクをＣＰＵ２へ移動するための調査を行う。そのために、ＣＰＵ２のアイドルタイムとＣＰＵ１のアイドルタイムを比較する（ステップＳ２０）。実行時間の比較結果で、ＣＰＵ２がＣＰＵ１より大きく、その差が平準化の閾値を上回っている場合（ステップＳ２０：Ｎｏ）、ステップＳ２１に進み、条件以外であれば（ステップＳ２０：Ｙｅｓ）、処理を終了する。
【００６３】
次に、ＣＰＵ１のアイドルタイムと、ＣＰＵ２のアイドルタイムとを比較する（ステップＳ２１）。実行時間の比較結果でＣＰＵ１がＣＰＵ２より大きい場合は（ステップＳ２１：Ｙｅｓ）、ステップＳ２６に進む。実行時間の比較結果でＣＰＵ１がＣＰＵ２より小さい場合は（ステップＳ２１：Ｎｏ）、ステップＳ２２に進む。
【００６４】
次に、「ＣＰＵ１のアイドルタイム」＋「ＣＰＵ１のタスクの実行時間（ＴＡ１）」の値と、「ＣＰＵ２のアイドルタイム」−「ＣＰＵ１タスクの実行時間（ＴＡ１）」の差分（ＴＢ１）を、ＣＰＵ１中のすべてのタスクに対して算出する（ステップＳ２２）。
【００６５】
「ＣＰＵ１のアイドルタイム」＋「ＣＰＵ１のタスクの実行時間（ＴＡ１）」の値を算出することで、タスクを移動した場合のＣＰＵ１のアイドルハンドラ時間を予測することができる。
【００６６】
「ＣＰＵ２のアイドルタイム」−「ＣＰＵ１タスクの実行時間（ＴＡ１）」の値を算出することで、タスクを移動した場合のＣＰＵ２のアイドルハンドラ時間を予測することができる。さらに、これらの値の差を算出することにより、タスクを移動した場合のアイドルハンドラ時間を比較することができる。この場合、ＴＢ１の値が小さいほど、ＣＰＵの負荷が均等になるであろうことが予測できる。
【００６７】
次にＣＰＵ１内の全てのタスクを調査したかを判断（ステップＳ２３）し、調査が終了していなければ（ステップＳ２３：Ｎｏ）、ステップＳ２２に戻る。調査が終了していれば（ステップＳ２３：Ｙｅｓ）、ステップＳ２４に進む。
【００６８】
次に、ＣＰＵ１内の全てのタスクを調査した結果、ＴＢ１が、ＣＰＵの負荷を平準化する閾値内のものがあるかを判断（ステップＳ２４）し、平準化の閾値内のタスクがない場合はタスクの移動ができないため処理を終了し、平準化の閾値内のタスクがある場合は、ステップＳ２５に進む。
ステップＳ２４にて見つけた平準化の閾値内のタスクに対して、ＣＰＵ１内で最小のタスクをマイグレーション対象とし、処理終了する（ステップＳ２５）。
ステップＳ２１にてアイドルタイムがＣＰＵ２よりＣＰＵ１が大きいと判断した場合は、「ＣＰＵ２のアイドルタイム」＋「ＣＰＵ２のタスクの実行時間（ＴＡ２）」の値と、「ＣＰＵ１のアイドルタイム」−「ＣＰＵ２タスクの実行時間（ＴＡ２）」の差分（ＴＢ２）を、ＣＰＵ２中のすべてのタスクに対して算出する（ステップＳ２６）。
【００６９】
次に、ＣＰＵ２内の全てのタスクを調査したかを判断（ステップＳ２７）し、調査が終了していなければステップＳ２６に戻り、終了していればステップＳ２８に進む。
ＣＰＵ２内の全てのタスクを調査した結果、ＴＢ２が平準化の閾値内のものがあるかを判断（ステップＳ２８）し、平準化の閾値内のタスクがない場合はタスクの移動ができないため処理を終了し、平準化の閾値内のタスクがある場合は、ステップ２９に進む。
ステップＳ２８にて見つけた平準化の閾値内のタスクに対して、ＣＰＵ２内で最小のタスクをマイグレーション対象とし、処理終了する（ステップＳ２９）。
【００７０】
上記の結果から、タスクＢとタスク２をＣＰＵ２に移動する。これらのマイグレーション動作により、ＣＰＵの負荷が平準化され、ハードウェア資源を有効利用することができる。
【００７１】
本実施の形態について、マイグレーションするタスクの決定方法のメカニズムを、より具体的に説明する。図６のフローチャートでは、２つのＣＰＵ間の比較となっているが、実際には、存在するＣＰＵすべてに対し、総当りで調査を行う。よって、実際は、存在するＣＰＵ間に対して行うことになる。本実施の形態の場合、実行時間及びアイドルタイムを算出するための基準時間を１．０００．０００カウントとし、閾値を５％に設定した。
【００７２】
図７の表１は、基準時間内におけるＣＰＵ１、ＣＰＵ２、ＣＰＵ３それぞれで実行されたタスク、アイドルタイム、実行時間及び稼働率を示す表である。第１列、第４列、第７列は、それぞれＣＰＵ１乃至３で処理されている複数のタスク、及びアイドルハンドラである。第２列、第５列、及び第８列は、複数のタスクの実行時間、アイドルタイムと、及びＣＰＵ毎の基準時間が記載されている。第３列、第６列、及び第９列には、複数のタスク、及びアイドルハンドラのそれぞれの稼働率が記載されている。
【００７３】
まずＣＰＵ１とＣＰＵ２の状態を比較する（ステップＳ２０）。ＣＰＵ２のアイドルタイムがＣＰＵ１のアイドルタイムより大きく、その差が、基準時間の５％以上であるため（この例の場合、閾値１％が１００００カウントとなる）、ＣＰＵ１のタスクをＣＰＵ２へ移動するとして調査する（ステップＳ２１）。
【００７４】
図８の表２は、ＣＰＵ１のタスクをＣＰＵ２に移動したときのＣＰＵ１とＣＰＵ２のアイドルハンドラの実行時間を、ＣＰＵ１上のそれぞれのタスクに対して算出した結果を示したものである。表２の第１列に移動対象タスク、第２列に移動元のＣＰＵのアイドルタイムと、移動先のＣＰＵのアイドルタイムの差分値が記載されている。ＣＰＵ１から、タスクが移動された場合のＣＰＵ１のアイドルタイムとして、「ＣＰＵ１のアイドルタイム」＋「ＣＰＵ１のタスクの実行時間（ＴＡ１）」の値が算出される。ＣＰＵ１のタスクがＣＰＵ２に移動された場合のＣＰＵ２のアイドルタイムとして、「ＣＰＵ２のアイドルタイム」−「ＣＰＵ１タスクの実行時間（ＴＡ２）」が算出される。ＴＡ１と、ＴＡ２の差分（ＴＢ１）を、ＣＰＵ１中のすべてのタスクに対して算出する（ステップＳ２２）。ＴＢ１の差分が小さいほど、ＣＰＵの負荷が均等になることが予測できる。よって、結果により、タスクＢを移動させることが適当であると全ＣＰＵタスク実行状態管理部２２は予測する。
【００７５】
ＣＰＵ１のタスクＢをＣＰＵ２に移動すると、ＴＢ１が、閾値である基準時間の５％以内になることから、タスクＢを移動する。図９の表３は、ＣＰＵ１上のタスクＢをＣＰＵ２に移動したときのＣＰＵ１、ＣＰＵ２、ＣＰＵ３それぞれで実行されたタスク、アイドルタイム、実行時間及び稼働率を示す図である。表のフォーマットは表１と同じなので説明を省略する。
【００７６】
次に、ＣＰＵ２とＣＰＵ３の状態を比較する。ＣＰＵ２のアイドルタイムがＣＰＵ３のアイドルタイムより大きく、その差が基準時刻の５％を上回っているため、ＣＰＵ３のタスクをＣＰＵ２へ移動するとして調査する。
【００７７】
図１０の表４は、ＣＰＵ３のタスクをＣＰＵ２に移動したときのＣＰＵ３及びＣＰＵ２のアイドルタイムを、ＣＰＵ３上のそれぞれのタスクに対して算出した結果を示したものであり、表のフォーマットは表２と同じなので説明を省略する。ここで、「ＣＰＵ３のアイドルタイム」＋「ＣＰＵ３のタスクの実行時間（ＴＡ２）」の値と、「ＣＰＵ２のアイドルタイム」−「ＣＰＵ３タスクの実行時間（ＴＡ２）」の差分（ＴＢ２）を、ＣＰＵ３中のすべてのタスクに対して算出する。
【００７８】
図１１の表５は、ＣＰＵ３上のタスクＡ＿２をＣＰＵ２に移動したときのＣＰＵ１、ＣＰＵ２、ＣＰＵ３それぞれで実行されたタスク、アイドルタイム、実行時間及び稼働率を示す。タスクＡ＿２をＣＰＵ３からＣＰＵ３へ移動すると、閾値５％以内になることから、タスクＡ＿２を移動することにする。タスクＡ＿２をＣＰＵ２に移動したときの結果は、表５のようになる。
【００７９】
次にＣＰＵ３とＣＰＵ１とを比較する。ＣＰＵ２のアイドルタイムとＣＰＵ３のアイドルタイムが同じであり、基準時間の５％以内であるので移動を行う必要はない。
【００８０】
次に、タスクを移動させる際の流れについて、より詳細に説明する。図１２は、マイグレーション動作の詳細を示す図である。まず、ＣＰＵ１のタスク実行管理部２０の全ＣＰＵタスク実行状態管理部２２は、ＣＰＵ１上のタスク２管理ブロック３１２の先頭アドレスを取得する（ステップＳ１０１）。
【００８１】
ＣＰＵ１のタスク実行管理部２０の全ＣＰＵタスク実行状態管理部２２は、タスクＡ＿２管理ブロック３１２をコピーする先のＣＰＵ２上のタスクＡ＿２管理ブロック３１２Ｄのアドレスを取得する（ステップＳ１０２）。ＣＰＵ１のタスク実行管理部２０の全ＣＰＵタスク実行状態管理部２２は、ＣＰＵ２から取得したタスクＡ＿２管理ブロック３１２ＤのアドレスにタスクＡ＿２管理ブロック３１２の内容をコピーする（ステップＳ１０３）。
【００８２】
コピー中にタスクＡ＿２が動作を再開したかを判断し（ステップＳ１０４）、タスクを再開していれば（ステップＳ１０４：Ｎｏ）、ステップＳ１０３に戻る。再開していなければ（ステップＳ１０４：Ｎｏ）、コピー完了後にＣＰＵ１のタスク実行管理部３４１の全ＣＰＵタスク実行状態管理部２２が、ＣＰＵ２のタスク実行管理部３４２の自ＣＰＵタスク実行状態管理部２１に、コピー完了を通知し、ＣＰＵ１のタスクＡ＿２管理ブロック３１２を無効化する（ステップＳ１０５）。
【００８３】
ＣＰＵ２のタスク実行管理部４０の自ＣＰＵタスク実行状態管理部２１は、コピーされたタスク２管理ブロック３１２Ｄを有効化し、タスク実行管理部４０に保持するタスク情報にタスク２の情報を追加、更新する（ステップＳ１０６）。
【００８４】
本実施の形態にかかるマルチプロセッサシステム、マルチプロセッサの制御方法およびマルチプロセッサの制御方法のプログラムは、移動させたいタスクのタスク管理ブロック、スタック領域のみを該当ＣＰＵに移動することで使用するメモリ容量を抑えながら、マイグレーションを行うことができる。
【００８５】
さらに、本実施の形態にかかるマルチプロセッサシステム、マルチプロセッサの制御方法およびマルチプロセッサの制御方法のプログラムは、各ＣＰＵのタスク実行時間とアイドルタイムを集計し、アイドルタイムを平均化するように計算することによってマイグレーションすべき最適なタスクを選び出すことができ、それにより、各ＣＰＵのタスクのマイグレーションを簡単に行うことができる。
【００８６】
さらに、本実施の形態にかかるマルチプロセッサシステム、マルチプロセッサの制御方法およびマルチプロセッサの制御方法のプログラムは、マイグレーションを行うことによって、ＣＰＵの処理負荷の偏りをなくし、システム全体として負荷を平均化できるため、ＣＰＵにかかる負荷をより均一にすることができる。
【００８７】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【００８８】
１  ＣＰＵ
２  ＣＰＵ
３  ＣＰＵ
ｎ  ＣＰＵ
１０  ＣＰＵ共通ＲＯＭ領域
１１  ＣＰＵ１ＲＡＭ領域
１２  ＣＰＵ２ＲＡＭ領域
１３  ＣＰＵ３ＲＡＭ領域
１４  ＣＰＵｎＲＡＭ領域
２０  タスク管理実行部
２１  自ＣＰＵタスク実行状態管理部
２２  全ＣＰＵタスク実行状態管理部
２３  スケジュール管理部
２４  タスクレディキュー管理部
２５  リアルタイムＯＳ実行コード
２６  時間管理部
２７  リアルタイムＯＳ
２８  ＣＰＵ
３０１  タスク実行コード
３０２  タスク実行コード
３０ｎ  タスク実行コード
４０１  タスク実行コード
４０２  タスク実行コード
４０ｎ  タスク実行コード
３１１  タスク管理ブロック
３１２  タスク管理ブロック
３１ｎ  タスク管理ブロック
３２１  タスクスタック領域
３２２  タスクスタック領域
３２ｎ  タスクスタック領域
３３  アイドルハンドラ実行コード
２０  タスク実行管理部
４０  タスク実行管理部
２６  時間管理部
４１  時間管理部
３１２Ｄ  タスク２管理ブロック
３２２Ｄ  タスク２スタック領域
【図１】
2011233057.tif 000003
【図２】
2011233057.tif 000004
【図３】
2011233057.tif 000005
【図４】
2011233057.tif 000006
【図５】
2011233057.tif 000007
【図６】
2011233057.tif 000008
【図７】
2011233057.tif 000009
【図８】
2011233057.tif 000010
【図９】
2011233057.tif 000011
【図１０】
2011233057.tif 000012
【図１１】
2011233057.tif 000013
【図１２】
2011233057.tif 000014
【図１３】
2011233057.tif 000015
【図１４】
2011233057.tif 000016
【図１５】
2011233057.tif 000017
【図１６】
2011233057.tif 000018
【図１７】
2011233057.tif 000019