(57)【要約】【課題】従来の機能分散型プロセッサのＯＳ等プログラムの資産を流用しながらタスクの単位プロセッサの固定、非固定をも考慮した並列処理が可能なマルチプロセッサシステムを提供する。【解決手段】複数の単位プロセッサを備えたマルチプロセッサシステムにおいて、割込み信号受付部２によって受付けられたダイナミック割込み要求及びスタティック割込み要求を、ダイナミック割込み要求及びスタティック割込み要求の優先度にしたがって単位プロセッサＰ０〜Ｐ３に割り当てるＯＳ１及び割込み制御部２０１を設ける。【選択図】図２
2007188398.tif 000002
【特許請求の範囲】
【請求項１】
複数の単位プロセッサを備えたマルチプロセッサシステムであって、
前記単位プロセッサのいずれにおいても実行可能なプログラムの実行要求である第１要求及び前記単位プロセッサのうち指定された単位プロセッサにおいてのみ実行可能なプログラムの実行要求である第２要求を受付ける要求受付手段と、
前記要求受付手段によって受付けられた第１要求及び第２要求を、第１要求、第２要求の優先度にしたがって前記単位プロセッサに割り当てる単位プロセッサ割当手段と、
を備えることを特徴とするマルチプロセッサシステム。
【請求項２】
前記単位プロセッサ割当手段は、第１要求と第２要求との間で優先度を比較して一の前記単位プロセッサに第１要求と第２要求とを割り当てることを特徴とする請求項１に記載のマルチプロセッサシステム。
【請求項３】
前記単位プロセッサ割当手段は、単位プロセッサに対し、第１要求よりも第２要求を優先して割り当てることを特徴とする請求項１または２に記載のマルチプロセッサシステム。
【請求項４】
前記第１要求に割り当てられる単位プロセッサを、第１要求の実行時に決定する割当単位プロセッサ決定手段を備えることを特徴とする請求項１から３のいずれか１項に記載のマルチプロセッサシステム。
【請求項５】
前記第２要求に割り当てられる単位プロセッサを予め設定する割当単位プロセッサ設定手段を備えることを特徴とする請求項１から４のいずれか１項に記載のマルチプロセッサシステム。
【請求項６】
前記単位プロセッサ割当手段は、前記単位プロセッサにタスク実行の要求を割り当てることを特徴とする請求項１から５のいずれか１項に記載のマルチプロセッサシステム。
【請求項７】
前記単位プロセッサ割当手段は、前記単位プロセッサに、他のタスクの中断を要求する割込み処理の実行要求を割り当てることを特徴とする請求項１から６のいずれか１項に記載のマルチプロセッサシステム。
【請求項８】
複数の単位プロセッサを備えたマルチプロセッサシステムに適用されるマルチプロセッサシステム制御方法をコンピュータに実行させるためのプログラムであって、
前記単位プロセッサのいずれにおいても実行可能なプログラムの実行要求である第１要求及び前記単位プロセッサのうち指定された単位プロセッサにおいてのみ実行可能なプログラムの実行要求を受付ける第２要求を受付ける要求受付ステップと、
前記要求ステップにおいて受付けられた第１要求及び第２要求を、第１要求、第２要求の優先度にしたがって前記単位プロセッサに割り当てる単位プロセッサ割当ステップと、
を含むことを特徴とするマルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステム及びマルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラムに係り、特にタスクを円滑に並列処理可能なマルチプロセッサシステム及びマルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラムに関する。
【背景技術】
【０００２】
特定の装置に用いられるプロセッサは、組込みシステムと呼ばれている。近年では、組込みシステムにマルチプロセッサやマルチスレッドプロセッサが採用されることも多い。マルチプロセッサの採用は、装置の低クロック化や応答性の向上に有利である。また、特に携帯型の装置では、消費電力を低減することにも有利であるためマルチプロセッサを採用することが望まれている。
【０００３】
ところで、新たに開発したプロセッサが正常に動作するか否かの判断に時間及びコストが係る。このため、ソフトウェアの分野では、使用した結果実績のあるプロセッサが流用可能であるならば、これを流用することが望ましいとされている。したがって、組込みシステムをマルチプロセッサ化する場合、先に使用されていたシングルプロセッサのソフトウェアを流用する要求がある。
【０００４】
シングルプロセッサ（機能分散型プロセッサ）のソフトウェアをマルチプロセッサに流用する従来技術として、例えば、特許文献１がある。特許文献１の発明は、μＩＴＲＯＮ（登録商標）をベースにした機能分散型プロセッサ用のＯＳ（Operating System）をマルチプロセッサに移植するものである。特許文献１の発明は、機能分散型プロセッサにおいてＯＳを呼び出すためのシステムコールが発行される間にもシステムコールの発行が不要な割込み処理を受付けることにより、緊急性の高い割込み処理を優先的に処理するものである。
【特許文献１】特開平８−２９７５８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、上記したように、マルチプロセッサを機能分散型のオペレーティングシステムのみで動作させた場合、複数のプロセッサを並列的に動作させることが困難である。一方、マルチプロセッサをＳＭＰ（Symmetric Multi Processor）型プロセッサ用のＯＳのみで動作させるとすると、シングルプロセッサの資産であるアプリケーションの移植作業の作業量が膨大になるという欠点がある。
【０００６】
また、組込み装置のマルチプロセッサでは、マルチプロセッサに機能や特徴の相違するプロセッサ（単位プロセッサ）を複数設け、特定のタスクを所定の単位プロセッサに割り当てることがある。なお、特定の単位プロセッサでのみ実行される（単位プロセッサに固定される）タスクをスタティックタスク、いずれの単位プロセッサにも割り当てられるタスク（単位プロセッサ非固定）をダイナミックタスクという。しかしながら、特許文献１に記載された発明は、単に機能分散型ＯＳをマルチプロセッサに流用するものであるから、マルチプロセッサのスタティックタスクの並列処理における扱いを考慮したものではない。
【０００７】
本発明は、このような点に鑑みてなされたものであり、従来の機能分散型プロセッサのＯＳ等プログラムの資産を流用しながらタスクの単位プロセッサの固定、非固定をも考慮した並列処理が可能なマルチプロセッサシステム、マルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
以上の課題を解決するため、本発明のマルチプロセッサシステムは、複数の単位プロセッサを備えたマルチプロセッサシステムであって、前記単位プロセッサのいずれにおいても実行可能なプログラムの実行要求である第１要求及び前記単位プロセッサのうち指定された単位プロセッサにおいてのみ実行可能なプログラムの実行要求である第２要求を受付ける要求受付手段と、前記要求受付手段によって受付けられた第１要求及び第２要求を、第１要求、第２要求の優先度にしたがって前記単位プロセッサに割り当てる単位プロセッサ割当手段と、を備えることを特徴とする。
【０００９】
このような発明によれば、単位プロセッサのいずれにおいても実行可能なプログラムの実行要求である第１要求及び前記単位プロセッサのうち指定された単位プロセッサにおいてのみ実行可能なプログラムの実行要求である第２要求を受付けることができる。そして、受付けられた第１要求及び第２要求を、第１要求、第２要求の優先度にしたがってマルチプロセッサの単位プロセッサに割り当てることができる。
【００１０】
本発明は、第１要求、第２要求の優先度にしたがってマルチプロセッサの単位プロセッサに割り当てる構成を追加することにより、従来の機能分散型プロセッサのＯＳ等プログラムの資産を流用してもタスクの単位プロセッサの固定、非固定をも考慮した並列処理が可能なマルチプロセッサシステムを提供することができる。
また、本発明のマルチプロセッサシステムは、前記単位プロセッサ割当手段が、第１要求と第２要求との間で優先度を比較して一の前記単位プロセッサに第１要求と第２要求とを割り当てることを特徴とする。
【００１１】
このような発明によれば、第１要求と第２要求とを一元的に管理することが可能となり、並列実行される割込み処理を円滑に実行することができる。
また、本発明のマルチプロセッサシステムは、前記単位プロセッサ割当手段が、単位プロセッサに対し、第１要求よりも第２要求を優先して割り当てることを特徴とする。
このような発明によれば、第１要求、第２要求が競合した場合、他の単位プロセッサに割り当てることができない第２要求を優先し、第２要求の処理が第１要求に比して大きく遅延することを防ぐことができる。
【００１２】
また、本発明のマルチプロセッサシステムは、前記第１要求に割り当てられる単位プロセッサを、第１要求の実行時に決定する割当単位プロセッサ決定手段を備えることを特徴とする。
このような発明によれば、第１要求を単位プロセッサに動的に割り当てる処理をフレキシブルに実行することができる。
【００１３】
また、本発明のマルチプロセッサシステムは、前記第２要求に割り当てられる単位プロセッサを予め設定する割当単位プロセッサ設定手段を備えることを特徴とする。
このような発明によれば、単位プロセッサに固定される第２要求については予めこの単位プロセッサを設定しておくことができる。このため、割込み発生時に単位プロセッサを選択する処理を省き、割込み処理を効率化することができる。
【００１４】
また、本発明のマルチプロセッサシステムは、前記単位プロセッサ割当手段が、前記単位プロセッサにタスク実行の要求を割り当てることを特徴とする。
このような発明によれば、タスクを単位とする並列処理を円滑に実行することができる。
また、本発明のマルチプロセッサシステムは、前記単位プロセッサ割当手段が、前記単位プロセッサに、他のタスクの中断を要求する割込み処理の実行要求を割り当てることを特徴とする。
このような発明によれば、外部割込み等、割込み処理が発生した場合にも並列処理を円滑に実行することができる。
【００１５】
また、本発明のマルチプロセッサシステム制御方法をコンピュータに実行させるためのプログラムは、複数の単位プロセッサを備えたマルチプロセッサシステムに適用されるマルチプロセッサシステム制御方法をコンピュータに実行させるためのプログラムであって、前記単位プロセッサのいずれにおいても実行可能なプログラムの実行要求である第１要求及び前記単位プロセッサのうち指定された単位プロセッサにおいてのみ実行可能なプログラムの実行要求を受付ける第２要求を受付ける要求受付ステップと、前記要求ステップにおいて受付けられた第１要求及び第２要求を、第１要求、第２要求の優先度にしたがって前記単位プロセッサに割り当てる単位プロセッサ割当ステップと、を含むことを特徴とする。
【００１６】
このような発明によれば、第１要求、第２要求の優先度にしたがってマルチプロセッサの単位プロセッサに割り当てるステップを追加することにより、従来の機能分散型プロセッサのＯＳ等プログラムの資産を流用してもタスクの単位プロセッサの固定、非固定をも考慮した並列処理が可能なマルチプロセッサシステム制御方法をコンピュータに実行させるためのプログラムを提供することができる。
【発明を実施するための最良の形態】
【００１７】
以下、図を参照して本発明に係るマルチプロセッサシステム、マルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラムの実施の形態を説明する。本実施形態のマルチプロセッサシステムは、複数の単位プロセッサを備えている。
図１は、複数の単位プロセッサの組合せに係る一般的な構成例を説明するための図である。図１（ａ）、（ｂ）に示したマルチプロセッサシステムは、いずれも複数の単位プロセッサＰｕを、メモリを共有するように結合して構成されている。（ａ）に示した構成は、マルチプロセッサと呼ばれている構成であって、（ｂ）に示した構成はマルチスレッドプロセッサと呼ばれている。マルチスレッドプロセッサは、マルチプロセッサよりも演算器を共有している点で単位プロセッサＰｕは密に結合しているという。
【００１８】
図１に示したマルチプロセッサ、マルチスレッドプロセッサのいずれにあっても、複数の単位プロセッサＰｕがメモリ１０１を共用し、メモリ１０１にはＯＳ（Operating System）１が保存されている。ＯＳ１は、本実施形態のマルチプロセッサシステムにおいてタスク及び割込みハンドラの割込みを制御するものである。
なお、本実施形態では、マルチプロセッサシステムをマルチプロセッサとして構成した例について説明するが、マルチスレッドプロセッサを採用しても構成可能である。
【００１９】
図２は、本発明の一実施形態のマルチプロセッサを説明するための図である。図示したマルチプロセッサは、複数の単位プロセッサＰ０〜Ｐ３と、単位プロセッサＰ０〜Ｐ３への割込み処理を制御する割込み制御部２０１とを備え、割込み制御部２０１を介して単位プロセッサＰ０〜Ｐ４に割込み処理を要求する５つの周辺装置Ａ、Ｂ、Ｃ、Ｄ、Ｅ（周辺装置Ｄは外部メモリのＩ／Ｆ）と接続する。このようなマルチプロセッサは、例えば携帯電話に使用される組込みプロセッサに適用される。携帯電話に適用される場合、周辺装置Ａ〜Ｄは、操作ボタンやカメラ装置、無線装置にあたる。
【００２０】
単位プロセッサＰ０〜Ｐ３は、各単位プロセッサのステータス（例えば、割込みの可否状態、単位プロセッサにおけるオーバーフローの発生状態等）を記憶するステータスレジスタ（ＰＳＲ）２１０、単位プロセッサが次に実行するべき命令が格納されたメモリアドレスを記憶するプログラムカウンタ（ＰＣ）２１１を備えている。
さらに、単位プロセッサＰ０〜Ｐ３は、例外処理用プログラムカウンタ（ＥＰＣ）２１１、例外処理用ステータスレジスタ（ＥＰＳＲ）２１２、割り込みベクタ（ＩｎｔＶｅｃｔｏｒ）２１４を備えている。ＥＰＣ２１１は、周辺装置Ａ〜Ｄによって割込みが要求された場合にＰＣ２１１に記憶されているアドレスを退避しておくためのレジスタであって、ＥＰＳＲ２１１は、ＰＳＲ２１０に記憶されている情報を退避しておくためのレジスタである。また、ＩｎｔＶｅｃｔｏｒ２１４は、割込み処理の種類に応じた分岐先のプログラムのアドレスをテーブル形式で記憶するものである。
【００２１】
割込み制御部２０１は、周辺装置Ａ〜Ｄの各々について、割込み信号受付部２を備えている。第１要求は、一般的にダイナミックタスクと呼ばれるタスクの実行要求を指す。割込みによる要求を本実施形態ではダイナミック割込みと記す。また、第２要求は、一般的にスタティックタスクと呼ばれるタスクの実行要求を指す。割込みによる要求を本実施形態ではスタティック割込みと記す。また、本実施形態では、ＯＳ１が作成するスケジューラー等によって管理されるタスクと外部から要求されるためにＯＳ１によって管理できない非タスクとがある。本実施形態では、非タスクの割込み処理を割込みハンドラと記す。
【００２２】
なお、上記したダイナミックタスク、スタティックタスクのタスクは、プログラムの処理単位を指していう場合も多い。しかし、本実施形態では、ＯＳ１が作成するスケジューラ等によって管理される処理のみをタスクと記し、外部から要求されるためにＯＳ１によって管理できない処理を非タスクと記す。本実施形態では、非タスクの割込み処理を割込みハンドラとも記す。スタティック割込み、ダイナミック割込みは、いずれも割込みハンドラである。
【００２３】
図示した４つの割込み信号受付部２は、いずれも同様に構成されている（このため、ここでは周辺装置Ａの割込み信号受付部２について説明する）。すなわち、割込み信号受付部２は、周辺装置Ａが出力した割込み信号を受付ける割込み優先度制御部２０６ａ、割込み許可制御部２０５ａ、スタティック／ダイナミック設定部２０４ａを備えている。
割込み信号は、周辺装置Ａがマルチプロセッサに対して割込み処理の実行を要求するための信号である。割込み優先度制御部２０６は、割込み信号の内容に応じて割込みの優先度を設定する構成である。割込み許可制御部２０５ａは、マルチプロセッサ全体に対する外部割込み禁止の設定等から周辺装置Ａの割込み要求を許可するか否か判定する構成である。
【００２４】
また、スタティック／ダイナミック設定部２０４ａは、割込みハンドラの割込み信号による処理要求にスタティック割込みであるかダイナミック割込みであるか特定し、この結果を割込み制御側に送る構成である。スタティック／ダイナミック設定部２０４ａ〜２０４ｄは、割込みハンドラごとに存在する定義レジスタであって、例えば、以下のようなレジスタを想定している。
【００２５】
ｂｉｔ４      スタティック割込み[０]／ダイナミック割込み[１]
ｂｉｔ３〜０  スタティック割込みの場合に実行される単位プロセッサ番号
なお、スタティック割込みの場合、割込み実行に割り当てられる単位プロセッサは、割込みを要求した周辺装置によって予め設定されている。この単位プロセッサを特定する情報を生成するスタティック／ダイナミック設定部２０４ａは、スタティック割込みに割り当てられる単位プロセッサを特定する情報を予め設定する割当単位プロセッサ設定手段となる。
【００２６】
スタティック／ダイナミック設定部２０４ａの設定は、マルチプロセッサの初期化の処理によって指定される。μＩＴＲＯＮ（登録商標）を例にとると、各割込みハンドラの定義としてシステムコール（ＤＥＦ＿ＩＮＨ）が存在する。このシステムコールを拡張することにより、スタティック定義レジスタ（ＩＯレジスタ）に単位プロセッサを設定する。
なお、ダイナミックタスク、スタティックタスクの判断は、μＩＴＲＯＮ（登録商標）においてタスク生成のシステムコールＣＲＥ＿ＴＳＫを拡張することによって実現される。
【００２７】
また、割込み制御部２０１は、４つのプロセッサＰ０〜Ｐ３の各々に対応した４つのスタティック割込み優先度判定部２０３ａ、２０３ｂ、２０３ｃ、２０３ｄと、ダイナミック割込み優先度判定部２０７を備えている。
スタティック割込み優先度判定部２０３ａ〜２０３ｄは、単位プロセッサＰ０〜Ｐ３のうち指定された単位プロセッサにおいてのみ実行可能なスタティック割込みの要求を受付ける。また、ダイナミック割込み優先度判定部２０７は、単位プロセッサＰ０〜Ｐ３のいずれにおいても実行可能なダイナミック割込みの要求を受付ける。このようなスタティック割込み優先度判定部２０３ａ〜２０３ｄ及びダイナミック割込み優先度判定部２０７は、本実施形態の要求受付手段を構成する。
【００２８】
スタティック割込み優先度判定部２０３ａ〜２０３ｄ、ダイナミック割込み優先度判定部２０７は、対応するプロセッサで実行されている処理の優先度を管理するレジスタである。このレジスタの内容としては、例えば、以下のように想定できる。
ｂｉｔ６      プロセッサの状態を表す。（ＲＵＮ［１］／ＨＡＬＴ［０］）
ｂｉｔ４      ＲＵＮ状態の場合、割込み［１］／タスク実行［０］の状態を表す。
【００２９】
ｂｉｔ３〜０  ＲＵＮ状態の場合、ＲＵＮ状態のタスクの優先度を表す。
レジスタへの書込みは、ソフトウェアによって行われる。
ＯＳ１は、今回受付けられたスタティックタスクの要求及びダイナミックタスクの要求を単位プロセッサＰ０〜Ｐ３に割り当てる。スタティックタスク、ダイナミックタスクに割り当てられる単位プロセッサの選択は、ＯＳ１が、スタティックタスク、ダイナミックタスクの要求の優先度にしたがって行う。
【００３０】
すなわち、ＯＳ１は、スタティック割込み優先度判定部２０３ａ〜２０３ｄ、ダイナミック割込み優先度判定部２０７で管理されている情報に基づいて、今回発生した処理の優先度を現在処理されているタスク及び割込みハンドラの優先度と比較して単位プロセッサを選択する。このようなＯＳ１は、本実施形態の単位プロセッサ割当手段となる。なお、ＯＳ１による単位プロセッサの選択の詳細については後述するものとする。
【００３１】
次に、図２に示した構成の動作について説明する。
単位プロセッサＰ０〜Ｐ３は、図示しない外部メモリ等から命令を読出し、タスクごとに処理している。タスクには、単位プロセッサＰ０〜Ｐ３のうち指定された単位プロセッサにおいてのみ実行されるスタティックタスクと複数の単位プロセッサのいずれにおいても実行可能なダイナミックタスクとがある。
【００３２】
このようなマルチプロセッサに対し、周辺装置Ａ〜Ｅは、割込み処理して各々に必要な処理を要求する。処理の要求は、周辺装置Ａ〜Ｄの各々が、割込み信号受付部２に対して自装置を特定するための情報、タスクの処理内容等を示す情報を出力することによって行われる。
割込み信号が入力された割込み信号受付部２は、割込み信号に基づいて割込みハンドラの優先度やスタティック、ダイナミックの別を示す信号を生成する。そして、マルチプロセッサへの割込みが許可されている場合、生成された信号をスタティック割込み優先度判定部２０３ａ、ダイナミック割込み優先度判定部２０７に送出する。
【００３３】
スタティック割込み優先度判定部２０３ａ〜ｃは、送出された信号がスタティック割込みを要求するものである場合、現在そのプロセッサで動作しているタスクおよび割込みハンドラの優先度を判定する。また、ダイナミック割込み優先度判定部２０７は、ダイナミック割込みが要求された場合、全てのプロセッサで動作しているタスクおよび割込みハンドラの優先度を判定する。割込み処理プロセッサ選択部２０２は、スタティック割込み優先度判定部２０３ａ〜２０３ｃ、ダイナミック割込み優先度判定部２０７の判定結果に基づいて、割込み処理を実行する単位プロセッサを決定する。
【００３４】
このような、割込み処理プロセッサ選択部２０２は、スタティック割込みとダイナミック割込みとの間で優先度を比較し、一の単位プロセッサ（例えば単位プロセッサＰ０）にスタティック割込みとダイナミック割込みとを割り当てる。この構成により、本実施形態は、機能分散型のＯＳを流用した場合にも並列処理にスタティックタスクの概念を導入することができる。
【００３５】
なお、ダイナミックタスクに割り当てられる単位プロセッサは、ＯＳ１によってタスクの実行時に決定される。このため、本実施形態では、ＯＳ１が、割当単位プロセッサ決定手段としても機能する。
すなわち、ＯＳ１は、割込みハンドラ以外の処理として実行されるダイナミックタスク、スタティックタスクの優先度に基づいてタスクの実行スケジュールを生成する。タスクの実行スケジュールは、例えば、各単位プロセッサにおいて実行されるタスクを実行される順番に沿って並べて記録したレディ・キューで表される。
【００３６】
以上述べた本実施形態の各単位プロセッサは、例えば図３に示したように動作する。
図３に示した例では、Ｄｙｎａｍｉｃ＿ａ等の表記で表した処理部分はダイナミックタスクであって、かつ割込みハンドラでないものを示す。また、Ｄｙｎａｍｉｃ＿ＩｎｔＡ等の表記で表した処理部分はダイナミック割込みであって、かつ割込みハンドラとして実行される処理を示す。
【００３７】
また、Ｓｔａｔｉｃ＿ａ等の表記で表した処理部分はスタティックタスクであって、かつ割込みハンドラでないものを示す。また、Ｓｔａｔｉｃ＿ＩｎｔＡ等の表記で表した処理部分はスタティック割込みであって、かつ割込みハンドラとして実行される処理を示す。さらに、スタティックタスクのＳｔａｔｉｃ＿の後に続く番号は、固定される単位プロセッサを示している（Ｓｔａｔｉｃ＿１は単位プロセッサＰ０、Ｓｔａｔｉｃ＿２は単位プロセッサＰ１、Ｓｔａｔｉｃ＿３は単位プロセッサＰ２、Ｓｔａｔｉｃ＿４は単位プロセッサＰ３に割り当てられることを示す）。
【００３８】
次に、本実施形態のマルチプロセッサのＯＳ１によって実行される処理を、より具体的に説明する。図４ないし図７は、本実施形態のマルチプロセッサで行われるタスク処理を説明するための図である。
図４に示した例では、単位プロセッサＰ０が優先度５のダイナミックタスクを実行し、単位プロセッサＰ１が優先度６のダイナミックタスクを実行し、単位プロセッサＰ２が優先度７のダイナミックタスクを実行している。そして、単位プロセッサＰ３は、優先度８のスタティックタスクを実行している。なお、図４〜図７において、タスクの優先度は、数字が少ないほど高いものとする。
【００３９】
このような状態において、いずれかのタスクが優先度５のダイナミックタスクに対し要求を行った場合、ＯＳ１は、次のように動作する。すなわち、ＯＳ１は、単位プロセッサＰ０〜Ｐ３で現在実行されているタスクのうち最も低い優先度を実行している単位プロセッサが単位プロセッサＰ３であることを検出する。
【００４０】
次に、ＯＳ１は、今回要求されたタスク、単位プロセッサＰ３で実行されているタスクのスタティック、ダイナミックの別を判定する。図４に示した例では、単位プロセッサＰ３で実行されているタスクがスタティックタスクであって、今回要求されたタスクはダイナミックタスクである。
図４に示した例では、ダイナミックタスクの優先度がスタティックタスクの優先度よりも高いことから、単位プロセッサＰ３で実行されているタスクに代えて、新たに要求されたタスクを単位プロセッサＰ３に実行させている。
【００４１】
図５に示した例では、単位プロセッサＰ０が優先度５のダイナミックタスクを実行し、単位プロセッサＰ１が優先度６のダイナミックタスクを実行し、単位プロセッサＰ２が優先度７のダイナミックタスクを実行し、単位プロセッサＰ３は、優先度７のスタティックタスクを実行している。
このような状態において、いずれかのタスクが優先度７のダイナミックタスクに対し要求を行った場合、ＯＳ１は、単位プロセッサＰ０〜Ｐ３で現在実行されているタスクのうち今回要求されたタスクより優先度が低いタスクの有無を検出する。
【００４２】
次に、ＯＳ１は、今回要求されたタスク、単位プロセッサＰ３で実行されているタスクのスタティック、ダイナミックの別を判定する。図５に示した例では、今回要求されたタスクより優先度が低いタスクがない。また、現在単位プロセッサＰ３で実行されている優先度が等しいタスクがスタティックタスクであって、要求されたタスクがダイナミックタスクであることを検出する。
【００４３】
このような場合、本実施形態では、スタティックタスクは原則ダイナミックタスクに優先して実行される。また、先に実行されていた処理と今回要求された処理の優先度とが等しい場合、タスクスイッチは行わないのは、μＩＴＲＯＮ（登録商標）の仕様である。
また、図５に示した例では、ダイナミックタスクの優先度とスタティックタスクの優先度とが等しいことから、単位プロセッサＰ３におけるタスクの実行を継続し、新たに要求されたタスクを実行状態に移す（レディ・キューに追加する）ことがない。
【００４４】
このように処理することにより、本実施形態は、スタティック割当が実行可能な単位プロセッサに対しては、ダイナミック割当よりもスタティック割当を優先して割り当てるようにする。このようにすれば、優先度の高い割込み処理を実行しながらスタティック割込みの遅延を防ぐことができる。
なお、ここでは、優先度が等しいときダイナミックタスクに優先してスタティックタスクを処理するものとした。しかし、本発明はこのような構成に限定されるものでなく、ダイナミックタスクとスタティックタスクとが１のプロセッサ上で競合する場合、常にスタティックタスクを優先するものであってもよい。
【００４５】
図６に示した例では、単位プロセッサＰ０が優先度５のダイナミックタスクを実行し、単位プロセッサＰ１が優先度６のダイナミックタスクを実行し、単位プロセッサＰ２が優先度７のダイナミックタスクを実行し、単位プロセッサＰ３は、優先度７のスタティックタスクを実行している。
このような状態において、いずれかのタスクが、単位プロセッサＰ２でのみ動作可能な優先度５のスタティックタスクに対し要求を行った場合、ＯＳ１は、単位プロセッサＰ２で現在実行されているタスクの優先度と今回要求されたタスクの優先度とを比較する。
【００４６】
図６に示した例では、今回要求されたタスクの優先度が、現在単位プロセッサＰ２で実行されているタスクの優先度より高いことから、単位プロセッサＰ２で実行されているタスクに代えて、新たに要求されたタスクを単位プロセッサＰ２に実行させている。
図７に示した例では、単位プロセッサＰ０が優先度５のダイナミックタスクを実行し、単位プロセッサＰ１が優先度６のダイナミックタスクを実行し、単位プロセッサＰ２が優先度７のダイナミックタスクを実行し、単位プロセッサＰ３は、優先度７のスタティックタスクを実行している。
【００４７】
このような状態において、いずれかのタスクが、単位プロセッサＰ１でのみ動作可能な優先度６のスタティックタスクに対し要求を行った場合、ＯＳ１は、単位プロセッサＰ１で現在実行されているタスクの優先度と今回要求された割込みのタスクの優先度とを比較する。
図７に示した例では、今回要求されたタスクの優先度が、現在単位プロセッサＰ２で実行されているタスクの優先度より低いことから、単位プロセッサＰ１におけるタスクの実行を継続し、新たに要求されたタスクを実行状態に移すことがない。
【００４８】
次に、以上述べた本実施形態のマルチプロセッサで行われるマルチプロセッサシステムの制御方法を説明する。
図８は、ＯＳ１によるスタティックタスク、ダイナミックタスクを処理する際の動作を説明するためのフローチャートである。ＯＳ１は、レディ・キューの登録条件が満たされた場合、新たにタスクが発生したとし、このタスクをレディ・キューに登録する（Ｓ８０１）。なお、レディ・キューの登録条件とは、例えば、単位プロセッサＰ０〜Ｐ３のいずれかによってセンド・メッセージの実行がなされた等を指す。
【００４９】
次に、ＯＳ１は、登録されたタスクがダイナミックタスクであるかスタティックタスクであるかを判定する（Ｓ８０２）。タスクがスタティックタスクであった場合（Ｓｔａｔｉｃタスク）、タスクに予め割り当てられている単位プロセッサがＨＡＬＴ中であるか否か判断する（Ｓ８０３）。単位プロセッサがＨＡＬＴ中であれば（Ｓ８０３：Ｙｅｓ）、タスクに割り当てられている単位プロセッサに内部割込み要求を発生し（Ｓ８０７）、内部割り込み要求された単位プロセッサの起動が完了するまで待機する（Ｓ８０８）。なお、単位プロセッサの起動完了後、単位プロセッサは、ＯＳによる処理（ＯＳ処理）からリターンしてタスクを実行する処理に戻る。
【００５０】
一方、ステップＳ８０２において、タスクがダイナミックタスクであると判断された場合（Ｄｙｎａｍｉｃタスク）、図９のフローチャートに示した処理が開始される。すなわち、ＯＳ１は、図９のフローチャートに示すように、マルチプロセッサ内にＨＡＬＴ中の単位プロセッサがあるか否か判断する（Ｓ９０１）。ＨＡＬＴ中の単位プロセッサがあった場合（Ｓ９０１：Ｙｅｓ）、ＯＳ１は、この単位プロセッサに内部割込み要求を発生させる（Ｓ９０５）。そして、内部割り込み要求された単位プロセッサの起動が完了するまで待機する（Ｓ９０６）。
【００５１】
また、ステップＳ９０１において、ＨＡＬＴ中の単位プロセッサがないと判断された場合（Ｓ９０１：Ｎｏ）、単位プロセッサＰ０〜Ｐ３の全てで実行されているタスクの優先度と、今回割込み要求されたタスクの優先度とを比較する（Ｓ９０２）。この結果、現在実行されているタスクが全て今回要求されたタスクより高い優先度を有する場合（Ｓ９０３：Ｎｏ）、タスクスイッチを発生することなくタスク処理へ戻る。
【００５２】
一方、現在実行されているタスクのうちに今回要求されたタスクより低い優先度を有する場合には、タスクスイッチを発生させる（Ｓ９０３：Ｙｅｓ）。タスクスイッチの発生後、ＯＳ１は、タスクスイッチに伴って行われる一般的なタスクスイッチ共通処理を実行する（Ｓ９０４）。
また、ＯＳ１は、タスクに予め割り当てられている単位プロセッサがＨＡＬＴ中でない場合（Ｓ８０３：Ｎｏ）、この単位プロセッサで現在実行されているタスクの優先度と、今回要求されたタスクの優先度とを比較する（Ｓ８０４）。この結果、現在実行されているタスクが今回要求されたタスクより高い優先度を有する場合（Ｓ８０５：Ｎｏ）、タスクスイッチを発生することなくタスク処理へ戻る。
【００５３】
一方、現在実行されているタスクが今回要求されたタスクより低い優先度を有する場合にはタスクスイッチを発生させる（Ｓ８０５：Ｙｅｓ）。タスクスイッチの発生後、ＯＳ１は、タスクスイッチに伴って行われる一般的なタスクスイッチ共通処理を実行する（Ｓ８０６）。
図１０は、図８、図９に示したタスクスイッチ共通処理を説明するためのフローチャートである。タスクスイッチ共通処理は、タスクスイッチが発生した場合、単位プロセッサＰ０〜Ｐ３の全てが実行する処理である。単位プロセッサＰ０〜Ｐ３は、先ず、タスクスイッチを実行する単位プロセッサを検索、特定する（Ｓ１００１）。検索の結果、タスクスイッチする単位プロセッサが自プロセッサである場合、現在実行しているタスクに係るデータの退避等、入れ替え処理を実行する（Ｓ１００５）。そして、スイッチ後に処理すべきタスクにタスクを遷移させる（Ｓ１００６）。
【００５４】
一方、ステップＳ１００２において、タスクスイッチする単位プロセッサが他の単位プロセッサであると判断された場合（Ｓ１００２：Ｎｏ）、タスクスイッチすべき他のプロセッサにおいて割込み処理が発生する（Ｓ１００３）。今回タスクスイッチの対象とならなかった単位プロセッサは、タスクスイッチする単位プロセッサのタスク入れ替えの処理完了を待ち（Ｓ１００４）、ＯＳ処理からリターンしタスク処理へ戻る。
【００５５】
図１１は、割込み制御部２０１によるスタティック割込み、ダイナミック割込みを処理する際の動作を説明するためのフローチャートである。割込み制御部２０１は、外部割込みが発生した場合、発生した外部割込みがダイナミック割込み、スタティック割込みのいずれであるかを判断する（Ｓ１１０１）。判断の結果、割込みハンドラがスタティック割込みである場合（Ｓ１１０１：Ｓｔａｔｉｃ割込）、スタティック割込みに割り当てられている単位プロセッサ（指定単位プロセッサ）で実行中のタスク及び割込みハンドラの優先度と、今回要求されたスタティック割込みの割込みハンドラの優先度とを比較する（Ｓ１１０２）。
【００５６】
ステップＳ１１０２の判断の結果、今回要求されたスタティック割込みの優先度が高い場合（Ｓ１１０３：Ｙｅｓ）、指定単位プロセッサは、先に実行されていた処理に関する情報（ＰＳＲ２１０、ＰＣ２１１）を退避する（Ｓ１１０４）。情報の退避後、割込み制御部２０１は、指定単位プロセッサに外部割込みを発生させる（Ｓ１１０５）。
また、今回要求されたスタティック割込みの優先度が、先に指定単位プロセッサで実行されていたタスク及び割込みハンドラの優先度より低いと判断された場合（Ｓ１１０３：Ｎｏ）、割込み制御部２０１は、今回の割込み要求を保留する（Ｓ１１０６）。
【００５７】
また、割込み制御部２０１は、発生した外部割込みがダイナミック割込みであると判断した場合（Ｄｙｎａｍｉｃ割込）、図１２のフローチャートに示す処理を実行する。すなわち、割込み制御部２０１は、マルチプロセッサが備える単位プロセッサ中にＨＡＬＴ中の単位プロセッサがあるか否か検索する（Ｓ１２０１）。この検索の結果、ＨＡＬＴ中の単位プロセッサが存在する場合（Ｓ１２０２：Ｙｅｓ）、この単位プロセッサに外部割込みを発生させる（１２０８）。
【００５８】
また、ステップＳ１２０２において、ＨＡＬＴ中の単位プロセッサが存在しないと判断された場合（Ｓ１２０２：Ｎｏ）、単位プロセッサＰ０〜Ｐ３の全てで実行されているタスク及び割込みハンドラの優先度と、今回割込み要求された優先度とを比較する。そして、今回発生した外部割込みのタスクの優先度より低い優先度のタスク及び割込みハンドラが実行されていないか否か判断する（Ｓ１２０３）。この結果、該当する単位プロセッサが存在しない場合（Ｓ１２０４：Ｎｏ）、今回発生した外部割込みを保留する（Ｓ１２０７）。
【００５９】
一方、今回発生した割込みハンドラの優先度より低い優先度のタスク及び割込みハンドラを実行する単位プロセッサが存在した場合（Ｓ１２０４：Ｙｅｓ）、この単位プロセッサは、先に実行されていた処理に関する情報（ＰＳＲ２１０、ＰＣ２１１）を退避する（Ｓ１２０５）。情報の退避後、割込み制御部２０１は、指定単位プロセッサに外部割込みを発生させる（Ｓ１２０６）。
【００６０】
なお、図８ないし図１２で述べた本実施形態のマルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラムは、インストール可能な形式または実行可能な形式のファイルでＣＤ−ＲＯＭ、フロッピー（登録商標）ディスク（ＦＤ）、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録されて提供される。また、本実施形態のマルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。
【００６１】
さらに、以上述べた本実施形態のマルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラムは、コンピュータで読み取り可能なＲＯＭ、フラッシュメモリ、メモリカード、ＵＳＢ接続型フラッシュメモリ等のメモリデバイスに記録されて提供してもよい。
以上述べた本実施形態は、単位プロセッサのいずれにおいても実行可能なダイナミックタスク及びダイナミック割込み、単位プロセッサのうち指定された単位プロセッサにおいてのみ実行可能なスタティックタスク及びスタティック割込みを受付けることができる。
そして、受付けられた各処理を、タスク及び割込みハンドラの優先度にしたがって単位プロセッサＰ０〜Ｐ３に割り当てることができる。
【図面の簡単な説明】
【００６２】
【図１】複数の単位プロセッサの組合せに係る一般的な構成例を説明するための図である。
【図２】本発明の一実施形態のマルチプロセッサを説明するための図である。
【図３】図２に示した単位プロセッサの動作を説明するための図である。
【図４】本実施形態のマルチプロセッサで行われる割込み処理を説明するための図である。
【図５】本実施形態のマルチプロセッサで行われる割込み処理を説明するための他の図である。
【図６】本実施形態のマルチプロセッサで行われる割込み処理を説明するための他の図である。
【図７】本実施形態のマルチプロセッサで行われる割込み処理を説明するための他の図である。
【図８】本発明の一実施形態のＯＳによるスタティックタスク、ダイナミックタスクを処理する際の動作を説明するためのフローチャートである。
【図９】本発明の一実施形態のＯＳによるスタティックタスク、ダイナミックタスクを処理する際の動作を説明するための他のフローチャートである。
【図１０】本発明の一実施形態のＯＳによるスタティックタスク、ダイナミックタスクを処理する際の動作を説明するための他のフローチャートである。
【図１１】本発明の一実施形態の外部割込みによるスタティック割込み、ダイナミック割込みを処理する際の動作を説明するためのフローチャートである。
【図１２】本発明の一実施形態の外部割込みによるスタティック割込み、ダイナミック割込みを処理する際の動作を説明するための他のフローチャートである。
【符号の説明】
【００６３】
２  割込み信号受付部、２０１  割込み制御部、２０２  処理プロセッサ選択部、２０３ａ、２０３ｂ、２０３ｃ、２０３ｄ  優先度判定部、２０４ａ、２０４ｂ、２０４ｃ、２０４ｄ  ダイナミック設定部、２０５ａ  割込み許可制御部、２０６ａ、２０６ｂ、２０６ｃ、２０６ｄ  優先度制御部、２０７  ダイナミック割込み優先度判定部、Ａ、Ｂ、Ｃ、Ｄ、Ｅ  周辺装置、Ｐ０、Ｐ１、Ｐ２、Ｐ３  単位プロセッサ
【図１】
2007188398.tif 000003
【図２】
2007188398.tif 000004
【図３】
2007188398.tif 000005
【図４】
2007188398.tif 000006
【図５】
2007188398.tif 000007
【図６】
2007188398.tif 000008
【図７】
2007188398.tif 000009
【図８】
2007188398.tif 000010
【図９】
2007188398.tif 000011
【図１０】
2007188398.tif 000012
【図１１】
2007188398.tif 000013
【図１２】
2007188398.tif 000014