(57)【要約】      （修正有）【課題】ハードウエアタイマを設定する処理によりアプリケーションプログラムの実行速度が落ちるのを抑制する。【解決手段】情報処理装置１は、アプリケーションプログラム１１を実行する第１のプロセッサ１２と、第２のプロセッサ１４と、メモリ１３と、設定された時刻に割り込みを生成するハードウエアタイマ１５とを有する。第１のプロセッサは、アプリケーションプログラムのプロセスから受け付けた第１の時刻の情報をメモリに格納すると共に、メモリに格納された識別情報をハードウエアタイマの設定を要することを示す情報に変更し、第２のプロセッサは、識別情報を監視し、識別情報がハードウエアタイマの設定を要することを示す情報に変更された場合に、第１の時刻の情報をメモリから読み出し、第１の時刻の情報に基づきハードウエアタイマの設定を行う。【選択図】図１
2015225474.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションプログラムを実行する第１のプロセッサと、
第２のプロセッサと、
メモリと、
設定された時刻に割り込みを生成するハードウエアと、
を有し、
前記第１のプロセッサは、前記アプリケーションプログラムのプロセスから受け付けた第１の時刻の情報を前記メモリに格納すると共に、前記メモリに格納された識別情報を前記ハードウエアのタイマ設定を要することを示す情報に変更し、
前記第２のプロセッサは、前記識別情報を監視し、前記識別情報が前記ハードウエアのタイマ設定を要することを示す情報に変更された場合に、前記第１の時刻の情報を前記メモリから読み出し、前記第１の時刻の情報に基づき前記ハードウエアのタイマ設定を行う
情報処理装置。
【請求項２】
実行すべき他の処理がある場合に、前記第２のプロセッサは、前記識別情報を監視する処理から前記実行すべき他の処理に、前記第２のプロセッサの使用権を移転する
請求項１記載の情報処理装置。
【請求項３】
前記第１のプロセッサは、前記第アプリケーションプログラムのプロセスから、前記第１の時刻になった場合に実行すべき処理の情報を受け付け、前記メモリに格納し、
前記ハードウエアは、前記第１の時刻になった場合に割り込みを生成し、
前記割り込みが生成された場合に、前記第２のプロセッサは、前記第１の時刻になった場合に実行すべき処理の情報を前記メモリから取り出し、前記第１の時刻になった場合に実行すべき処理を実行する
請求項１記載の情報処理装置。
【請求項４】
前記ハードウエアのタイマ設定を行う処理において、
前記第１の時刻までの時間を算出し、
前記第１の時刻までの時間を、前記ハードウエアのカウンタ値に加算すべき値に変換し、
前記ハードウエアのカウンタ値を前記ハードウエアから取得し、
前記ハードウエアのカウンタ値に、前記ハードウエアのカウンタ値に加算すべき値を加算した値である設定値を算出し、
前記設定値を、前記ハードウエアのコンパレータ値に設定する
請求項１乃至３のいずれか１つ記載の情報処理装置。
【請求項５】
アプリケーションプログラムを実行する第１のプロセッサと、第２のプロセッサと、メモリと、設定された時刻に割り込みを生成するハードウエアとを有する情報処理装置により実行されるタイマ設定方法であって、
前記第１のプロセッサは、前記アプリケーションプログラムのプロセスから受け付けた第１の時刻の情報を前記メモリに格納すると共に、前記メモリに格納された識別情報を前記ハードウエアのタイマ設定を要することを示す情報に変更し、
前記第２のプロセッサは、前記識別情報を監視し、前記識別情報が前記ハードウエアのタイマ設定を要することを示す情報に変更された場合に、前記第１の時刻の情報を前記メモリから読み出し、前記第１の時刻の情報に基づき前記ハードウエアのタイマ設定を行う
処理を含むタイマ設定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、設定された時刻に割り込みを生成するハードウエアのタイマ設定技術に関する。
【背景技術】
【０００２】
設定された時刻に割り込みを生成するハードウエアは、ハードウエアタイマと呼ばれる。ハードウエアタイマに対する時刻の設定は、例えば、アプリケーションプログラムのプロセスがタイマ機能を利用するためのシステムコールを発行し、ＯＳ（Operating System）がハードウエアタイマのコンパレータ値を設定することによって行われる。
【０００３】
ハードウエアタイマを設定する処理は、ＣＰＵ（Central Processing Unit）が低速なＩ／Ｏ（Input/Output）のチップセットにアクセスする処理を含むため、時間がかかる。そして、ハードウエアタイマを設定する処理に時間がかかると、アプリケーションプログラムを実行するＣＰＵがシステムコールから復帰するタイミングが遅れ、アプリケーションプログラムの実行速度が落ちる。これは、特にアプリケーションプログラムを高速で実行すべき場合に問題になる。従来技術は、このような問題には着目していない。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−４８３７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従って、本発明の目的は、１つの側面では、ハードウエアタイマを設定する処理によってアプリケーションプログラムの実行速度が落ちるのを抑制するための技術を提供することである。
【課題を解決するための手段】
【０００６】
本発明に係る情報処理装置は、アプリケーションプログラムを実行する第１のプロセッサと、第２のプロセッサと、メモリと、設定された時刻に割り込みを生成するハードウエアとを有する。そして、第１のプロセッサは、アプリケーションプログラムのプロセスから受け付けた第１の時刻の情報をメモリに格納すると共に、メモリに格納された識別情報をハードウエアのタイマ設定を要することを示す情報に変更し、第２のプロセッサは、識別情報を監視し、識別情報がハードウエアのタイマ設定を要することを示す情報に変更された場合に、第１の時刻の情報をメモリから読み出し、第１の時刻の情報に基づきハードウエアのタイマ設定を行う。
【発明の効果】
【０００７】
１つの側面では、ハードウエアタイマを設定する処理によってアプリケーションプログラムの実行速度が落ちるのを抑制できるようになる。
【図面の簡単な説明】
【０００８】
【図１】図１は、本実施の形態のシステム概要を示す図である。
【図２】図２は、キューに格納されるデータの構造を示す図である。
【図３】図３は、受付部が実行する処理の処理フローを示す図である。
【図４】図４は、設定スレッドが実行する処理の処理フローを示す図である。
【図５】図５は、割り込みハンドラが実行する処理の処理フローを示す図である。
【図６】図６は、本実施の形態と単一のＣＰＵを用いた場合とを比較するための図である。
【発明を実施するための形態】
【０００９】
図１に、本実施の形態における情報処理装置１の構成を示す。情報処理装置１は、ＣＰＵ１２と、メモリ１３と、ＣＰＵ１４と、ハードウエアタイマ１５とを有する。
【００１０】
ＣＰＵ１２は、例えばハードディスクドライブ（ＨＤＤ：Hard Disk Drive）等に格納されたアプリケーションプログラム及びＯＳ１０のプログラムを実行することにより、アプリケーションプログラムのプロセス１１と、ＯＳ１０における受付部１０１（例えばスレッド）とを実現する。メモリ１３は、フラグ１３１が格納される領域と、キュー１３２の領域とを含む。ＣＰＵ１４は、例えばハードディスクドライブ等に格納されたＯＳ１０のプログラムを実行することにより、ＯＳ１０における設定スレッド１０２及び割り込みハンドラ１０３を実現する。ハードウエアタイマ１５は、例えば、マイクロ秒の精度を有するハードウエアタイマ（例えば、高精度イベントタイマ（ＨＰＥＴ：High Precision Event Timer））である。ハードウエアタイマ１５は、例えば、ＣＰＵ１２及び１４と比較して低速なＩ／Ｏのチップセットに組み込まれている。
【００１１】
アプリケーションプログラムのプロセス１１は、タイマ機能を利用するためのシステムコールを発行する。受付部１０１は、受け付けたシステムコールに基づき処理を行い、処理結果をキュー１３２に格納すると共に、フラグ１３１を更新する。設定スレッド１０２は、フラグ１３１が更新された場合に、キュー１３２に格納されたデータに基づき、ハードウエアタイマ１５の設定を行う（すなわち、タイマ設定を行う）。ハードウエアタイマ１５は、設定された時刻（本実施の形態においては、コンパレータ値とカウンタ値とが一致する場合）に割り込みを生成する。割り込みハンドラ１０３は、ハードウエアタイマ１５からの割り込みにより呼び出された場合、キュー１３２に格納されたデータに基づき処理を実行する。
【００１２】
図２に、キュー１３２に格納されるデータの構造を示す。キュー１３２に格納されるデータは、リンクされたデータ構造（Linked Data Structure）を有する。ポインタ２０１は、最初に処理すべきデータ（図２の例では、データ２０２）を指し示す。各データは、満了時刻の情報と満了処理の情報とを含む。各データには、そのデータの次に処理すべきデータを指し示すポインタが付加される。満了時刻とは、ハードウエアタイマ１５のタイムアウトの時刻であり、満了処理とは、満了時刻になった場合に割り込みハンドラ１０３が実行すべき処理である。満了時刻が早いデータほど先に処理される。従って図２の例では、満了時刻Ａは満了時刻Ｂより早く、満了時刻Ｂは満了時刻Ｃより早い。
【００１３】
次に、図３乃至図６を用いて、情報処理装置１の動作について説明する。まず、図３を用いて、受付部１０１が実行する処理について説明する。
【００１４】
まず、アプリケーションプログラムのプロセス１１は、タイマ機能を利用するためのシステムコールを発行する。受付部１０１は、アプリケーションプログラムのプロセス１１からシステムコールを受け付ける（図３：ステップＳ１）。
【００１５】
受付部１０１は、アプリケーションプログラムのプロセス１１から受け付けたシステムコールに基づき、満了時刻の情報及び満了処理の情報を含むデータを生成する（ステップＳ３）。
【００１６】
受付部１０１は、ステップＳ３において生成されたデータを、そのデータに含まれる満了時刻の情報に従いキュー１３２に格納する（ステップＳ５）。ステップＳ５においては、満了時刻が早いデータほど先に処理されるように、キュー１３２に格納されたデータに対してポインタの再設定が行われる。
【００１７】
受付部１０１は、キュー１３２に格納されたデータについての満了時刻のうち最も早い満了時刻が、ステップＳ５の処理によって変化したか判断する（ステップＳ７）。すなわち、ステップＳ５において格納したデータについての満了時刻が最も早い満了時刻であるか判断する。
【００１８】
最も早い満了時刻が変化していない場合（ステップＳ７：Ｎｏルート）、ハードウエアタイマ１５の設定が行われなくてもよいので、処理を終了する。一方、最も早い満了時刻が変化した場合（ステップＳ７：Ｙｅｓルート）、ハードウエアタイマ１５の設定が行われるべきである。従って、受付部１０１は、メモリ１３に格納されているフラグ１３１を更新する（ステップＳ９）。ステップＳ９においては、例えば、フラグの値（０又は１）を反転させる。そして処理を終了する。ここで、ＣＰＵ１２はシステムコールから復帰する。
【００１９】
以上のようにフラグを更新することで、ハードウエアタイマ１５の設定を行うべきであることをＣＰＵ１４に通知できるようになる。また、以上の処理を完了すればＣＰＵ１２はシステムコールから復帰し、アプリケーションプログラムを実行することができるようになる。よって、ボトルネックを解消し、アプリケーションプログラムの実行速度が落ちるのを抑制できるようになる。
【００２０】
次に、図４を用いて、設定スレッド１０２が実行する処理について説明する。
【００２１】
まず、設定スレッド１０２は、メモリ１３におけるフラグ１３１が更新されたか判断する（図４：ステップＳ１１）。フラグ１３１が更新されていない場合（ステップＳ１１：Ｎｏルート）、ハードウエアタイマ１５の設定を行わなくてよいので、ステップＳ２３の処理に移行する。
【００２２】
一方、フラグ１３１が更新された場合（ステップＳ１１：Ｙｅｓルート）、ハードウエアタイマ１５の設定を行うため、設定スレッド１０２は、キュー１３２における先頭のデータ（すなわち、満了時刻が最も早いデータ）について、満了時刻までの残り時間を算出する（ステップＳ１３）。ステップＳ１３においては、残り時間とは、システム時計等から取得した現在時刻から満了時刻までの時間である。
【００２３】
設定スレッド１０２は、ステップＳ１３において算出された残り時間を、ハードウエアタイマ１５のカウンタ値に加算すべき値に変換する（ステップＳ１５）。
【００２４】
設定スレッド１０２は、ハードウエアタイマ１５のカウンタ値を、ハードウエアタイマ１５から取得する（ステップＳ１７）。そして、設定スレッド１０２は、ステップＳ１５の処理による変換後の値を、ハードウエアタイマ１５から取得したカウンタ値に加えることで、ハードウエアタイマ１５のコンパレータ値に設定すべき値を算出する（ステップＳ１９）。
【００２５】
設定スレッド１０２は、ステップＳ１９において算出された値を、ハードウエアタイマ１５のコンパレータ値として設定する（ステップＳ２１）。
【００２６】
設定スレッド１０２は、監視命令を発行し（ステップＳ２３）、メモリ１３におけるフラグ１３１のアドレスを登録する。監視命令とは、例えば、Intel 64 アーキテクチャにおけるmonitor命令である。
【００２７】
設定スレッド１０２は、リスケジュール要求が有るかプロセススケジューラに確認する（ステップＳ２５）。リスケジュール要求とは、他のスレッド等が動作すべき状態である場合に出される要求である。プロセススケジューラは、ＣＰＵの使用権の割り当てを行う。
【００２８】
リスケジュール要求が有る場合（ステップＳ２５：Ｙｅｓルート）、設定スレッド１０２は、プロセススケジューラに、ＣＰＵ１４の使用権を、設定スレッド１０２から他のスレッド等に移転させる（ステップＳ２７）。これにより、設定スレッド１０２がＣＰＵ１４を占有するのを防ぐことができる。
【００２９】
他のスレッド等によるＣＰＵ１４の使用が完了すると、設定スレッド１０２は、ＣＰＵ１４の使用権を獲得する（ステップＳ２９）。そしてステップＳ１１の処理に戻る。
【００３０】
一方、リスケジュール要求が無い場合（ステップＳ２５：Ｎｏルート）、設定スレッド１０２は、ＣＰＵ待機命令を発行する（ステップＳ３１）。ＣＰＵ待機命令は、例えば、Intel 64 アーキテクチャにおけるmwait命令である。ＣＰＵ待機命令により、設定スレッド１０２は、登録されたアドレスに何らかのアクセスがあるまで待機する（すなわち、フラグ１３１を監視しつつ休止状態に遷移する）。
【００３１】
設定スレッド１０２は、フラグ１３１の更新又は割り込みがあった場合に、ＣＰＵ待機命令から復帰する（ステップＳ３３）。これによりフラグ１３１の監視は終了する。そしてステップＳ１１の処理に戻る。
【００３２】
以上のような処理を実行すれば、ハードウエアタイマ１５を設定する処理をＣＰＵ１２から委託されたＣＰＵ１４が、適切に設定を行えるようになる。また、プロセススケジューラに確認をすることで、設定スレッド１０２がＣＰＵ１４を占有するのを防ぐことができる。なお、ＣＰＵ１４の使用権を移転するのは、以下のような理由による。具体的には、設定スレッド１０２が直接ＣＰＵ待機命令を発行して待機している状態は、ＯＳ１０からは設定スレッド１０２が走行し続けている状態であると認識される。そのため、ＯＳ１０の他のスレッドが動作できない（すなわち設定スレッド１０２がＣＰＵ１４を独占する）からである。
【００３３】
次に、図５を用いて、割り込みハンドラ１０３が実行する処理について説明する。
【００３４】
ハードウエアタイマ１５は、ハードウエアタイマ１５のコンパレータ値とカウンタ値とが一致する場合に割り込みを生成する。ＣＰＵ１４が割り込みを検出すると、割り込みハンドラ１０３が呼び出される。割り込みハンドラ１０３は、未処理のデータがキュー１３２に有るか判断する（図５：ステップＳ４１）。
【００３５】
未処理のデータがキュー１３２に無い場合（ステップＳ４１：Ｎｏルート）、処理を終了する。一方、未処理のデータがキュー１３２に有る場合（ステップＳ４１：Ｙｅｓルート）、割り込みハンドラ１０３は、未処理のデータのうち満了時刻が最も早いデータを特定する（ステップＳ４３）。
【００３６】
割り込みハンドラ１０３は、現在時刻が、ステップＳ４３において特定されたデータについての満了時刻を経過したか判断する（ステップＳ４５）。現在時刻が満了時刻を経過した場合（ステップＳ４５：Ｙｅｓルート）、割り込みハンドラ１０３は、ステップＳ４３において特定されたデータに含まれる満了処理の情報に基づき、満了処理を実行する（ステップＳ４７）。そしてステップＳ４１の処理に戻る。
【００３７】
一方、現在時刻が満了時刻を経過していない場合（ステップＳ４５：Ｙｅｓルート）、割り込みハンドラ１０３は、ステップＳ４３において特定されたデータについて、満了時刻までの残り時間を算出する（ステップＳ４９）。ステップＳ４９においては、残り時間とは、システム時計等から取得した現在時刻から満了時刻までの時間である。
【００３８】
割り込みハンドラ１０３は、ステップＳ４９において算出された残り時間を、ハードウエアタイマ１５のカウンタ値に加算すべき値に変換する（ステップＳ５１）。
【００３９】
割り込みハンドラ１０３は、ハードウエアタイマ１５のカウンタ値を、ハードウエアタイマ１５から取得する（ステップＳ５３）。そして、割り込みハンドラ１０３は、ステップＳ５１の処理による変換後の値を、ハードウエアタイマ１５から取得したカウンタ値に加えることで、ハードウエアタイマ１５のコンパレータ値に設定すべき値を算出する（ステップＳ５５）。
【００４０】
割り込みハンドラ１０３は、ステップＳ５５において算出された値を、ハードウエアタイマ１５のコンパレータ値として設定する（ステップＳ５７）。そして処理を終了する。
【００４１】
以上のような処理を実行すれば、割り込みが発生した場合に割り込みハンドラ１０３が適切に満了処理を実行できるようになる。
【００４２】
図６を用いて、本実施の形態の効果について説明する。本実施の形態においては、ハードウエアタイマ１５を設定する処理を、ＣＰＵ１２がフラグを用いてＣＰＵ１４に委託する。従って、ＣＰＵ１２はシステムコールから早期に復帰するので、アプリケーションプログラムの実行が止まる時間を短くすることができる。また、ＣＰＵ１２はフラグを更新すれば（すなわち、メモリ１３に１度アクセスすれば）ＣＰＵ１４に処理を委託できるので、ＣＰＵ１４に処理を委託することがアプリケーションプログラムの実行速度を落とすこともない。
【００４３】
一方、単一のＣＰＵを利用する場合には、ハードウエアタイマ１５を設定する処理が終わるまではシステムコールから復帰することができない。ハードウエアタイマ１５を設定する処理のうち、ハードウエアタイマ１５にアクセスする処理（例えば、ステップＳ１７及びＳ２１の処理）は特に時間がかかる処理であるので、アプリケーションプログラムの実行が止まる時間が長くなる。
【００４４】
なお、ハードウエアタイマ１５へのアクセスに時間がかかることに鑑み、ＣＰＵが有する割り込み機構（例えば、Intel 64 アーキテクチャにおけるLocal APIC Timerなど）を利用することも考えられる。例えば、割り込み機構を有するＣＰＵを１つ用意し、そのＣＰＵに割り込みを発生させることが考えられる。しかし、割り込みを別のＣＰＵに発生させることができないため、アプリケーションプログラムを実行するＣＰＵが割り込み処理（例えば、満了処理及び次の割り込みの設定処理等）を実行せざるを得ず、アプリケーションプログラムの実行速度が落ちる。
【００４５】
また、割り込み機構を有するＣＰＵを、アプリケーションプログラムを実行するＣＰＵとは別に用意し、そのＣＰＵに割り込みを発生させることも考えられる。しかし、アプリケーションプログラムを実行するＣＰＵと、割り込みを発生させるＣＰＵとの間の通信（例えばＩＰＩ（Inter-Processor Interrupt）等）において、種々の事前処理（例えば、割り込み先ＣＰＵの設定、相手のＣＰＵが実行する関数、及び引数の設定など）を行うことになるため時間がかかる。
【００４６】
また、本実施の形態と同様に、スレッドを新たに起動し、そのスレッドに、ＣＰＵ待機命令を使用せずスピンループによりフラグを監視させ、フラグが更新された場合にハードウエアタイマ１５への設定を行わせることも考えられる。しかしこのようにすると、フラグを監視する処理がＣＰＵを占有するため他のカーネルスレッドが動作できない場合があり、また、消費電力が本実施の形態と比較して多い。
【００４７】
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した情報処理装置１の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
【００４８】
また、上で説明したデータ保持構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【００４９】
また、メモリ１３上のフラグ１３１を介してＣＰＵ１４に委託する処理は、ハードウエアタイマ１５の設定に限られず、他の処理であってもよい。
【００５０】
また、ＣＰＵ１２及び１４は、マルチコアプロセッサのコアであってもよい。マルチコアプロセッサにおける複数のコアの間で、タイマ設定に関連する処理の負荷を分散できるようになる。
【００５１】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【００５２】
本実施の形態の第１の態様に係る情報処理装置は、（Ａ）アプリケーションプログラムを実行する第１のプロセッサと、（Ｂ）第２のプロセッサと、（Ｃ）フラグを格納するメモリと、（Ｄ）設定された時刻に割り込みを生成するハードウエアとを有する。そして、（ｂ１）第２のプロセッサは、フラグを監視し、（ａ１）第１のプロセッサは、アプリケーションプログラムのプロセスから受け付けた第１の時刻の情報をメモリに格納すると共に、フラグを更新し、（ｂ２）フラグが更新された場合に、第２のプロセッサは、第１の時刻の情報をメモリから読み出し、第１の時刻の情報に基づきハードウエアの設定を行う。
【００５３】
このようにすれば、ハードウエアを設定する処理を第２のプロセッサに実行させることができるので、第１のプロセッサはアプリケーションプログラムの実行をすぐさま再開でき、アプリケーションプログラムの実行速度が落ちるのを抑制できるようになる。また、メモリに格納されたフラグを利用するので、プロセッサ間の通信を高速化できるようになる。
【００５４】
また、（ｂ３）実行すべき他の処理がある場合に、第２のプロセッサは、フラグを監視する処理から実行すべき他の処理に、第２のプロセッサの使用権を移転してもよい。このようにすれば、フラグを監視する処理が第２のプロセッサを占有するのを抑制できるようになる。
【００５５】
また、（ａ２）第１のプロセッサは、アプリケーションプログラムのプロセスから、第１の時刻になった場合に実行すべき処理の情報を受け付け、メモリに格納し、（ｄ１）第２のプロセッサにより設定された第１の時刻になった場合に、ハードウエアは、割り込みを生成し、（ｂ４）割り込みが生成された場合に、第２のプロセッサは、第１の時刻になった場合に実行すべき処理の情報をメモリから取り出し、第１の時刻になった場合に実行すべき処理を実行してもよい。このようにすれば、割り込みが生成された場合に実行すべき処理を適切に行えるようになる。
【００５６】
また、上で述べたハードウエアの設定を行う処理において、（ｂ２１）第１の時刻までの時間を算出し、（ｂ２２）第１の時刻までの時間を、ハードウエアのカウンタ値に加算すべき値に変換し、（ｂ２３）ハードウエアのカウンタ値をハードウエアから取得し、（ｂ２４）ハードウエアのカウンタ値に、ハードウエアのカウンタ値に加算すべき値を加算した値である設定値を算出し、（ｂ２４）設定値を、ハードウエアのコンパレータ値に設定してもよい。このようにすれば、ハードウエアを適切に設定できるようになる。
【００５７】
また、上で述べたハードウエアは、（ｄ２）高精度イベントタイマであってもよい。高精度イベントタイマを使用する場合にも対処できるようになる。
【００５８】
本実施の形態の第２の態様に係るタイマ設定方法は、アプリケーションプログラムを実行する第１のプロセッサと、第２のプロセッサと、フラグを格納するメモリと、設定された時刻に割り込みを生成するハードウエアとを有する情報処理装置により実行される。そして、本タイマ設定方法は、（Ｅ）第２のプロセッサは、フラグを監視し、（Ｆ）第１のプロセッサは、アプリケーションプログラムのプロセスから受け付けた第１の時刻の情報をメモリに格納すると共に、フラグを更新し、（Ｇ）フラグが更新された場合に、第２のプロセッサは、第１の時刻の情報をメモリから読み出し、第１の時刻の情報に基づきハードウエアの設定を行う処理を含む。
【００５９】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００６０】
（付記１）
アプリケーションプログラムを実行する第１のプロセッサと、
第２のプロセッサと、
メモリと、
設定された時刻に割り込みを生成するハードウエアと、
を有し、
前記第１のプロセッサは、前記アプリケーションプログラムのプロセスから受け付けた第１の時刻の情報を前記メモリに格納すると共に、前記メモリに格納された識別情報を前記ハードウエアのタイマ設定を要することを示す情報に変更し、
前記第２のプロセッサは、前記識別情報を監視し、前記識別情報が前記ハードウエアのタイマ設定を要することを示す情報に変更された場合に、前記第１の時刻の情報を前記メモリから読み出し、前記第１の時刻の情報に基づき前記ハードウエアのタイマ設定を行う
情報処理装置。
【００６１】
（付記２）
実行すべき他の処理がある場合に、前記第２のプロセッサは、前記識別情報を監視する処理から前記実行すべき他の処理に、前記第２のプロセッサの使用権を移転する
付記１記載の情報処理装置。
【００６２】
（付記３）
前記第１のプロセッサは、前記第アプリケーションプログラムのプロセスから、前記第１の時刻になった場合に実行すべき処理の情報を受け付け、前記メモリに格納し、
前記ハードウエアは、前記第１の時刻になった場合に割り込みを生成し、
前記割り込みが生成された場合に、前記第２のプロセッサは、前記第１の時刻になった場合に実行すべき処理の情報を前記メモリから取り出し、前記第１の時刻になった場合に実行すべき処理を実行する
付記１記載の情報処理装置。
【００６３】
（付記４）
前記ハードウエアのタイマ設定を行う処理において、
前記第１の時刻までの時間を算出し、
前記第１の時刻までの時間を、前記ハードウエアのカウンタ値に加算すべき値に変換し、
前記ハードウエアのカウンタ値を前記ハードウエアから取得し、
前記ハードウエアのカウンタ値に、前記ハードウエアのカウンタ値に加算すべき値を加算した値である設定値を算出し、
前記設定値を、前記ハードウエアのコンパレータ値に設定する
付記１乃至３のいずれか１つ記載の情報処理装置。
【００６４】
（付記５）
前記ハードウエアは、高精度イベントタイマである
付記１乃至４のいずれか１つ記載の情報処理装置。
【００６５】
（付記６）
アプリケーションプログラムを実行する第１のプロセッサと、第２のプロセッサと、メモリと、設定された時刻に割り込みを生成するハードウエアとを有する情報処理装置により実行されるタイマ設定方法であって、
前記第１のプロセッサは、前記アプリケーションプログラムのプロセスから受け付けた第１の時刻の情報を前記メモリに格納すると共に、前記メモリに格納された識別情報を前記ハードウエアのタイマ設定を要することを示す情報に変更し、
前記第２のプロセッサは、前記識別情報を監視し、前記識別情報が前記ハードウエアのタイマ設定を要することを示す情報に変更された場合に、前記第１の時刻の情報を前記メモリから読み出し、前記第１の時刻の情報に基づき前記ハードウエアのタイマ設定を行う
処理を含むタイマ設定方法。
【符号の説明】
【００６６】
１  情報処理装置    １０  ＯＳ
１０１  受付部    １０２  設定スレッド
１０３  割り込みハンドラ    １１  アプリケーションプログラムのプロセス
１２  ＣＰＵ    １３  メモリ
１３１  フラグ    １３２  キュー
１４  ＣＰＵ    １５  ハードウエアタイマ
【図１】
2015225474.tif 000003
【図２】
2015225474.tif 000004
【図３】
2015225474.tif 000005
【図４】
2015225474.tif 000006
【図５】
2015225474.tif 000007
【図６】
2015225474.tif 000008