(57)【特許請求の範囲】
【請求項１】
それぞれがタスクあるいはスレッドを処理する複数のプロセッサ手段を有するマルチプロセッサシステムのコンピュータに当該マルチプロセッサシステムの制御方法を実行させるプログラムであって、
指定された時刻に指定された処理を前記プロセッサ手段で実行させるタイマ機能に係る依頼を受け、当該依頼を保持手段に登録する登録ステップと、
前記保持手段に登録されている前記タイマ機能に係る依頼の情報に基づいて、前記指定された処理を実行するプロセッサ手段を指定するプロセッサ指定ステップと、
単位時間毎に発生される割込み処理の回数により現在時刻を取得する内部処理ステップと、
前記複数のプロセッサ手段の内、前記現在時刻の次の前記指定された時刻に前記指定された処理を実行するプロセッサ手段を、前記割込み処理が実行されるプロセッサ手段として設定する内部処理切替ステップとを前記コンピュータに実行させる、ことを特徴とするプログラム。
【請求項２】
前記内部処理切替ステップにて、前記割込み処理が実行されるプロセッサ手段として設定可能な前記プロセッサ手段が複数ある場合には、当該複数のプロセッサ手段の内の１つを前記割込み処理が実行されるプロセッサ手段として設定し、
前記タイマ機能に係る依頼により指定された処理の実行は、当該設定されたプロセッサ手段より他の前記プロセッサ手段に指示することを特徴とする請求項１記載のプログラム。
【請求項３】
前記現在時刻の次の前記指定された時刻に前記指定された処理を実行する前記プロセッサ手段が休止状態である場合には、前記内部処理切替ステップにて、直前に設定されていたプロセッサ手段を前記割込み処理が実行されるプロセッサ手段として設定し、前記タイマ機能に係る依頼により指定された処理は、前記休止状態のプロセッサ手段を起床させ当該プロセッサ手段で実行させることを特徴とする請求項１又は２記載のプログラム。
【請求項４】
前記現在時刻の次の前記指定された時刻に前記指定された処理を実行する前記プロセッサ手段が休止状態である場合には、前記内部処理切替ステップにて、前記休止状態のプロセッサ手段を起床させ、当該プロセッサ手段で前記割込み処理及び前記タイマ機能に係る依頼により指定された処理を実行させることを特徴とする請求項１又は２記載のプログラム。
【請求項５】
前記現在時刻の次の前記指定された時刻に前記指定された処理を実行する前記プロセッサ手段が休止状態である場合には、前記内部処理切替ステップにて、直前に設定されていたプロセッサ手段を前記割込み処理が実行されるプロセッサ手段として設定し、当該プロセッサ手段で前記タイマ機能に係る依頼により指定された処理を実行させることを特徴とする請求項１又は２記載のプログラム。
【請求項６】
前記タイマ機能に係る依頼により指定された処理を実行させる前記プロセッサ手段に、特定のプロセッサ手段又は複数の任意のプロセッサ手段を指定できることを特徴とする請求項１〜５の何れか１項に記載のプログラム。
【請求項７】
それぞれがタスクあるいはスレッドを処理する複数のプロセッサ手段を有するマルチプロセッサシステムの制御方法であって、
指定された時刻に指定された処理を前記プロセッサ手段で実行させるタイマ機能に係る依頼を受け、当該依頼を保持手段に登録する登録工程と、
前記保持手段に登録されている前記タイマ機能に係る依頼の情報に基づいて、前記指定された処理を実行するプロセッサ手段を指定するプロセッサ指定工程と、
単位時間毎に発生される割込み処理の回数により現在時刻を取得する内部処理工程と、
前記複数のプロセッサ手段の内、前記現在時刻の次の前記指定された時刻に前記指定された処理を実行するプロセッサ手段を、前記割込み処理が実行されるプロセッサ手段として設定する内部処理切替工程とを有する、ことを特徴とする制御方法。
【請求項８】
それぞれがタスクあるいはスレッドを処理する複数のプロセッサ手段と、
前記プロセッサ手段で指定された時刻に指定された処理を実行させるタイマ機能に係る依頼を管理するタイマ機能管理手段と、
前記タイマ機能管理手段で管理されている前記タイマ機能に係る依頼の情報に基づいて、前記指定された処理を実行するプロセッサ手段を指定するプロセッサ指定手段と、
単位時間毎に発生される割込み処理の回数により現在時刻を取得する内部処理手段と、
前記複数のプロセッサ手段の内、前記現在時刻の次の前記指定された時刻に前記指定された処理を実行するプロセッサ手段を、前記割込み処理が実行されるプロセッサ手段として設定する内部処理切替手段とを備える、ことを特徴とするマルチプロセッサシステム。
【請求項９】
単位時間毎に前記割込み処理を発生する単位時間割込み発生手段をさらに備えることを特徴とする請求項８記載のマルチプロセッサシステム。
【請求項１０】
前記タイマ機能管理手段は、前記タイマ機能に係る依頼を前記指定された時刻の順に保持するタイマキュー手段を備えることを特徴とする請求項８又は９記載のマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサ部を有するマルチプロセッサシステム、その制御方法及びプログラムに関する。
【背景技術】
【０００２】
近年、組込みシステムにおいて、性能向上と消費電力抑制を同時に満足させる方法として、複数のプロセッサ部を搭載したマルチプロセッサシステムが増加している。これは、組込みシステムにおいて消費電力を抑制しつつ性能向上を図るには、システムのクロック周波数を上げるよりもプロセッサ数を増加させた方が有利であるからである。また、このような背景からマルチプロセッサ対応のオペレーティングシステムが必要とされている。
【０００３】
複数のプロセッサ部を制御するマルチプロセッサ対応のオペレーティングシステムにおいて、負荷の分散をどのように行うかは大きな課題である。特に、割込み処理については、特許文献１に示されるように命令発行元のプロセッサ部で割込み処理を実行するように指定する方法が一般的であった。この方法は、割込み処理を実行するプロセッサ部を指定可能とするほかにも、その割込み処理に関連する命令発行処理を同一のプロセッサ部で実行することにより、キャッシュヒット率の向上等の実行性能の向上にも寄与する。また、特許文献２に示されるように、各プロセッサ部の負荷を計算して、負荷の軽いプロセッサ部で割込み処理を実行する方法も提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開昭６３−１６３６５６号公報
【特許文献２】特許第３００８８９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、マルチプロセッサシステムにおいて、オペレーティングシステム内で扱う割込み処理を実行するプロセッサ部を決定することは容易ではない。特に、単位時間毎に発生する割込み処理によって現在時刻を管理する構成の場合には、その単位時間毎に発生する割込み処理を実行するプロセッサ部が問題となる。例えば、特許文献２に記載の技術では、同一処理の実行が複数のプロセッサ部に渡ってしまい、キャッシュヒット率の低下など実行性能を低下させてしまうという問題がある。また、特許文献１に記載の技術については、オペレーティングシステム内部の割込み処理にまで言及されていない。
【０００６】
例えば、アプリケーションがタイマ機能を利用する命令を発行する際にその命令の実行に係る割込みを発生させるプロセッサ部を指定すると考える。さらに、これに合わせてオペレーティングシステム内部の割込み処理、すなわち単位時間毎の割込みを発生させるプロセッサ部も同様に指定すると考える。ここで、アプリケーションの命令は発火時刻順に発行されることが約束されていないため、割込み処理が発火する以前に、複数の別のプロセッサ部を指定する命令が発行される場合がある。この場合には、単位時間毎の割込み処理をいずれかの指定されたプロセッサ部で実行すると、いずれかの命令発行が指定するプロセッサ部と異なってしまう。単位時間毎の割込み処理を実行するプロセッサ部と命令を実行するプロセッサ部が異なった場合、一般的には指定時間になったことを所望のプロセッサ部へソフトウェア割込みの機能等を利用して通知する必要がある。すなわち、現在時刻を管理するための処理と、時刻に関連する機能を実行するプロセッサ部が異なった場合、実行性能を低下させてしまう。
【０００７】
本発明は、このような問題に鑑みてなされたものであり、マルチプロセッサシステムでの時間管理に関する機能及び時刻に関連する機能の実行効率を向上させることを目的とする。
【課題を解決するための手段】
【０００８】
本発明のプログラムは、それぞれがタスクあるいはスレッドを処理する複数のプロセッサ手段を有するマルチプロセッサシステムのコンピュータに当該マルチプロセッサシステムの制御方法を実行させるプログラムであって、指定された時刻に指定された処理を前記プロセッサ手段で実行させるタイマ機能に係る依頼を受け、当該依頼を保持手段に登録する登録ステップと、前記保持手段に登録されている前記タイマ機能に係る依頼の情報に基づいて、前記指定された処理を実行するプロセッサ手段を指定するプロセッサ指定ステップと、単位時間毎に発生される割込み処理の回数により現在時刻を取得する内部処理ステップと、前記複数のプロセッサ手段の内、前記現在時刻の次の前記指定された時刻に前記指定された処理を実行するプロセッサ手段を、前記割込み処理が実行されるプロセッサ手段として設定する内部処理切替ステップとを前記コンピュータに実行させることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、タイマ機能に係る依頼の内で単位時間毎に発生される割込み処理の回数により現在時刻を取得する処理によって得られる現在時刻の次の指定された時刻に指定された処理を実行するプロセッサ手段と同じプロセッサ手段のみで現在時刻を取得するために単位時間毎に発生される割込み処理が実行される。これにより、同じ１つのプロセッサ手段で時間管理に関する機能及び時刻に関連する機能を行い、実行効率を向上させることができる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態によるマルチプロセッサシステムの構成例を示す概念図である。
【図２】オペレーティングシステムにおけるセットアップ処理及びタイマ機能依頼処理を示すフローチャートである。
【図３】オペレーティングシステムにおけるチック処理及びタイマ処理の流れを示すフローチャートである。
【図４】第１の実施形態におけるプロセッサ間通信の受信処理を示すフローチャートである。
【図５】オペレーティングシステムにおける切替え処理を示すフローチャートである。
【図６】第１の実施形態におけるチック処理及びタイマ処理の流れを示す図である。
【図７】第２の実施形態によるマルチプロセッサシステムの構成例を示す概念図である。
【図８】第２の実施形態におけるプロセッサ間通信の送信処理を示すフローチャートである。
【図９】第２の実施形態におけるプロセッサ間通信の受信処理を示すフローチャートである。
【図１０】第２の実施形態におけるチック処理及びタイマ処理の流れを示す図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態を図面に基づいて説明する。
【００１２】
（第１の実施形態）
本発明の第１の実施形態について説明する。
図１は、第１の実施形態によるマルチプロセッサシステムの構成例を示す概念図である。図１（Ａ）において、１０１はマルチプロセッサシステム全体を管理するオペレーティングシステムであり、１０２はそれぞれがタスクあるいはスレッドを処理する複数のプロセッサ部である。また、１０３は時刻管理に係る割込みを単位時間毎に発生する単位時間割込み発生部であり、１０４はプロセッサ部１０２間における通信の制御等を行うプロセッサ間通信部であり、１１０はアプリケーションである。
【００１３】
オペレーティングシステム１０１は、現在時刻１１１を管理するために単位時間割込み発生部１０３から発生する割込みにより複数のプロセッサ部１０２の何れか１つを介して割込み処理が起床されることで単位時間を知る。ここで、単位時間割込み発生部１０３は、例えば一般的な割込み制御装置によって構成され、任意のプロセッサ部１０２に割込み処理を発生させる設定が可能である。
【００１４】
アプリケーション１１０は、オペレーティングシステム１０１が提供するＡＰＩ（ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍ  ｉｎｔｅｒｆａｃｅ）を介して、オペレーティングシステム１０１の提供するタイマ機能を利用する。タイマ機能とは、時刻に関連する機能であり、例えばユーザが指定するユーザタイマ処理を、ユーザが指定した時刻に割込み処理として実行する機能である。アプリケーション１１０は、タイマ機能を利用するとき、例えばタイマ機能が発火する時刻と、発火した際に割込み処理として実行するユーザタイマ処理と、その実行すべきプロセッサ番号とを引数としてＡＰＩをコールする。
【００１５】
オペレーティングシステム１０１は、内部処理部１０５、内部処理切替部１０６、及びタイマ機能管理部１０７を有する。内部処理部１０５は、単位時間割込み発生部１０３から単位時間毎に発生する割込み処理としてのチック処理を実行する。内部処理部１０５において、チック処理の実行回数を計測することでオペレーティングシステム１０１は現在時刻１１１を管理する。内部処理切替部１０６は、タイマ機能管理部１０７が管理しているタイマ機能に係る情報に基づいて、単位時間毎の割込み処理としてのチック処理を発生させるプロセッサ部１０６を設定する。
【００１６】
タイマ機能管理部１０７は、タイマキュー部１０８及びプロセッサ指定部１０９を有し、アプリケーション１１０からのタイマ機能に係る依頼を依頼毎に管理する。タイマ機能管理部１０７は、タイマキュー部１０８においてタイマ機能に係る依頼の発火時刻順を管理し、プロセッサ指定部１０９において割込み処理としてのユーザタイマ処理を実行するプロセッサ部を指定する。図１（Ｂ）に、タイマキュー部１０８の実装例を示す。タイマキュー部１０８では、前述した発火時刻、ユーザタイマ処理、及び実行すべきプロセッサ部の情報（プロセッサ番号）を有する構造体を発火時刻順に並べて管理することが可能であり、これらは各プロセッサ部１０２からアクセス可能な情報として保持される。なお、タイマキュー部１０８に保持された情報（発火時刻、ユーザタイマ処理、及び実行すべきプロセッサ部の情報を有する構造体）は、それが発火してユーザタイマ処理が実行されることでタイマキュー部１０８より削除される。
【００１７】
図１に示したマルチプロセッサシステムにおいてオペレーティングシステム１０１は、アプリケーション１１０からタイマ機能に係る依頼を受けると、その依頼内容をタイマ機能管理部１０７内のタイマキュー部１０８に登録する。オペレーティングシステム１０１は、内部処理部１０５で現在時刻１１１を管理し、タイマキュー部１０８から現在時刻１１１に最も近い時刻に依頼を実行すべきプロセッサ部１０２の情報を得る。そして、オペレーティングシステム１０１は、該当するプロセッサ部１０２を内部処理切替部１０６を介して、単位時間毎の割込み処理（チック処理）が発生するプロセッサ部として切替える。このように制御することで、タイマキュー部１０８に登録されているタイマ機能に係る依頼のうち、現在時刻１１１に最も近い依頼を実行すべきプロセッサ部１０２と同じプロセッサ部１０２に時刻管理に係る単位時間毎の割込みを発生させることが可能となる。
【００１８】
なお、アプリケーション１１０から発火時刻が同時刻のユーザタイマ処理が設定されている場合、すなわち複数のプロセッサ部１０２が単位時間毎の割込み処理（チック処理）を発生させるプロセッサ部として設定可能な場合には、以下のようにすれば良い。例えば、そのうちの任意のユーザタイマ処理（例えば先に発行されたもの）を実行すべきプロセッサ部１０２にてチック処理及びユーザタイマ処理を実行する。そして、それ以外のユーザタイマ処理を実行すべきプロセッサ部１０２で実行するために、プロセッサ間通信部１０４を介して所望のプロセッサ部１０２に割込みを発生させてユーザタイマ処理を実行する。
【００１９】
なお、本実施形態におけるオペレーティングシステムにおいて、前述した部分以外は、一般のオペレーティングシステムと同様である。また、前述した説明では、アプリケーション１１０がタイマ機能を依頼する際には、発火する時刻、ユーザタイマ処理、及び実行すべきプロセッサ部の情報をＡＰＩの引数として指定するとしたが、これに限定されるものではない。例えば、タイマ機能の依頼時以外にも任意の時点で、依頼に対して発火時刻、ユーザタイマ処理、及び実行すべきプロセッサ部の全部又は一部を変更するＡＰＩとすることも可能である。また、例えば、オペレーティングシステム１０１がそれらの情報を使用する時点でコールバックを行って指定するようにしても良い。また、ユーザタイマ処理を実行すべきプロセッサ部をプロセッサ番号で指定するようにしているが、複数あるプロセッサ部１０２の内からその一つを一意に指定できれば良く、物理的な番号でなくとも、仮想番号、又は番号でない識別子等であっても良い。
【００２０】
次に、本実施形態でのオペレーティングシステムにおけるセットアップ処理及びタイマ機能依頼処理について、図２のフローチャートを参照して説明する。
図２（Ａ）は、オペレーティングシステムにおけるセットアップ処理を示すフローチャートである。セットアップ処理を開始すると、ステップＳ２０１にて、オペレーティングシステム１０１は、単位時間割込み発生部１０３により発生する割込み処理としてのチック処理を実行するプロセッサ部１０２を設定する。ここで、セットアップ処理はシステム起動時に実行されるので、ステップＳ２０１においては、チック処理を実行するプロセッサ部として、どのプロセッサ部を設定しても実行性能に対する影響は少ない。例えば、オペレーティングシステム１０１が、プロセッサ番号“０”（図１の例ではＰＵ０）のプロセッサ部１０２にてセットアップ処理を主に実行するのであれば、そのプロセッサ部に設定することも可能である。次に、ステップＳ２０２にて、オペレーティングシステム１０１は、単位時間割込み発生部１０３から単位時間毎に割込みが発生するように設定し、セットアップ処理を終了する。このセットアップ処理によって、システムを起動してから最初にチック処理を実行するプロセッサ部１０２が設定される。
【００２１】
図２（Ｂ）は、オペレーティングシステムにおけるタイマ機能依頼処理を示すフローチャートである。タイマ機能依頼処理は、アプリケーション１１０からのタイマ機能に係る依頼をオペレーティングシステム１０１が受けることで開始される。タイマ機能依頼処理を開始すると、ステップＳ２０３にて、オペレーティングシステム１０１は、ＡＰＩの引数として渡された発火時刻、ユーザタイマ処理、及び実行すべきプロセッサ番号の情報をタイマキュー部１０８に登録する。そして、タイマ機能依頼処理を終了する。なお、タイマ機能依頼処理において、後述するチック処理を実行するプロセッサ部１０２を切替えるステップを含めることも可能であり、その詳細については後述する。
【００２２】
次に、本実施形態でのオペレーティングシステムにおけるチック処理及びタイマ処理について、図３のフローチャートを参照して説明する。
図３は、オペレーティングシステムにおけるチック処理及びタイマ処理の流れを示すフローチャートである。ステップＳ３０１にて、オペレーティングシステム１０１は、内部処理部１０５で管理する現在時刻１１１を単位時刻分更新して、ステップＳ３０２へ進む。ステップＳ３０２にて、オペレーティングシステム１０１は、タイマキュー部１０８を参照することで、現在時刻に実行すべきユーザタイマ処理が存在するか否かを判断する。ステップＳ３０２での判断の結果、実行すべきユーザタイマ処理が存在する場合にはステップＳ３０３へ進み、存在しない場合にはステップＳ３０６へ進む。
【００２３】
ステップＳ３０３にて、オペレーティングシステム１０１は、同じくタイマキュー部１０８を参照することで、実行すべきユーザタイマ処理を現在のプロセッサ部１０２で実行すべきか否かを判断する。ステップＳ３０３での判断の結果、現在のプロセッサ部１０２で実行すべき場合にはステップＳ３０４へ進み、そうでない場合にはステップＳ３０５へ進む。ステップＳ３０４では、実行すべきユーザタイマ処理が現在のプロセッサ部１０２で実行され、その後タイマキュー部１０８から該当する依頼の構造体が削除されて、ステップＳ３０２へ進む。ステップＳ３０５では、ユーザタイマ処理を実行すべきプロセッサ部１０２に対してプロセッサ間通信部１０４を用いた割込み処理が発生され、ステップＳ３０２へ進む。
【００２４】
ステップＳ３０６にて、オペレーティングシステム１０１は、タイマキュー部１０８を参照して、内部処理切替部１０６によりチック処理を実行するプロセッサ部１０２の切替えを実行し、処理を終了する。ここで、本実施形態では、内部処理切替部１０６は、現在時刻１１１に最も近い時刻にユーザタイマ処理を実行すべきプロセッサ部１０２がチック処理を実行するプロセッサ部１０２となるように切替える。なお、ユーザタイマ処理がそれ以上依頼されていない（タイマキュー部１０８に依頼に係る構造体が１つも存在しない）場合には、例えばこれまでと同じ（直前に設定されていた）プロセッサ部１０２を、チック処理を実行するプロセッサ部１０２とする。また、ユーザタイマ処理がそれ以上依頼されていない場合には、予め定めたプロセッサ部１０２を、チック処理を実行するプロセッサ部１０２としても良い。
【００２５】
図３に示した例では、チック処理を実行するプロセッサ部１０２の切替えを行うステップＳ３０６を有しているが、同様の処理を図２（Ｂ）に示したステップＳ２０３の処理後に行うことも可能である。すなわち、ステップＳ２０３に続いて、指定された発火時刻が現在時刻１１１に最も近いユーザタイマ処理を実行すべきプロセッサ部１０２が、チック処理を実行するプロセッサ部１０２となるように内部処理切替部１０６を用いて切替えを行うことも可能である。この場合には、チック処理の実行が重ならないように図４に示す処理を実行している間においては、単位時間毎の割込みが発生しないように単位時間割込み発生部１０３を制御する。
【００２６】
次に、第１の実施形態におけるプロセッサ間通信の受信処理について、図４のフローチャートを参照して説明する。
図４は、第１の実施形態におけるプロセッサ間通信の受信処理を示すフローチャートである。このプロセッサ間通信の受信処理は、図３に示したステップＳ３０５でのプロセッサ間通信の送信処理に対応した処理である。ステップＳ４０１にて、プロセッサ間通信によって発生した割込み処理として、タイマキュー部１０８が参照され、現在のプロセッサ部１０２で実行すべきユーザタイマ処理が存在するか否かが判断される。判断の結果、実行すべきユーザタイマ処理が存在する場合にはステップＳ４０２へ進み、実行すべきユーザタイマ処理が存在しない場合にはプロセッサ間通信の受信処理を終了する。ステップＳ４０２では、実行すべきユーザタイマ処理が実行され、タイマキュー部１０８から該当する依頼の構造体が削除されて、ステップＳ４０１へ進む。このプロセッサ間通信の受信処理により、同時刻において別のプロセッサ部１０２で実行すべきユーザタイマ処理を実行することが可能になる。
【００２７】
第１の実施形態によれば、タイマ機能に係る依頼のうち現在時刻１１１に最も近い時刻に依頼を実行すべきプロセッサ部１０２と同じプロセッサ部１０２のみで現在時刻を管理するための単位時間毎に発生する割込み処理を実行する。例えば、図６（Ａ）に示すように、発火時刻、ユーザタイマ処理、及び実行すべきプロセッサ部を示すプロセッサ番号が指定されたアプリケーション１１０からのタイマ機能に係る依頼があったとする。このとき、図６（Ｂ）に示すように第１の実施形態におけるマルチプロセッサシステムでは、時刻２に処理Ａを実行するプロセッサ番号“０”のプロセッサ部で、時刻０〜２においてチック処理が実行される。そして、プロセッサ番号“０”のプロセッサ部で時刻２に処理Ａを実行した後は、時刻４に処理Ｂを実行するプロセッサ番号“１”のプロセッサ部で、時刻３〜４においてチック処理が実行される。さらに、プロセッサ番号“１”のプロセッサ部で時刻４に処理Ｂを実行すると、時刻７に処理Ｃを実行するプロセッサ番号“２”のプロセッサ部で、時刻５〜７においてチック処理が実行される。このように、現在時刻を管理するための処理とタイマ機能とを同じ１つのプロセッサ部で行うことで、マルチプロセッサシステムのオペレーティングシステムにおいて時間管理に関する機能及び時刻に関連する機能の実行効率を向上させることができる。
【００２８】
なお、本実施形態においては、ユーザタイマ処理を実行すべきプロセッサ部として特定のプロセッサ部を指定することとしているが、ユーザタイマ処理を任意のプロセッサ部で実行させるよう指定できるようにしても良い。例えば、プロセッサ番号としてシステム上に存在しない番号（例えば、“−１”）を与えることで、ユーザタイマ処理を任意のプロセッサ部で実行させるようプロセッサ指定部１０９に指示できるようにしても良い。
【００２９】
ユーザタイマ処理を任意のプロセッサ部で実行させるよう指定可能にする場合には、図３のステップＳ３０６での処理は図５のフローチャートに示される処理に置き換えれば良い。また、ユーザタイマ処理を任意のプロセッサ部で実行させるよう指定可能にし、タイマ機能依頼処理時にもチック処理を実行するプロセッサ部の切替えを行う場合には、ステップＳ２０３に続いて、図５のフローチャートに示されるように処理を行えば良い。
【００３０】
図５は、ユーザタイマ処理を任意のプロセッサ部で実行させるよう指定可能とした場合のオペレーティングシステムにおける切替え処理を示すフローチャートである。ステップＳ５０１にて、オペレーティングシステムは、タイマキュー部１０８を参照することで、指定された発火時刻が現在時刻１１１に最も近いユーザタイマ処理を実行すべきプロセッサ部として任意のプロセッサ部が指定されているか否かを判断する。判断の結果、実行すべきプロセッサ部として任意のプロセッサ部が指定されている場合には、ステップＳ５０２にて、オペレーティングシステム１０１は、チック処理を実行するプロセッサ部をこれまでと同じプロセッサ部として、切替え処理を終了する。一方、実行すべきプロセッサ部として、特定されたある１つのプロセッサ部が指定されている場合には、ステップＳ５０３へ進む。ステップＳ５０３にて、オペレーティングシステム１０１は、内部処理切替部１０６によりチック処理を実行するプロセッサ部を該当するプロセッサ部に切替えて、切替え処理を終了する。
【００３１】
例えば、図６（Ａ）に示したタイマ機能に係る依頼において、時刻７に処理Ｃをプロセッサ番号“２”のプロセッサ部で実行するという依頼に代えて、時刻７に処理Ｃを任意のプロセッサ部で実行させる依頼であったとする。このとき、図５に示したようにしてチック処理及びユーザタイマ処理を実行するプロセッサ部を切替えることで、図６（Ｃ）に示すように処理が行われる。すなわち、プロセッサ番号“１”のプロセッサ部で時刻４に処理Ｂを実行した後、プロセッサ番号“１”のプロセッサ部が引き続き時刻５〜７においてチック処理を実行して、時刻７に処理Ｃを実行する。
【００３２】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。
図７は、第２の実施形態によるマルチプロセッサシステムの構成例を示す概念図である。この図７において、図１に示した構成要素と同一の機能を有する構成要素には同一の符号を付し、重複する説明は省略する。第２の実施形態によるマルチプロセッサシステムは、図１（Ａ）に示した第１の実施形態によるマルチプロセッサシステムが有する各部に加え、さらに休止（ＨＡＬＴ）状態のプロセッサ部１０２を起床させるプロセッサ起床部１１２を有する。
【００３３】
第２の実施形態によるマルチプロセッサシステムは、ユーザタイマ処理を実行すべきプロセッサ部が休止状態である場合、発火する時刻にプロセッサ起床部１１２を用いて該当するプロセッサ部１０２を起床させる。そして、起床させたプロセッサ部１０２にプロセッサ間通信部１０４を用いて割込み処理を発生させることで、そのプロセッサ部１０２がユーザタイマ処理を実行する。起床したプロセッサ部１０２は、実行すべきユーザタイマ処理を実行した後、再び休止状態になる。
【００３４】
次に、第２の実施形態におけるプロセッサ間通信の送信処理について、図８のフローチャートを参照して説明する。図８は、第２の実施形態におけるプロセッサ間通信の送信処理を示すフローチャートである。なお、図８に示す処理は、第１の実施形態における図３に示したステップＳ３０５での処理に置き換えて実施する。
【００３５】
ステップＳ８０１にて、プロセッサ起床部１１２が参照され、ユーザタイマ処理を実行すべきプロセッサ部１０２が稼動しているか否かが判断される。なお、プロセッサ部１０２が稼動しているか否かは、例えばクロック制御装置等を参照することで、そのプロセッサ部へクロックが入力されている状態か否かによって判断できる。ユーザタイマ処理を実行すべきプロセッサ部１０２が稼動している場合にはステップＳ８０２へ進む。ステップＳ８０２では、プロセッサ間通信部１０４がユーザタイマ処理を実行すべきプロセッサ部１０２に割込み処理を発生させ、プロセッサ間通信の送信処理を終了する。
【００３６】
一方、ユーザタイマ処理を実行すべきプロセッサ部１０２が稼動していない場合にはステップＳ８０３へ進む。ステップＳ８０３では、プロセッサ起床部１１２がユーザタイマ処理を実行すべきプロセッサ部１０２を起床させ、ステップＳ８０４へ進む。続いて、ステップＳ８０４では、プロセッサ間通信部１０４がユーザタイマ処理を実行すべきプロセッサ部１０２に割込み処理を発生させる。この際、ユーザタイマ処理を実行すべきプロセッサ部１０２に対して休止中であった情報を含めて通知する。そして、プロセッサ間通信の送信処理を終了する。
【００３７】
次に、第２の実施形態におけるプロセッサ間通信の受信処理について、図９のフローチャートを参照して説明する。図９は、第２の実施形態におけるプロセッサ間通信の受信処理を示すフローチャートである。なお、図９に示す処理は、第１の実施形態における図４に示した処理に置き換えて実施する。
【００３８】
ステップＳ９０１にて、タイマキュー部１０８が参照され、プロセッサ間通信によって発生した割込み処理として、現在のプロセッサ部１０２で実行すべきユーザタイマ処理が存在するか否かが判断される。判断の結果、実行すべきユーザタイマ処理が存在する場合にはステップＳ９０２へ進み、実行すべきユーザタイマ処理が実行され、タイマキュー部１０８から該当する依頼の構造体が削除されて、ステップＳ９０１へ進む。一方、実行すべきユーザタイマ処理が存在しない場合にはステップＳ９０３へ進む。ステップＳ９０３では、受信した情報を基に本割込み処理以前にプロセッサ部が休止状態であったか否かが判断される。休止中であった場合にはステップＳ９０４へ進み、休止中でなかった場合にはプロセッサ間通信の受信処理を終了する。ステップＳ９０４では、再びプロセッサ部１０２を休止させて休止状態にした後、プロセッサ間通信の受信処理を終了する。
なお、第２の実施形態に係るその他の構成及び動作は、前述した第１の実施形態と同様である。
【００３９】
第２の実施形態によれば、ユーザタイマ処理を実行すべきプロセッサ部が休止状態である場合に、ユーザタイマ処理のみを実行すべきプロセッサにて実行することが可能になる。これにより、マルチプロセッサシステムのオペレーティングシステムにおいて時間管理に関する機能及び時刻に関連する機能の実行効率を向上させることができる。例えば、図６（Ａ）に示したようなアプリケーション１１０からのタイマ機能に係る依頼があり、プロセッサ番号“１”のプロセッサ部が休止状態であるとする。このとき、第２の実施形態におけるマルチプロセッサシステムでは、図１０に示すように時刻２に処理Ａを実行するプロセッサ番号“０”のプロセッサ部で、時刻０〜２においてチック処理が実行される。そして、プロセッサ番号“０”のプロセッサ部で時刻２に処理Ａを実行した後も、引き続き、直前に設定されていたプロセッサ番号“０”のプロセッサ部で、時刻３〜４においてチック処理が実行される。時刻４になると、プロセッサ起床部１１２によりプロセッサ番号“１”のプロセッサ部を起床させ、プロセッサ番号“１”のプロセッサ部が処理Ｂを実行する。その後、プロセッサ番号“１”のプロセッサ部で時刻４に処理Ｂを実行すると、プロセッサ番号“１”のプロセッサ部が再び休止状態とされ、時刻７に処理Ｃを実行するプロセッサ番号“２”のプロセッサ部で、時刻５〜７においてチック処理が実行される。
【００４０】
本実施形態では、ユーザタイマ処理を実行すべきプロセッサ部が休止状態である場合に、ユーザタイマ処理のみを実行すべきプロセッサ部で実行する実施形態について説明した。しかし、これに限定されず、例えば、ユーザタイマ処理を実行すべきプロセッサ部が休止状態である場合に、ユーザタイマ処理を実行すべきプロセッサ部にてチック処理及びユーザタイマ処理を実行する形態も可能である。
【００４１】
この場合、第１の実施形態におけるステップＳ３０６において、該当するプロセッサ部１０２が稼動中であるか否かを判断し、稼動中でなければプロセッサ起床部１１２がプロセッサ部１０２を起床させる。その後、内部処理切替部１０６が、起床したプロセッサ部１０２でチック処理を実行するよう切替える。このとき、チック処理を実行するプロセッサ部が別のプロセッサ部に切り替わった場合、それ以前にプロセッサ部が休止中であったか否かを判断し、休止中であったならばプロセッサ部を再び休止状態にする。以上のように実装することで、ユーザタイマ処理を実行すべきプロセッサ部が休止中である場合に、そのプロセッサ部にてチック処理及びユーザタイマ処理を実行する形態も可能である。
【００４２】
さらに、ユーザタイマ処理を実行すべきプロセッサ部が休止状態である場合に、該当するプロセッサ部を起床させない実施形態も可能である。この場合、第１の実施形態におけるステップＳ３０６において、該当するプロセッサ部１０２が稼動中であるか否かを判断する。判断の結果、該当するプロセッサ部１０２が稼動中でなければチック処理を実行するプロセッサ部１０２をこれまでと同じ（直前に設定されていた）プロセッサ部１０２とする。一方、該当するプロセッサ部１０２が稼動中であれば、第１の実施形態と同様とする。以上のように実装することで、ユーザタイマ処理を実行すべきプロセッサ部が休止中である場合に、チック処理及びユーザタイマ処理をそれ以前に実行していたプロセッサ部にて実行することが可能である。
【００４３】
（本発明の他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、前述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【００４４】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００４５】
１０１…オペレーティングシステム、１０２…プロセッサ部、１０３…単位時間割込み発生部、１０４…プロセッサ間通信部、１０５…内部処理部、１０６…内部処理切替部、１０７…タイマ機能管理部、１０８…タイマキュー部、１０９…プロセッサ指定部、１１０…アプリケーション、１１２…プロセッサ起床部
【図１】
0005591031.tif 000002
【図２】
0005591031.tif 000003
【図３】
0005591031.tif 000004
【図４】
0005591031.tif 000005
【図５】
0005591031.tif 000006
【図６】
0005591031.tif 000007
【図７】
0005591031.tif 000008
【図８】
0005591031.tif 000009
【図９】
0005591031.tif 000010
【図１０】
0005591031.tif 000011