(57)【要約】【課題】複数のプロセッサに対応付けられたティックタイマの割込み回数をプログラムのタイムスライスに応じて制御し、不要な割込みを防止してシステムの処理能力を向上するディスパッチ装置を得ること。【解決手段】ティックタイマ１０４〜１０７の定周期割込みの数をカウントしてタイムスライスを計測し、計測が終了したタイムスライスのプログラムを実行したプロセッサ１００〜１０３に対応するランキュー記憶領域１２０〜１２３に登録された実行待ちプログラムのタイムスライスに基づき当該ティックタイマ１０４〜１０７の定周期割込みのティック値を選択し、選択したティック値を当該ティックタイマ１０４〜１０７に設定して定周期割込みのティック値を変更し、当該ランキュー記憶領域１２０〜１２３の実行待ちプログラムのタイムスライスと選択したティック値に基づき定周期割込みの回数のカウント値を変更する。【選択図】        図１
2008305351.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサと、これらのプロセッサに１対１に対応付けられ定周期割込みを発生させるティックタイマと、前記複数のプロセッサに対応付けられ当該プロセッサに割当てた実行待ちプログラムが登録されるランキューとを有する対称型マルチプロセッサシステムに適用され、前記ティックタイマが発生する定周期割込みの回数をカウントして当該プロセッサが実行するプログラムの実行割当時間を計測して時分割で前記複数のプロセッサにプログラムを割当てるディスパッチ装置であって、
前記実行割当時間の計測が終了すると、計測が終了した実行割当時間のプログラムを実行していたプロセッサに対応するランキューに登録されたすべての実行待ちプログラムの実行割当時間に基づいて当該ティックタイマが発生する定周期割込みの発生周期を選択し、選択した発生周期を当該ティックタイマに設定して定周期割込みの発生周期を変更するとともに、当該ランキューに登録されている各実行待ちプログラムの実行割当時間および選択した発生周期に基づいて定周期割込みの回数のカウント値を変更するタイムスライス管理部、
を備えることを特徴とするディスパッチ装置。
【請求項２】
前記タイムスライス管理部は、
前記ランキューに登録された実行待ちプログラムの中でつぎにプロセッサが実行するプログラムの実行割当時間が発生周期の約数の場合には現在の発生周期を選択し、前記ランキューに登録された実行待ちプログラムの中でつぎにプロセッサが実行するプログラムの実行割当時間が発生周期の約数ではない場合には前記ランキューに登録されたすべての実行待ちプログラムの実行割当時間の最大公約数を発生周期として選択すること、
を特徴とする請求項１に記載のディスパッチ装置。
【請求項３】
前記プロセッサから要求されたプログラムの実行割当時間および各ティックタイマの発生周期に基づいて要求されたプログラムを実行するプロセッサを選択するプロセッサ選択部、
をさらに備え、
前記プロセッサ選択部によって選択されたプロセッサに対応するランキューに要求されたプログラムを登録すること、
を特徴とする請求項１または２に記載のディスパッチ装置。
【請求項４】
前記プロセッサ選択部は、
前記ティックタイマの発生周期が要求されたプログラムの実行割当時間の約数となるか否かを判定し、約数となる発生周期が存在する場合には約数となる発生周期のティックタイマに対応付けられたプロセッサを選択し、約数となる発生周期が存在しない場合には、発生周期の中で最も小さい値の発生周期のティックタイマに対応付けられたプロセッサを選択すること、
を特徴とする請求項３に記載のディスパッチ装置。
【請求項５】
前記プロセッサ選択部は、
約数となる発生周期が複数存在する場合には、約数となる発生周期の値が最も大きいティックタイマに対応付けられたプロセッサを選択すること、
を特徴とする請求項４に記載のディスパッチ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、対称型マルチプロセッサシステムにおいて時分割でプロセッサにプログラムを割当てるディスパッチ装置に関するものであり、特に、プログラムの実行割当時間を定周期割込みの発生回数をカウントして計測するティスパッチ装置に関するものである。
【背景技術】
【０００２】
対称型マルチプロセッサ（ＳＭＰ：Symmetric Multi Processor）システムは、マルチプロセッシング方法の１つで複数のプロセッサが実行する処理の役割を決めずに各プロセッサを同等のものとして扱うシステムである。従来の対称型マルチプロセッサに関する従来技術として、たとえば、特許文献１および非特許文献１がある。
【０００３】
特許文献１には、予め定められたプロセッサの割当て更新間隔毎に、各ランキューに対するプロセッサの割当て状態を管理して動的に制御し、各ランキューに属するプログラム数に偏りが生じないようにディスパッチすることによって、システムの性能の低下を防止するディスパッチ装置に関する技術が開示されている。
【０００４】
また、非特許文献１に記載の従来の対称型マルチプロセッサは、複数（ここでは、４個とする）のプロセッサ、各プロセッサが実行する複数のプログラムからなる４個のプログラム群を記憶するプログラム記憶部、プロセッサと１対１で接続され周期的割込みを発生させるティックタイマ、４個のプログラム群の各プログラムに対応するタイムスライスカウンタの初期値（タイムスライスカウンタ初期値）およびタイムスライスカウンタ値を記憶するプログラム情報と各プロセッサと対応付けられて各プロセッサが実行すべきプログラムの待ち情報が登録されるランキューと、４個のティックタイマの割込みの周期となるティック値とを記憶する記憶部、およびプログラム情報に基づいてプロセッサにプログラムを割当てる（ディスパッチする）ディスパッチ装置とを備えている。
【０００５】
プログラム起動時には、ディスパッチ装置は、起動元となるプログラム（親プログラム）のタイムスライスカウンタ初期値を起動すべきプログラム（子プログラム）のタイムスライスカウンタ初期値とし、このタイムスライスカウンタ初期値を親プログラムを実行しているプロセッサに対応するランキューに登録する。
【０００６】
また、ティックタイマの周期的割込み発生時には、ディスパッチ装置は、実行しているプログラムのタイムスライスカウンタ値をデクリメントする。ディスパッチ装置は、タイムスライスカウンタ値「０」以外の場合には処理を終了し、タイムスライスカウンタ値が「０」になった場合には、周期的割込みを発生したティックタイマに接続されたプロセッサに対応するランキューからつぎに実行すべきプログラムを選択する。ディスパッチ装置は、選択したプログラムに対応するタイムスライスカウンタ初期値をタイムスライスカウンタ値として設定して、当該プロセッサに選択したプログラムを実行させる。
【０００７】
また、プログラムの実行割当て時間であるタイムスライスの変更時には、ディスパッチ装置は、要求されたタイムスライスをティック値で除算して商を求め、求めた商をタイムスライスカウンタ初期値とする。
【０００８】
このように、非特許文献１に記載の対称型マルチプロセッサシステムでは、親プログラムのタイムスライスカウンタ初期値を子プログラムのタイムスライスカウンタ初期値とし、タイムスライス変更時には、タイムスライスをティック値で除算した商をタイムスライスカウンタ初期値とするようにしている。
【０００９】
【特許文献１】特開２０００−１３２４１１号公報
【非特許文献１】高橋浩和（著）、小田逸郎（著）、山幡為佐久（著）「Ｌｉｎｕｘカーネル解読室」ソフトバンククリエイティブ、２００６年１１月１８日、Ｐ４７〜Ｐ４８、Ｐ８２
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、上記特許文献１および非特許文献１に記載の従来技術では、ディスパッチしたプログラムのタイムスライスを計測するためにシステム内でその値が一意であるティックタイマ周期値を使用している。そのため、不要な定周期割り込みが発生し、その割込み処理を行うことにより処理能力が低下してしまうという問題があった。
【００１１】
たとえば、タイムスライスを計測するタイムスライスカウンタ初期値は、タイムスライスをティック値で除算した商である。そのため、タイムスライスの値が大きいとタイムスライスカウンタ初期値も大きくなり、ティック値を周期として発生する定周期割込みのたびに、タイムスライスカウンタをデクリメントする処理を行わなければならない。この処理はティック値を大きく設定すれば改善することはできるが、ティック値を大きく設定すると、タイムスライスの値が小さい場合には最低でもティック値の時間がタイムスライスの値となり、その分プロセッサを使用するためシステムの処理能力が低下してしまう。
【００１２】
本発明は、上記に鑑みてなされたものであって、対称型マルチプロセッサシステムにおいて各プロセッサに割り当てたプログラムのタイムスライスを計測するためのティックタイマの割り込み回数を実行するプログラムのタイムスライスに応じて制御し、不要な割り込みを防止してシステムの処理能力を向上することができるディスパッチ装置を得ることを目的とする。
【課題を解決するための手段】
【００１３】
上述した課題を解決し、目的を達成するために、本発明は、複数のプロセッサと、これらのプロセッサに１対１に対応付けられ定周期割込みを発生させるティックタイマと、前記複数のプロセッサに対応付けられ当該プロセッサに割当てた実行待ちプログラムが登録されるランキューとを有する対称型マルチプロセッサシステムに適用され、前記ティックタイマが発生する定周期割込みの回数をカウントして当該プロセッサが実行するプログラムの実行割当時間を計測して時分割で前記複数のプロセッサにプログラムを割当てるディスパッチ装置であって、前記実行割当時間の計測が終了すると、計測が終了した実行割当時間のプログラムを実行していたプロセッサに対応するランキューに登録されたすべての実行待ちプログラムの実行割当時間に基づいて当該ティックタイマが発生する定周期割込みの発生周期を選択し、選択した発生周期を当該ティックタイマに設定して定周期割込みの発生周期を変更するとともに、当該ランキューに登録されている各実行待ちプログラムの実行割当時間および選択した発生周期に基づいて定周期割込みの回数のカウント値を変更するタイムスライス管理部、を備えることを特徴とする。
【発明の効果】
【００１４】
この発明によれば、ティックタイマが発生する定周期割込みの回数をカウントして当該プロセッサが実行するプログラムの実行割当時間を計測し、実行割当時間の計測が終了すると、計測が終了した実行割当時間のプログラムを実行していたプロセッサに対応するランキューに登録されたすべての実行待ちプログラムの実行割当時間に基づいて当該ティックタイマが発生する定周期割込みの発生周期を選択し、選択した発生周期を当該ティックタイマに設定して定周期割込みの発生周期を変更するとともに、当該ランキューに登録されている各実行待ちプログラムの実行割当時間および決定した発生周期に基づいて定周期割込みの回数のカウント値を変更するようにしているため、不要な割り込みを防止してシステムの処理能力を向上することができるディスパッチ装置を得ることができるという効果を奏する。
【発明を実施するための最良の形態】
【００１５】
以下に、本発明にかかるディスパッチ装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１６】
実施の形態１．
図１〜図６を用いてこの発明の実施の形態１を説明する。図１は、この発明におけるディスパッチ装置が適用される対称型マルチプロセッサシステムの実施の形態１の構成を示す図である。図１において、対称型マルチプロセッサは、プログラム記憶部１２８、複数（この場合は４つ）のプロセッサ１００〜１０３、ティックタイマ１０４〜１０７、記憶部１０８、およびディスパッチ装置１０９を備えている。
【００１７】
プログラム記憶部１２８は、プロセッサ１００〜１０３が実行する複数のプログラムからなるプログラム群１１３〜１１６を格納する。プロセッサ１００〜１０３は、ディスパッチ装置１０９によってディスパッチ（割り当てられた）プログラム群１１３〜１１６のプログラムを実行する演算処理装置である。
【００１８】
ティックタイマ１０４〜１０７は、それぞれプロセッサ１００〜１０３に接続されている。ティックタイマ１０４〜１０７は、ティック値の計測を繰り返してティック値を周期とする周期的割込みを接続されたプロセッサ１００〜１０３に発生させる。
【００１９】
記憶部１０８は、ディスパッチ装置１０９がプログラム群１１３〜１１６の各プログラムをディスパッチするために必要な情報を記憶する。記憶部１０８は、プログラム情報記憶領域１１７と、ランキュー記憶領域１２０〜１２３と、ティック値記憶領域１２４〜１２７とを有する。
【００２０】
プログラム情報記憶領域１１７は、プログラム群１１３〜１１６のプログラム毎の情報を記憶する領域である。プログラム情報記憶領域１１７は、プログラム群１１３〜１１６のプログラム毎にそれぞれ対応付けられて当該プログラムがプログラム記憶部１２８のどの領域に格納されているかを示す情報（たとえば、プログラムが格納されている先頭アドレス）を記憶するとともに、当該プログラムに割り当てられたタイムスライスを記憶するタイムスライス記憶領域１１８およびティックタイマ１０４〜１０７が発生させる定周期割り込みの回数（定周期割込み回数）のカウント値を記憶するタイムスライスカウンタ記憶領域１１９を有する。
【００２１】
なお、タイムスライスカウンタ記憶領域１１９の初期値は、タイムスライス記憶領域１１８に記憶されたタイムスライスの時間において定周期割込みが何回発生するかを示す値であり、定周期割込みが発生する毎にタイムスライスカウンタ記憶領域１１９の値がデクリメントされる。すなわち、タイムスライスカウンタ記憶領域１１９は、減算カウンタであるタイムスライスカウンタのカウント値を記憶する。
【００２２】
ランキュー記憶領域１２０〜１２３は、プロセッサ１００〜１０３に割当てられた実行可能状態のプログラムのプログラム情報を指し示す行列（ポインタ）を順番に記憶する領域である。具体的には、たとえば、当該プログラムに対応するプログラム情報記憶領域１１７が記憶部１０８のどの領域に記憶されているかを当該プログラムに対応するプログラム情報記憶領域１１７の先頭アドレスで示し、このアドレスをポインタとして用いる。ティック値記憶領域１２４〜１２７は、ティックタイマ１０４〜１０７がプロセッサ１００〜１０３に発生させる定周期割込み間隔（ティック値）を記憶する領域である。
【００２３】
ディスパッチ装置１０９は、プロセッサ１００〜１０３にプログラム群１１３〜１１６のプログラムを割当てる。ディスパッチ装置１０９は、ディスパッチ処理部１１０と、プロセッサ選択部１１１と、タイムスライス管理部１１２とを備えている。
【００２４】
タイムスライス管理部１１２は、プログラム群１１３〜１１６の各プログラムに対する処理時間をプロセッサ１００〜１０３に割当てるプロセッサ割当て時間を管理する。プロセッサ選択部１１１は、プログラム群１１３〜１１６のプログラムを実行するプロセッサ１００〜１０３を選択する。ディスパッチ処理部１１０は、プロセッサ選択部１１１によって選択されたプロセッサにプログラム群１１３〜１１６のプログラムを割当てる。
【００２５】
なお、図１においては、ティックタイマ１０４、ランキュー記憶領域１２０、ティック値記憶領域１２４、およびプログラム群１１３がプロセッサ１００に対応しており、ティックタイマ１０５、ランキュー記憶領域１２１、ティック値記憶領域１２５、およびプログラム群１１４がプロセッサ１０１に対応しており、ティックタイマ１０６、ランキュー記憶領域１２２、ティック値記憶領域１２６、およびプログラム群１１５がプロセッサ１０２に対応しており、ティックタイマ１０７、ランキュー記憶領域１２３、ティック値記憶領域１２７、およびプログラム群１１６がプロセッサ１０３に対応している。
【００２６】
つぎに、図１と、図２〜図６のフローチャートとを参照してこの実施の形態１のディスパッチ装置１０９の動作について説明する。まず、図２のフローチャートを参照して、プログラム起動時のディスパッチ処理の動作について説明する。プログラム群１１３〜１１６の各プログラムは、システム起動時にディスパッチ装置１０９にプロセッサ１００〜１０３に割当てられるメインのプログラムが実行され、メインプログラムの処理に応じてつぎに実行すべきプログラムが起動される。すなわち、実行しているプログラムを親プログラムとして、親プログラムから子となるプログラム（子プログラム）が起動される。この起動時に実行されるのが、プログラム起動時のディスパッチ処理である。
【００２７】
プロセッサ１００〜１０３は、現在実行している親プログラムおよび起動すべき子プログラム（起動対象プログラム）を識別するための情報をディスパッチ装置１０９のディスパッチ処理部１１０に通知する。
【００２８】
ディスパッチ処理部１１０は、プロセッサ１００〜１０３から通知された親プログラムおよび起動対象プログラムを識別するための情報に基づいて、親プログラムのタイプスライスを起動対象プログラムのタイムスライスにコピーする（ステップＳ２００）。
【００２９】
具体的には、ディスパッチ処理部１１０は、プロセッサ１００〜１０３から通知された親プログラムおよび起動対象プログラムを識別するための情報に基づいて、親プログラムおよび起動対象プログラムに対応するプログラム情報記憶領域１１７のタイムスライス記憶領域１１８を認識する。ディスパッチ処理部１１０は、親プログラムに対応するタイムスライス記憶領域１１８に記憶されているタイムスライスを読み出し、起動対象プログラムに対応するタイムスライス記憶領域１１８に読み出したタイムスライスを記憶させる。
【００３０】
プロセッサ選択部１１１は、プロセッサ選択処理を実行して起動対象プログラムを実行するプロセッサを選択する（ステップＳ２０１）。
【００３１】
図３のフローチャートを参照して、プロセッサ選択処理の動作について説明する。プロセッサ選択部１１１は、プロセッサ１００〜１０３に対応するティック値記憶領域１２４〜１２７からプロセッサ１００〜１０３のティック値を読み出す。プロセッサ選択部１１１は、読み出したティック値が起動対象プログラムのタイムスライスの約数となるティック値のプロセッサ１００〜１０３を候補プロセッサとして選択する（ステップＳ３００）。
【００３２】
なお、起動対象プログラムのタイムスライスは、ディスパッチ処理部１１０がプロセッサ選択部１１１に通知するようにしてもよいし、プロセッサ選択部１１１が、プロセッサ１００〜１０３から通知された起動対象プログラムを識別するための情報から起動対象プログラムに対応するプログラム情報記憶領域１１７のタイムスライス記憶領域１１８を認識し、認識したタイムスライス記憶領域１１８から読み出すようにしてもよい。
【００３３】
プロセッサ選択部１１１は、候補プロセッサが存在するか否かを判定する（ステップＳ３０１）。候補プロセッサが存在しない場合（ステップＳ３０１，Ｎｏ）、すなわち起動対象プログラムのタイムスライスの約数となるティック値のプロセッサ１００〜１０３が存在しない場合、プロセッサ選択部１１１は、各ティック値を比較してティック値が最小のプロセッサ１００〜１０３を選択してプロセッサ選択処理を終了する（ステップＳ３０２）。
【００３４】
候補プロセッサが存在する場合（ステップＳ３０１，Ｙｅｓ）、プロセッサ選択部１１１は、候補プロセッサが複数存在するか否かを判定する（ステップＳ３０３）。候補プロセッサが複数存在する場合（ステップＳ３０３，Ｙｅｓ）、プロセッサ選択部１１１は、候補プロセッサのティック値を比較して、ティック値が最大の候補プロセッサを選択して処理を終了する（ステップＳ３０４）。
【００３５】
候補プロセッサが複数存在しない場合（ステップＳ３０３，Ｎｏ）、すなわち候補プロセッサが１つの場合、プロセッサ選択部１１１は、候補プロセッサを選択して処理を終了する（ステップＳ３０５）。
【００３６】
図２に戻って、プロセッサ選択処理によってプロセッサが選択されると、ディスパッチ処理部１１０は、起動対象プログラムを選択されたプロセッサ１００〜１０３に対応するランキュー記憶領域１２０〜１２３に追加登録する（ステップＳ２０２）。具体的には、ディスパッチ処理部１１０は、起動対象プログラムに対応するプログラム情報記憶領域１１７のポインタをランキュー記憶領域１２０〜１２３に追加登録してプログラム起動時のディスパッチ処理を終了する。
【００３７】
つぎに、図４のフローチャートを参照して、ティックタイマ１０４〜１０７による定周期割込み発生時のディスパッチ処理の動作について、ティックタイマ１０４がプロセッサ１００に定周期割込みを発生した場合を例に挙げて説明する。
【００３８】
なお、ティックタイマ１０４は、ティック値記憶領域１２４に記憶されたティック値が設定されており、ティック値の計測を繰り返してティック値を周期とする定周期割込みをプロセッサ１００に通知するものとする。
【００３９】
プロセッサ１００は、ティックタイマ１０４から定周期割込みの通知を受けると、定周期割込みが発生したことをディスパッチ装置１０９に通知する。
【００４０】
ディスパッチ装置１０９のタイムスライス管理部１１２は、ランキュー記憶領域１２０の先頭に登録されているポインタを読み出して、プロセッサ１００が実行中のプログラムに対応するプログラム情報記憶領域１１７を認識する。タイムスライス管理部１１２は、プロセッサ１００が実行中のプログラムに対応するプログラム情報記憶領域１１７のタイムスライスカウンタ記憶領域１１９に記憶されているカウント値を１減算する（ステップＳ４００）。
【００４１】
タイムスライス管理部１１２は、プロセッサ１００が実行中のプログラムに対応するプログラム情報記憶領域１１７のタイムスライスカウンタ記憶領域１１９に記憶されているカウント値が「０」か否かを判定する（ステップＳ４０１）。カウント値が「０」ではない場合（ステップＳ４０１，Ｎｏ）、タイムスライス管理部１１２は、定周期割込み時のディスパッチ処理を終了する。
【００４２】
カウント値が「０」の場合（ステップＳ４０１，Ｙｅｓ）、すなわち実行中のプログラムのタイムスライスが完了した場合、ディスパッチ処理部１１０は、ランキュー記憶領域１２０からつぎに実行するプログラムを選択する（ステップＳ４０２）。タイムスライス管理部１１２は、ディスパッチ処理部１１０が選択したプログラムを実行対象プログラムとしてタイムスライス管理処理を実行し、実行対象プログラムのタイムスライスカウンタの初期値を設定する（ステップＳ４０３）。
【００４３】
図５のフローチャートを参照して、タイムスライス管理処理の動作について説明する。タイムスライス管理部１１２は、実行対象プログラムに対応するプログラム情報記憶領域１１７のタイムスライス記憶領域１１８に記憶されているタイムスライスを読み出す。タイムスライス管理部１１２は、ティック値記憶領域１２４に記憶されているティック値が読み出したタイムスライスの約数であるか否かを判定する（ステップＳ５００）。
【００４４】
ティック値が読み出したタイムスライスの約数ではない場合（ステップＳ５００，Ｎｏ）、タイムスライス管理部１１２は、ランキュー記憶領域１２０に記憶されているすべてのプログラムのプログラム情報記憶領域１１７のタイムスライス記憶領域１１８に記憶されているタイムスライスを読み出す。タイムスライス管理部１１２は、読み出したすべてのタイムスライス（ランキュー記憶領域１２０に記憶されているすべてのプログラムのタイムスライス）の最大公約数を求め、求めた最大公約数をティック値としてティック値記憶領域１２４に記憶させる（ステップＳ５０１）。
【００４５】
タイムスライス管理部１１２は、ティック値記憶領域１２４に記憶させたティック値に基づいてティックタイマ１０４を設定する（ステップＳ５０２）。これにより、ティックタイマ１０４は、新たなティック値の計測を繰り返してティック値を周期とする周期的割込みを接続されたプロセッサ１００に発生させる。
【００４６】
タイムスライス管理部１１２は、ランキュー記憶領域１２０に記憶されているすべてのポインタから実行待ちのプログラムに対応するプログラム情報記憶領域１１７のタイムスライス記憶領域１１８に記憶されているタイムスライスを読み出し、読み出したタイムスライスをティック値で除算して商を求め、求めた商をタイムスライスカウンタの初期値として当該タイムスライスカウンタ記憶領域１１９に記憶させてタイムスライス管理処理を終了する（ステップＳ５０３）。
【００４７】
一方、ティック値が読み出したタイムスライスの約数の場合（ステップＳ５００，Ｙｅｓ）、タイムスライス管理部１１２は、読み出したタイムスライスをティック値で除算して商を求め、求めた商をタイムスライスカウンタの初期値として実行対象プログラムに対応するプログラム情報記憶領域１１７のタイムスライスカウンタ記憶領域１１９に記憶させてタイムスライス管理処理を終了する（ステップＳ５０３）。
【００４８】
図４に戻って、タイムスライス管理処理によって実行対象プログラムのタイムスライスカウンタの初期値が設定された後、ディスパッチ処理部１１０は、その旨をプロセッサ１００に通知し、実行対象プログラムの実行を開始させる（ステップＳ４０４）。
【００４９】
具体的には、ディスパッチ処理部１１０から通知を受けると、プロセッサ１００は、ランキュー記憶領域１２０に登録されたポインタから実行対象プログラムに対応するプログラム情報記憶領域１１７を認識し、認識したプログラム情報記憶領域１１７に記憶されている先頭アドレスを読み出す。プロセッサ１００は、読み出した先頭アドレスが示すプログラム記憶部１２８に記憶されている実行対象プログラムを読み出して実行対象プログラムの実行を開始する。
【００５０】
なお、ここでは、ティックタイマ１０４がプロセッサ１００に定周期割込みを発生した場合を例に挙げて定周期割り込み発生時のディスパッチ処理の動作を説明したが、ティックタイマ１０５〜１０７が定周期割込みを発生した場合には、プロセッサ１００、ランキュー記憶領域１２０、およびティック値記憶領域１２４が、プロセッサ１０１〜１０３、ランキュー記憶領域１２１〜１２３、およびティック値記憶領域１２５〜１２７となるだけでその動作は先の図４および図５を参照して説明した定周期割込み時のディスパッチ処理と同様となる。
【００５１】
つぎに、図６のフローチャートを参照して、タイムスライス変更処理の動作について説明する。タイムスライス変更処理は、プログラム群１１３〜１１６の各プログラム実行時に、プログラムに基づいてプロセッサ１００〜１０３がディスパッチ装置１０９にタイムスライス変更要求を通知した際に実行される。
【００５２】
プロセッサ１００〜１０３からタイムスライスを含むタイムスライス変更要求を受けると、ディスパッチ処理部１１０は、タイムスライス変更要求に含まれるタイムスライスを抽出する。ディスパッチ処理部１１０は、抽出したタイムスライス値を当該プログラムに対応するプログラム情報記憶領域１１７のタイムスライス記憶領域１１８に記憶させる（ステップＳ６００）。
【００５３】
タイムスライス管理部１１２は、要求されたプログラムを実行対象プログラムとして、先の図５のフローチャートを参照して説明したタイムスライス管理処理を実行して、実行対象プログラムのタイムスライスカウンタの初期値を設定してタイムスライス変更処理を終了する（ステップＳ６０１）。
【００５４】
以上説明したように、この実施の形態１においては、ティックタイマ１０４〜１０７が発生する定周期割込みの回数をカウントして当該プロセッサ１００〜１０３が実行するプログラムのタイムスライス（実行割当時間）を計測し、タイムスライスの計測が終了すると、計測が終了したタイムスライスのプログラムを実行していたプロセッサ１００〜１０３に対応するランキュー記憶領域１２０〜１２３に登録されたすべての実行待ちプログラムのタイムスライスに基づいて当該ティックタイマ１０４〜１０７が発生する定周期割込みのティック値（発生周期）を選択し、選択したティック値を当該ティックタイマ１０４〜１０７に設定して定周期割込みのティック値を変更するとともに、当該ランキュー記憶領域１２０〜１２３に登録されている各実行待ちプログラムのタイムスライスおよび選択したティック値に基づいて定周期割込みの回数のカウント値（タイムスライスカウンタの初期値）を変更するようにしているため、実行するプログラムに最適なティック値によってティックタイマ１０４〜１０７に定周期割込みを発生させることが可能となり、不要な割り込みを防止してシステムの処理能力を向上することができる。
【００５５】
また、この実施の形態１においては、ランキュー記憶領域１２０〜１２３に登録された実行待ちプログラムの中でつぎにプロセッサ１００〜１０３が実行するプログラムのタイムスライスがティック値の約数の場合には現在のティック値を選択し、ランキュー記憶領域１２０〜１２３に登録された実行待ちプログラムの中でつぎにプロセッサ１００〜１０３が実行するプログラムのタイムスライスがティック値の約数ではない場合には当該ランキュー記憶領域１２０〜１２３に登録されたすべての実行待ちプログラムのタイムスライスの最大公約数をティック値として選択するようにしているため、実行するプログラムに最適なティック値によってティックタイマ１０４〜１０７に定周期割込みを発生させることが可能となり、ティックタイマ１０４〜１０７による割込み頻度を抑えることが可能となり、不要な割り込みを防止してシステムの処理能力を向上することができる。
【００５６】
さらに、この実施の形態１においては、プロセッサ１００〜１０３から要求されたプログラムのスライスタイムおよび各ティックタイマ１０４〜１０７のティック値に基づいて要求されたプログラムを実行するプロセッサ１００〜１０３を選択するようにしているため、実行するプログラムに最適なティック値によってティックタイマ１０４〜１０７に定周期割込みが発生するプロセッサ１００〜１０３を選択することが可能となり、不要な割り込みを防止してシステムの処理能力を向上することができる。
【００５７】
また、この実施の形態１においては、ティックタイマ１０４〜１０７のティック値が要求されたプログラムのタイムスライスの約数となるか否かを判定し、約数となるティック値が存在する場合には約数となるティック値のティックタイマ１０４〜１０７に対応付けられたプロセッサ１００〜１０３を選択し、約数となるティック値が存在しない場合には、ティック値の中で最も小さい値のティック値のティックタイマ１０４〜１０７に対応付けられたプロセッサ１００〜１０３を選択するようにしているため、実行するプログラムに最適なティック値によってティックタイマ１０４〜１０７に定周期割込みが発生するプロセッサ１００〜１０３を選択することが可能となり、不要な割り込みを防止してシステムの処理能力を向上することができる。
【００５８】
また、この実施の形態１においては、約数となるティック値が複数存在する場合には、約数となるティック値の値が最も大きいティックタイマ１０４〜１０７に対応付けられたプロセッサ１００〜１０３を選択するようにしているため、実行するプログラムに最適なティック値によってティックタイマ１０４〜１０７に定周期割込みが発生するプロセッサ１００〜１０３を選択することが可能となり、不要な割り込みを防止してシステムの処理能力を向上することができる。
【００５９】
実施の形態２．
図７を参照してこの発明の実施の形態２を説明する。先の実施の形態１のディスパッチ装置は、タイムスライス変更処理において、タイムスライス変更要求を通知したプロセッサを対象としてタイムスライスの変更を行ったが、この実施の形態２のディスパッチ装置は、要求されたタイムスライスを設定する最適なプロセッサを選択して実行対象プログラムを実行するプロセッサを変更するものである。
【００６０】
この実施の形態２のディスパッチ装置が適用される対称型マルチプロセッサシステムの構成は、先の図１に示した実施の形態１と同じであるのでここではその説明を省略する。また、この実施の形態２のディスパッチ装置１０９と先の実施の形態２のディスパッチ装置１０９の動作はほぼ同じであり、相違点は、タイムスライス変更処理のみであるので、ここでは、タイムスライス変更処理の動作のみを説明する。
【００６１】
図７のフローチャートを参照して、この実施の形態２のディスパッチ装置１０９のタイムスライス変更処理の動作を説明する。ディスパッチ処理部１１０は、プロセッサ１００〜１０３からタイムスライス変更要求を受けると、タイムスライス変更要求に含まれるタイムスライスを抽出する。ディスパッチ処理部１１０は、抽出したタイムスライス値を当該プログラムに対応するプログラム情報記憶領域１１７のタイムスライス記憶領域１１８に記憶させる（ステップＳ７００）。
【００６２】
プロセッサ選択部１１１は、タイムスライスの変更を要求されたプログラムを起動対象プログラムとし、先の図３のフローチャートを参照して説明したプロセッサ選択処理を実行して起動対象プログラムを実行するプロセッサ１００〜１０３を選択する（ステップＳ７０１）。
【００６３】
ディスパッチ処理部１１０は、プロセッサ選択部１１１が選択したプロセッサ１００〜１０３が現在動作中のプロセッサ１００〜１０３（タイムスライス変更要求を通知したプロセッサ）と等しいか否かを判定する（ステップＳ７０２）。プロセッサ選択部１１１が選択したプロセッサ１００〜１０３が現在動作中のプロセッサ１００〜１０３と異なる場合（ステップＳ７０２，Ｎｏ）、ディスパッチ処理部１１０は、選択したプロセッサ１００〜１０３に対応するランキュー記憶領域１２０〜１２３に追加登録してタイムスライス変更処理を終了する（ステップＳ７０３）。
【００６４】
プロセッサ選択部１１１が選択したプロセッサ１００〜１０３が現在動作中のプロセッサ１００〜１０３と等しい場合（ステップＳ７０２，Ｙｅｓ）、タイムスライス管理部１１２は、タイムスライスの変更を要求されたプログラムを実行対象プログラムとし、先の図５のフローチャートを参照して説明したタイムスライス管理処理を実行して実行対象プログラムのタイムスライスカウンタの初期値を設定してタイムスライス変更処理を終了する（ステップＳ７０４）。
【００６５】
以上説明したように、この実施の形態２においては、プログラムのタイムスライスを変更する際に、変更されたタイムスライスおよび各ティックタイマ１０４〜１０７のティック値に基づいてタイムスライスが変更されたプログラムを実行するプロセッサ１００〜１０３を選択するようにしているため、実行するプログラムに最適なティック値によってティックタイマ１０４〜１０７に定周期割込みが発生するプロセッサを選択することが可能となり、不要な割り込みを防止してシステムの処理能力を向上することができる。
【００６６】
なお、先の実施の形態１および２のディスパッチ装置１０９のディスパッチ処理部１１０、プロセッサ選択部１１１、およびタイムスライス管理部１１２によって実現される前述した各機能をソフトウェアによって実現し、対称型マルチプロセッサシステムのオペレーティングシステム内に含めて、オペレーティングシステムのディスパッチ処理を実現するディスパッチプログラムとして提供するようにしてもよい。この場合、ティックタイマ１０４〜１０７によって定周期割込みが発生したプロセッサ１００〜１０３が、ディスパッチプログラムを実行するようにすればよい。
【産業上の利用可能性】
【００６７】
以上のように、本発明にかかるディスパッチ装置は、対称型マルチプロセッサシステムに有用であり、特に、プログラムの実行割当時間を定周期割込みの発生回数をカウントして計測してプログラムを実行するシステムに適している。
【図面の簡単な説明】
【００６８】
【図１】この発明におけるディスパッチ装置が適用される対称型マルチプロセッサシステムの実施の形態１の構成を示す図である。
【図２】実施の形態１のディスパッチ装置のプログラム起動時のディスパッチ処理の動作を説明するためのフローチャートである。
【図３】実施の形態１のディスパッチ装置のプロセッサ選択処理の動作について説明するためのフローチャートである。
【図４】実施の形態１のディスパッチ装置の定周期割り込み発生時のディスパッチ処理の動作について説明するためのフローチャートである。
【図５】実施の形態１のディスパッチ装置のタイムスライス管理処理の動作について説明するためのフローチャートである。
【図６】実施の形態１のディスパッチ装置のタイムスライス変更処理の動作について説明するためのフローチャートである。
【図７】実施の形態２のディスパッチ装置のタイムスライス変更処理の動作について説明するためのフローチャートである。
【符号の説明】
【００６９】
１００，１０１，１０２，１０３  プロセッサ
１０４，１０５，１０６，１０７  ティックタイマ
１０８  記憶部
１０９  ディスパッチ装置
１１０  ディスパッチ処理部
１１１  プロセッサ選択部
１１２  タイムスライス管理部
１１３，１１４，１１５，１１６  プログラム群
１１７  プログラム情報記憶領域
１１８  タイムスライス記憶領域
１１９  タイムスライスカウンタ記憶領域
１２０，１２１，１２２，１２３  ランキュー記憶領域
１２４，１２５，１２６，１２７  ティック値記憶領域
１２８  プログラム記憶部
【図１】
2008305351.tif 000003
【図２】
2008305351.tif 000004
【図３】
2008305351.tif 000005
【図４】
2008305351.tif 000006
【図５】
2008305351.tif 000007
【図６】
2008305351.tif 000008
【図７】
2008305351.tif 000009