(57)【要約】【課題】  グループディスパッチング方式におけるプロセッサグループ間のプロセス実行の優先順位の乱れを補正し最適化する。【解決手段】  本発明のプロセス実行制御システムは、それぞれ複数のプロセッサから構成される複数のプロセッサグループと、プロセッサの割り当て待ちである実行可能プロセスの待ち行列であるレディキューと、を備える。レディキューは前記プロセッサグループ毎に備えられており、また、各プロセッサで実行中の実行プロセスおよび実行可能プロセスには優先順位が付与されており、実行可能プロセスが予め定めた基準を満たした場合、全てのプロセッサグループ内の各プロセッサは、自プロセッサで実行中の実行プロセスと基準を満たした実行可能プロセスとの優先順位とを比較し、当該実行プロセスの実行を継続するかまたは当該実行プロセスの実行を中断して当該実行可能プロセスの実行を開始するかを判定する判定処理を行う。【選択図】      図１
2010160597.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ複数のプロセッサから構成される複数のプロセッサグループと、
プロセッサの割り当て待ちである実行可能プロセスの待ち行列であるレディキューと、
を備え、
当該レディキューは前記プロセッサグループ毎に備えられており、
各前記プロセッサで実行中の実行プロセスおよび前記実行可能プロセスには優先順位が付与されており、
前記実行可能プロセスが予め定めた基準を満たした場合、全ての前記プロセッサグループ内の各前記プロセッサは、自プロセッサで実行中の前記実行プロセスと前記基準を満たした実行可能プロセスとの優先順位を比較し、当該実行プロセスの実行を継続するかまたは当該実行プロセスの実行を中断して当該実行可能プロセスの実行を開始するかを判定する判定処理を行うことを特徴とするプロセス実行制御システム。
【請求項２】
前記実行可能プロセスの前記レディキューにおける滞留時間の基準値が格納された記憶手段を備え、
前記実行可能プロセスの滞留時間が当該基準値を超えたとき、前記判定処理を行うことを特徴とする請求項１記載のプロセス実行制御システム。
【請求項３】
前記判定処理において自プロセッサで実行中の前記実行プロセスの優先順位が低いと判定されたとき、優先順位が低いと判定された当該実行プロセスの実行を中断し対応する前記レディキューに繋ぐことを特徴とする請求項１または２記載のプロセス実行制御システム。
【請求項４】
さらに、補助プロセッサを備え、
前記補助プロセッサは、滞留時間が基準値を超えている実行可能プロセスを前記レディキューから選出し、全ての前記プロセッサグループ内の各前記プロセッサに対して、前記判定処理を行うよう指示することを特徴とする請求項２または３記載のプロセス実行制御システム。
【請求項５】
さらに、補助プロセッサを備え、
前記補助プロセッサは、滞留時間が基準値を超えている実行可能プロセスを前記レディキューから選出し、当該実行可能プロセスが繋がれた前記レディキューに対応する前記プロセッサグループ以外の他の前記プロセッサグループ内の各前記プロセッサに対して、前記判定処理を行うよう指示することを特徴とする請求項２または３記載のプロセス実行制御システム。
【請求項６】
さらに、補助プロセッサを備え、
前記補助プロセッサは、滞留時間が基準値を超えている実行可能プロセスを前記レディキューから選出し、全ての前記プロセッサグループ内の前記プロセッサのうち、優先順位が最も低い実行プロセスを実行しているプロセッサに対して、前記判定処理を行うよう指示することを特徴とする請求項２または３に記載のプロセス実行制御システム。
【請求項７】
前記レディキューは排他制御されており、
前記判定処理を行うよう指示されたプロセッサは、滞留時間が基準値を超えた実行可能プロセスを繋いだレディキューの排他制御ロックを取得して、前記判定処理を行うことを特徴とする請求項４ないし６のいずれかに記載のプロセス実行制御システム。
【請求項８】
前記判定処理を行うよう指示されたプロセッサは、前記レディキューの排他制御ロックを取得している状態であって、かつ、自プロセッサで実行中の前記実行プロセスの優先順位が、滞留時間が基準値を超えた前記実行可能プロセスの優先順位より低いと判定した場合は、前記実行可能プロセスを前記レディキューから取り出し、自プロセッサの実行プロセスに遷移させた後に、前記排他制御ロックを解除することを特徴とする請求項７に記載のプロセス実行制御システム。
【請求項９】
それぞれ複数のプロセッサから構成される複数のプロセッサグループと、プロセッサの割り当て待ちである実行可能プロセスの待ち行列であるレディキューと、を備えたプロセス実行制御システムにおいて、
前記レディキューを更新するステップと、
前記レディキューを前記プロセッサグループ毎に割り振るステップと、
前記プロセッサで実行中の実行プロセスおよび前記実行可能プロセスに優先順位を付与するステップと、
前記実行可能プロセスが予め定めた基準を満たした場合、全ての前記プロセッサグループ内の各前記プロセッサは、自プロセッサで実行中の前記実行プロセスと前記基準を満たした実行可能プロセスとの優先順位とを比較し、当該実行プロセスの実行を継続するかまたは当該実行プロセスの実行を中断して当該実行可能プロセスの実行を開始するかを判定する判定ステップと、
を備えたことを特徴とするプロセス実行制御方法。
【請求項１０】
さらに、前記実行可能プロセスの前記レディキューにおける滞留時間の基準値を記憶手段に格納するステップを備え、
前記判定ステップにおいて、
前記実行可能プロセスの滞留時間が前記基準値を超えたとき、前記判定を行うことを特徴とする請求項９記載のプロセス実行制御方法。
【請求項１１】
前記判定ステップにおいて、自プロセッサで実行中の前記実行プロセスの優先順位が低いと判定されたとき、優先順位が低いと判定された当該実行プロセスの実行を中断し当該実行プロセスを対応する前記レディキューに繋ぐことを特徴とする請求項９または１０記載のプロセス実行制御方法。
【請求項１２】
さらに、補助プロセッサが、滞留時間が基準値を超えている実行可能プロセスを前記レディキューから選出し、全ての前記プロセッサグループ内の各前記プロセッサに対して、前記判定を行うよう指示する指示ステップを備えることを特徴とする請求項１０または１１記載のプロセス実行制御方法。
【請求項１３】
さらに、補助プロセッサが、滞留時間が基準値を超えている実行可能プロセスを前記レディキューから選出し、当該実行可能プロセスが繋がれた前記レディキューに対応する前記プロセッサグループ以外の他の前記プロセッサグループ内の各前記プロセッサに対して、前記判定を行うよう指示する指示ステップを備えることを特徴とする請求項１０または１１記載のプロセス実行制御方法。
【請求項１４】
さらに、補助プロセッサが、滞留時間が基準値を超えている実行可能プロセスを前記レディキューから選出し、全ての前記プロセッサグループ内の前記プロセッサのうち、優先順位が最も低い実行プロセスを実行しているプロセッサに対して、前記判定を行うよう指示する指示ステップを備えることを特徴とする請求項１０または１１記載のプロセス実行制御方法。
【請求項１５】
前記レディキューは排他制御されており、
前記判定ステップにおいて、前記判定処理を行うよう指示されたプロセッサは、滞留時間が基準値を超えた実行可能プロセスを繋いだレディキューの排他制御ロックを取得して、前記判定処理を行うことを特徴とする請求項１２ないし１４のいずれかに記載のプロセス実行制御方法。
【請求項１６】
さらに、前記判定処理を行うよう指示されたプロセッサは、前記レディキューの排他制御ロックを取得している状態であって、かつ、自プロセッサで実行中の前記実行プロセスの優先順位が、滞留時間が基準値を超えた前記実行可能プロセスの優先順位より低いと判定した場合は、前記実行可能プロセスを前記レディキューから取り出し、自プロセッサの実行プロセスに遷移させた後に、前記排他制御ロックを解除する解除ステップを備えることを特徴とする請求項１５記載のプロセス実行制御方法。  
【請求項１７】
コンピュータに、
プロセッサの割り当て待ちである実行可能プロセスの待ち行列である前記レディキューを更新するステップと、
前記レディキューを複数のプロセッサから構成されるプロセッサグループ毎に割り振るステップと、
前記プロセッサで実行中の実行プロセスおよび前記実行可能プロセスに優先順位を付与するステップと、
前記実行可能プロセスが予め定めた基準を満たした場合、全ての前記プロセッサグループ内の各前記プロセッサは、自プロセッサで実行中の前記実行プロセスと前記基準を満たした実行可能プロセスとの優先順位とを比較し、当該実行プロセスの実行を継続するかまたは当該実行プロセスの実行を中断して当該実行可能プロセスの実行を開始するかを判定する判定ステップと、
を実行させることを特徴とするプロセス実行制御プログラム。
【請求項１８】
さらに、前記実行可能プロセスの前記レディキューにおける滞留時間の基準値を格納するステップを備え、
前記判定ステップにおいて、前記実行可能プロセスの滞留時間が前記基準値を超えたとき、前記判定を行うことを特徴とすることを特徴とする請求項１７記載のプロセス実行制御プログラム。
【請求項１９】
前記判定ステップにおいて、自プロセッサで実行中の前記実行プロセスの優先順位が低いと判定されたとき、優先順位が低いと判定された当該実行プロセスの実行を中断し対応する前記レディキューに繋ぐことを特徴とする請求項１７または１８記載のプロセス実行制御プログラム。
【請求項２０】
さらに、前記コンピュータに、滞留時間が基準値を超えている実行可能プロセスを前記レディキューから選出し、全ての前記プロセッサグループ内の各前記プロセッサに対して、前記判定を行うよう指示するステップを実行させることを特徴とする請求項１８または１９記載のプロセス実行制御プログラム。
【請求項２１】
さらに、前記コンピュータに、滞留時間が基準値を超えている実行可能プロセスを前記レディキューから選出し、当該実行可能プロセスが格納された前記レディキューに対応する前記プロセッサグループ以外の他の前記プロセッサグループ内の各前記プロセッサに対して、前記判定を行うよう指示するステップを実行させることを特徴とする請求項１８または１９記載のプロセス実行制御プログラム。
【請求項２２】
さらに、前記コンピュータに、滞留時間が基準値を超えている実行可能プロセスを前記レディキューから選出し、全ての前記プロセッサグループ内の前記プロセッサのうち、優先順位が最も低い実行プロセスを実行しているプロセッサに対して、前記判定を行うよう指示するステップを実行させることを特徴とする請求項１８または１９記載のプロセス実行制御プログラム。  
【請求項２３】
前記レディキューは排他制御されており、
前記判定ステップにおいて、前記判定処理を行うよう指示されたプロセッサは、滞留時間が基準値を超えた実行可能プロセスを繋いだレディキューの排他制御ロックを取得して、前記判定処理を行うことを特徴とする請求項２０ないし２２のいずれかに記載のプロセス実行制御プログラム。
【請求項２４】
さらに、前記コンピュータに、
前記判定処理を行うよう指示されたプロセッサは、前記レディキューの排他制御ロックを取得している状態であって、かつ、自プロセッサで実行中の前記実行プロセスの優先順位が、滞留時間が基準値を超えた前記実行可能プロセスの優先順位より低いと判定した場合は、前記実行可能プロセスを前記レディキューから取り出し、自プロセッサの実行プロセスに遷移させた後に、前記排他制御ロックを解除する解除ステップを実行させることを特徴とする請求項２３記載のプロセス実行制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセス実行制御システム、プロセス実行制御方法、及びプロセス実行制御プログラムに関し、特に、グループディスパッチング方式におけるプロセッサグループ間のプロセス実行の優先順位の乱れを補正し最適化するプロセス実行制御システム、プロセス実行制御方法、及びプロセス実行制御プログラムに関する。
【背景技術】
【０００２】
マルチプロセッサシステムでは、プロセッサの台数増加により、レディキューの排他制御に伴う待ち時間が増え、また、同一プロセスが無秩序にプロセッサ間を渡り歩くことによりキャッシュのヒット率が低下する。そのため、何も対策を立てない場合、性能は頭打ちになるため、その対策として、グループディスパッチング方式が採用されている。グループディスパッチング方式を採用したメモリ共有のマルチプロセッサシステムにおいては、自プロセッサグループのプロセッサおよびレディキューに実行プロセスまたは実行可能プロセスが存在する限り、自プロセッサグループ内に閉じた優先順位に従ったディスパッチングが実施される。一方、自プロセッサグループ内にこれらのプロセスが不足するために、自プロセッサグループ内にアイドル状態のプロセッサが存在する場合には、そのアイドル状態のプロセッサによる他プロセッサグループの実行可能プロセスの実行を試みる。
【０００３】
グループディスパッチング方式のディスパッチャの機能概要を以下に具体的に説明する。なお、このディスパッチャは各々のプロセッサ上のファームウェアで実現される機能であり、実行可能プロセスに自プロセッサを割り当てる制御を行うものである。なお、一台のプロセッサが、同時に実行出来るプロセスは一個のみである。
【０００４】
ディスパッチャは、自プロセッサがアイドル状態の時や自プロセッサグループのレディキューに新たな実行可能プロセスが繋がれた時等、規定したタイミングで動作を開始する。
【０００５】
例えば、ディスパッチャは、自プロセッサがアイドル状態で、自プロセッサグループのレディキューに実行可能プロセスが存在するときには、その中で優先順位が一番高く、かつ、レディキューの先頭側に繋がっている実行可能プロセスに自プロセッサを割り当て、実行プロセスとする。
【０００６】
自プロセッサがアイドル状態で、かつ、自プロセッサグループのレディキューに実行可能プロセスが存在せず、かつ、他プロセッサグループのレディキューに実行可能プロセスが存在するときには、ディスパッチャは、その中で優先順位が一番高く、かつ、レディキューの先頭側に繋がっている実行可能プロセスに自プロセッサを割り当て、実行プロセスとする。また、この時にディスパッチャが調査の対象とするのは、全ての他プロセッサグループのレディキューであり、ディスパッチャは予め定めた規則に従ってレディキューの検査を実施する（特許文献１参照）。
【０００７】
自プロセッサがアイドル状態で、かつ、自プロセッサグループのレディキューおよび他プロセッサグループのレディキューのうち、どちらにも実行可能プロセスが存在しないときには、ディスパッチャは、新たな実行可能プロセスが発生するのを待つ。
【０００８】
自プロセッサがプロセス実行状態でディスパッチャの動作が開始されたときには、ディスパッチャは、自プロセッサグループのレディキューに実行可能プロセスが存在するか否か確認し、存在すれば、それら実行可能プロセスの優先順位のうちで一番高い優先順位と、自プロセッサが現在実行している実行プロセスの優先順位とを比較する。その結果、実行プロセスの優先順位の方が高いか、または、両者が等しい場合は、そのまま実行プロセスの実行が継続される。逆に、実行可能プロセスの優先順位の方が高い場合は、ディスパッチャは、自プロセッサで現在実行している実行プロセスの実行を中断し、そのプロセスを自プロセッサグループのレディキューに繋ぎ、実行可能プロセスにすると共に、その比較結果で優先順位が高かった実行可能プロセスに自プロセッサを割り当て、実行プロセスとする。
【０００９】
また、自プロセッサがプロセス実行状態でディスパッチャの動作が開始され、ディスパッチャが自プロセッサグループのレディキューに実行可能プロセスが存在するか否か確認した結果、存在しなかった場合には、そのまま実行プロセスの実行が継続される。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開平１１−２５９３１８
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、上述したようなディスパッチング方式では、自プロセッサグループの実行プロセスまたは実行可能プロセスの優先順位が他プロセッサグループの実行可能プロセスの優先順位より低い場合でも、自プロセッサグループ内にアイドル状態のプロセッサが存在しない限り、自プロセッサグループ内のプロセスを実行し続け、優先順位の高い、他プロセッサグループの実行可能プロセスの実行が遅れ、システム運用に影響を与えてしまう場合があるという問題点がある。
【００１２】
本発明の目的は、上述の問題点を解決し、プロセッサグループ間においてプロセスの実行を最適化できるプロセス実行制御システム、プロセス実行制御方法、及びプロセス実行制御プログラムを提供することにある。
【課題を解決するための手段】
【００１３】
本発明のプロセス実行制御システムは、それぞれ複数のプロセッサから構成される複数のプロセッサグループと、プロセッサの割り当て待ちである実行可能プロセスの待ち行列であるレディキューと、を備え、当該レディキューはプロセッサグループ毎に備えられており、各プロセッサで実行中の実行プロセスおよび実行可能プロセスには優先順位が付与されており、実行可能プロセスが予め定めた基準を満たした場合、全てのプロセッサグループ内の各プロセッサは、自プロセッサで実行中の実行プロセスと基準を満たした実行可能プロセスとの優先順位を比較し、当該実行プロセスの実行を継続するかまたは当該実行プロセスの実行を中断して当該実行可能プロセスの実行を開始するかを判定する判定処理を行うことを特徴とする。
【００１４】
本発明のプロセス実行制御方法は、それぞれ複数のプロセッサから構成される複数のプロセッサグループと、プロセッサの割り当て待ちである実行可能プロセスの待ち行列であるレディキューと、を備えたプロセス実行制御システムにおいて、当該レディキューを更新するステップと、当該レディキューをプロセッサグループ毎に割り振るステップと、プロセッサで実行中の実行プロセスおよび実行可能プロセスに優先順位を付与するステップと、実行可能プロセスが予め定めた基準を満たした場合、全てのプロセッサグループ内の各プロセッサは、自プロセッサで実行中の実行プロセスと基準を満たした実行可能プロセスとの優先順位とを比較し、当該実行プロセスの実行を継続するかまたは当該実行プロセスの実行を中断して当該実行可能プロセスの実行を開始するかを判定する判定ステップと、を備えたことを特徴とする。
【００１５】
本発明のプロセス実行制御プログラムは、  コンピュータに、プロセッサの割り当て待ちである実行可能プロセスの待ち行列であるレディキューを更新するステップと、当該レディキューを複数のプロセッサから構成されるプロセッサグループ毎に割り振るステップと、プロセッサで実行中の実行プロセスおよび実行可能プロセスに優先順位を付与するステップと、実行可能プロセスが予め定めた基準を満たした場合、全てのプロセッサグループ内の各プロセッサは、自プロセッサで実行中の実行プロセスと基準を満たした実行可能プロセスとの優先順位とを比較し、当該実行プロセスの実行を継続するかまたは当該実行プロセスの実行を中断して当該実行可能プロセスの実行を開始するかを判定する判定ステップと、を実行させることを特徴とする。
【発明の効果】
【００１６】
本発明には、マルチプロセッサシステムのプロセッサグループ間におけるプロセスの実行を最適化し、システムを効率的に運用できるという効果がある。
【発明を実施するための形態】
【００１７】
次に、本発明について図面を参照して詳細に説明する。
【００１８】
図１は、本発明の第１の実施形態に係るコンピュータシステムのハードウェア構成図である。
【００１９】
主記憶100は各種のデータを格納する。図示しないがレディキューは主記憶100に存在する。
【００２０】
システムバス110は、主記憶100、プロセッサボード120〜127、および補助プロセッサ260を相互に接続する。
【００２１】
プロセッサボード120は、システムインタフェース部130と、プロセッサ210_0〜210_3からなるプロセッサグループとを含み、入出力処理装置150と接続されている。プロセッサボード121〜127のそれぞれは、図１には図示しないが、プロセッサボード120と同様の構成要素を有し、同様の機能を持つ。
【００２２】
システムインタフェース部130はキャッシュを含み、主記憶100へのアクセス制御、キャッシュ制御、並びに、プロセッサ210_0〜210_3、補助プロセッサ260、入出力処理装置150およびプロセッサボード120〜127間の通信およびデータ転送制御を行う。図１には図示しないが、プロセッサボード121〜127の各々も、システムインタフェース部130と同様のシステムインタフェース部が設けられている。
【００２３】
４つのプロセッサ210_0〜210_3のそれぞれは、プロセスを実行する一般のデータ処理用プロセッサであり、相互に独立して動作する。図１には図示しないが、プロセッサボード121〜127にも、同様のプロセッサが設けられている。
【００２４】
プロセッサボード120〜127とそれぞれ接続された入出力処理装置150〜157は、本コンピュータシステムに接続された各種I/O装置および主記憶100間のデータ転送を行う。
【００２５】
補助プロセッサ260は、一般のプロセッサ210_0〜217_3と同様に、主記憶100へのアクセスや、プロセッサ間の通信が可能である。
【００２６】
図２は、本実施形態に係るコンピュータシステムのプロセッサ、実行プロセス、およびレディキューの関係図を示す。
【００２７】
プロセッサグループ200〜207は、各々４台のプロセッサから構成され、各々固有のレディキューに対応付けされる。一般的に、キャッシュを共有する複数のプロセッサが一つのプロセッサグループを構成する。本実施形態では、プロセッサボード120でキャッシュを共有する４つのプロセッサ210_0〜210_3がプロセッサグループ200を構成する。図２には図示しないが、プロセッサグループ201〜207も同様にそれぞれボード１２１〜１２７上の複数のプロセッサから構成される。
【００２８】
RPW220_0〜227_3は、プロセッサ210_0〜217_3と一対一に対応し、プロセッサ210_0〜217_3で実行中の実行プロセスを表示する実行プロセス表示語である。
【００２９】
RQW230_0〜237_255は、プロセッサグループ200〜207と一対一に対応し、レディキュー240_0〜247_255の先頭のプロセスリンク（以下、PLと記載する）を指定するするレディキュー表示語である。
【００３０】
なお、RPW220_0〜227_3およびRQW230_0〜237_255は、主記憶100に格納されている。
【００３１】
レディキュー240_0〜247_255は、各々、プロセッサグループ200〜207に対応し、実行可能プロセスを先入れ先出し（繋ぐ場合は最後尾に、取り出す場合は先頭から）の方法でリンクしている。
【００３２】
実行可能プロセスとは、プロセッサの割り当てを待っているプロセスである。実行可能プロセスにプロセッサを割り当てられると実行プロセスとなり、その実行プロセスの中のプログラミングされた命令がプロセッサにより実行される。
【００３３】
なお、実行可能プロセスにプロセッサを割り当てる制御は、各プロセッサ内のディスパッチャが担当する。レディキュー240_0は優先順位0、レディキュー240_1は優先順位1、レディキュー240_2は優先順位2、・・・レディキュー240_254は優先順位254、レディキュー240_255は優先順位255に対応し、これらレディキュー240_0〜240_255の全てが、プロセッサグループ200に対応している。図２には図示しないが、レディキュー241_0〜241_255はプロセッサグループ201に、レディキュー242_0〜242_255はプロセッサグループ202に、以下、途中は省略するが、レディキュー247_0〜247_255はプロセッサグループ207にそれぞれ対応している。
【００３４】
図３は、本実施形態に係るコンピュータシステムの関連構造体および現在時刻の定義を示す。
【００３５】
図３（１）には、実行プロセス表示語(RPW)の定義が示されている。ここでは、RPW220_0〜227_3の定義を示している。
【００３６】
図において、プロセッサ状態表示310は、該当プロセッサの状態を表示する。その状態には、プロセスを実行不可能なインアクティブ状態、プロセスを実行可能なアクティブ状態でかつプロセスを実行中の状態、プロセスを実行可能なアクティブ状態でかつ実行すべきプロセスを取り込んでいないアイドル状態がある。
【００３７】
優先順位311は、該当プロセッサ上の実行プロセスの優先順位である。
【００３８】
実行プロセス名312は、該当プロセッサ上の実行プロセスの識別名である。
【００３９】
実行状態への遷移時刻313は、該当プロセッサ上に実行プロセスを取り込んだ時点の時刻であり、実行プロセスの該当プロセッサ上における実行開始時刻と同じ意味である。
【００４０】
図３（２）には、レディキュー表示語(RQW)の定義が示されている。ここでは、RQW230_0〜237_255の定義を示している。レディキュー先頭PLへのポインタ320は、対応するレディキュー240_0〜247_255の先頭PLへのポインタである。ポインタ320が零の場合、対応するレディキューは空であることを意味する。
【００４１】
図３（３）には、レディキュー内プロセスリンク(PL)の定義が示されている。ここでは、レディキュー240_0〜247_255内のPLの定義を示している。
【００４２】
NL330は、該当レディキュー内における、次のPLへのポインタである。最後尾のPLにおいて、NL330は零となる。
【００４３】
優先順位331は、該当実行可能プロセスの優先順位である。
【００４４】
実行可能プロセス名332は、該当実行可能プロセスの識別名である。
【００４５】
実行可能状態への遷移時刻333は、該当実行可能プロセスが実行可能状態に遷移した時の時刻であり、該当レディキューに繋がれた時の時刻と同じ意味である。
【００４６】
図３（４）には、現在時刻の定義が示されている。現在時刻340は、マイクロ秒単位で“+1”加算される64ビットのタイマである。実行状態への遷移時刻313と、実行可能状態への遷移時刻333は、対応するタイミングにおいて、その制御を担当するプロセッサが現在時刻340を設定することにより確定する。
【００４７】
図３（５）には、優先順位対応のディスパッチタイマ値テーブルの定義が示されている。ディスパッチタイマ350_0は優先順位0に、ディスパッチタイマ350_1は優先順位1に、以下、途中は省略するが、ディスパッチタイマ350_255は優先順位255に対応する。ディスパッチタイマ350_0〜350_255の各々は、マイクロ秒単位の32ビットのタイマ値である。
【００４８】
次に、本発明の第１の実施形態の動作について図面を参照して説明する。
【００４９】
図４に、本発明の第１の実施形態における処理の概要を示す。
【００５０】
図４（１）には、「補助プロセッサ260から全プロセッサ210_0〜217_3の優先順位補正処理の起動を指示する例」が示されている。図４（２）には、「補助プロセッサ260から全プロセッサ210_0〜217_3の中の一台を選択して優先順位補正処理の起動を指示する例」が示されている。図４（１）および図４（２）は、どちらも独立した一例である。  
ステップＳ410において、補助プロセッサ260は、最も低い優先順位のレディキュー240_255、241_255・・・・・246_255、247_255を除いたシステム内のレディキュー240_0〜240_254、241_0〜241_254、・・・247_0〜247_254を検査する。そして、補助プロセッサ260は、対応するディスパッチタイマ350_0〜350_254の値を越えて、実行可能状態で止まっているプロセスを検出した場合、システム内の全プロセッサ210_0〜217_3に対して、該当プロセスが繋がれたレディキューの識別番号を通知すると共に優先順位補正処理の起動を指示する。このステップＳ410については、図５でさらに詳述する。
【００５１】
ステップＳ411については、図７で詳述する。
【００５２】
ステップＳ411は、ステップＳ410からの優先順位補正処理の起動指示により起動され、ステップＳ410に対して優先順位補正処理の完了報告を行う。ステップＳ411では、システム内のプロセッサ210_0〜217_3各々が、ステップＳ410の補助プロセッサ260から通知された識別番号のレディキューを対象に優先順位補正処理を行う。
【００５３】
ステップＳ420において、補助プロセッサ260は、最も低い優先順位のレディキュー240_255〜247_255を除いたシステム内のレディキュー240_0〜240_254、241_0〜241_254、・・・247_0〜247_254を検査する。そして、補助プロセッサ260は、対応するディスパッチタイマ350_0〜350_254の値を越えて、実行可能状態に止まっているプロセスを検出した場合、システム内の全プロセッサ210_0〜217_3のRPW220_0〜227_3の情報から、最も低い優先順位の実行プロセスを実行しているプロセッサ一台に対して、優先順位補正処理の起動を指示する。このステップＳ420については、図６で詳述する。
【００５４】
ステップＳ421は、ステップＳ420からの優先順位補正処理の起動指示により起動され、ステップＳ420に対して優先順位補正処理の完了報告を行う。ステップＳ421では、システム内のプロセッサ210_0〜217_3の中の起動された一台のみが、ステップＳ420の補助プロセッサ260から通知された識別番号のレディキューを対象に優先順位補正処理を行う。  このステップＳ421については、図７で詳述する。
【００５５】
図５には、補助プロセッサ260によるプロセス実行の優先順位の補正処理（１）が示されている。図５の処理は、システム立ち上げ、立ち下げ、障害処理など特殊な過渡状態を除いて、システム運用中は常に実行されている。図５は、ステップＳ410の処理内容を具体的に示したものである。適用されるシステム環境に対応して、図５と図６のどちらか一方が選択され、補助プロセッサ260において実行される。
【００５６】
ステップS500では、図５の処理のための初期設定を行う。すなわち、プロセッサグループ番号k、プロセッサグループ内のプロセッサ番号m、優先順位番号nの各々に“0”が設定される。なお、図５において、kはプロセッサグループ番号を示し、その範囲は0〜7である。mはプロセッサグループ内のプロセッサ番号を示し、その範囲は0〜3である。nは優先順位番号を示し、その範囲は0〜255である。
【００５７】
ステップS501では、レディキュー24k_nが空か否かが確認される。RQW23k_nが零の場合、レディキュー24k_nは空であり、対応する実行可能プロセスは存在せず、ステップS506に分岐する。空でなければ、対応する実行可能プロセスは存在し、ステップS502に分岐する。
【００５８】
ステップS502では、現在時刻340から、レディキュー24k_n先頭PLの時刻333を減算し、その結果を作業エリアWK1に設定する。作業エリアWK1に設定された内容は該当先頭PLの実行可能プロセスが、実行可能状態に止まった時間、すなわち、レディキュー24k_nに繋がっていた時間を示している。ステップS502からはステップS503に分岐する。
【００５９】
ステップS503では、作業エリアWK1の内容とディスパッチタイマ350_nの内容を比較する。その比較結果でディスパッチタイマ350_nの値が大きい場合は、該当実行可能プロセスが実行可能状態に止まっていることによるシステム運用への影響の可能性は無く、性能的に対応する番号kのプロセッサグループに実行させることが最善と判断出来る。この場合は、ステップS506に分岐する。逆に、その比較結果で作業エリアWK1の内容が大きいまたは等しい場合は、対応する実行可能プロセスが実行可能状態に止まっていることによるシステム運用への影響の可能性があると判断出来、ステップS504に分岐する。
【００６０】
ステップS504では、システム内全プロセッサ210_0〜217_3に、レディキュー24k_nの識別番号を通知すると共に、レディキュー24k_nを対象とした優先順位補正処理を起動するように指示する。そして、ステップS505に分岐する。
【００６１】
ステップS505では、全プロセッサ210_0〜217_3からの優先順位補正処理の完了報告を待ち、報告が全て届いたら、ステップS506へ分岐する。
【００６２】
ステップS506、S 507およびS 508では、プロセッサグループ番号kの更新を行い、ステップS 509、S 510およびS 511では優先順位番号nの更新を行う。これらステップS 506〜S 511により、最下位の優先順位のレディキュー240_255〜247_255を除いた、システム内のレディキュー240_0〜240_254、241_0〜241_254、・・・247_0〜247_254の検査を可能にしている。最下位の優先順位のレディキュー240_255〜247_255を除くのは、検査しても意味が無いためである。
【００６３】
ステップS 512では、システム内のレディキュー240_0〜240_254、241_0〜241_254、・・・247_0〜247_254の検査が一巡した場合に実行され、次の検査までに予め設定した時間待ちを行う。これにより、補助プロセッサ260が、必要以上に動作することを防止する。
【００６４】
図６には、補助プロセッサ260によるプロセス実行の優先順位の補正処理（２）が示されている。図６の処理は、システム立ち上げ、立ち下げ、障害処理など特殊な過渡状態を除いて、システム運用中は常に実行されている。図６は、ステップS 420の処理内容を具体的に示したものである。適用されるシステム環境に対応して、図５と図６のどちらか一方が選択され、補助プロセッサ260において実行される。
【００６５】
ステップS 600〜S 603は、各ステップからの分岐先を除いて、ステップS 500〜S 503と全く同じであるので、説明は省略する。同じく、ステップS 608〜S 614は、各ステップからの分岐先を除いて、ステップS 506〜S 512と全く同じであるので、説明は省略する。
【００６６】
図６において、図５と相異するステップはS 604〜S 607であり、以下に説明する。
【００６７】
ステップS 604には、レディキューの検査において、実行可能状態に止まっていることによりシステム運用に影響の可能性がある実行可能プロセスを検出した場合にステップＳ603から分岐してくる。ステップS 604では、システム内全プロセッサ210_0〜217_3の全RPW220_0〜227_3を確認し、その確認時点における、システム内の実行プロセスの中で最も低い優先順位の番号を作業エリアWK2に設定、同じく、その最も低い優先順位の実行プロセスを実行中のプロセッサ番号（該当するプロセッサが複数台存在する場合は最若番のプロセッサを選択）を作業エリアWK3に設定する。そして、ステップS 605に分岐する。
【００６８】
ステップS 605では、その時点で確定している優先順位番号n、すなわち、対象の実行可能プロセスの優先順位番号と、作業エリアWK2に設定された優先順位番号を比較する。その結果、優先順位番号nの方が大きいまたは等しい場合は、対象の実行可能プロセスの優先順位より低い優先順位の実行プロセスがシステム内に存在しない状態であり、優先順位の補正処理は行わず、ステップS 608へ分岐する。逆に、優先順位番号nの方が小さい場合は、対象の実行可能プロセスの優先順位より低い優先順位の実行プロセスが作業エリアWK3に設定された番号のプロセッサで実行中の状態であり、ステップS 606に分岐する。
【００６９】
ステップS 606では、作業エリアWK3に設定された番号のプロセッサに対して、レディキュー24k_nの識別番号を通知すると共に、レディキュー24k_nを対象とした優先順位補正処理を起動するように指示する。そして、ステップS 607に分岐する。
【００７０】
ステップS 607では、作業エリアWK3に設定された番号のプロセッサからの優先順位補正処理の完了報告を待ち、報告が届いたら、ステップS 601へ分岐する。図５のステップS 505からの分岐は、次のレディキューの検査に進むのに対して、ステップS 607は、再度、同じレディキューの検査に進むようにしている。その理由は、補助プロセッサ260と作業エリアWK3に設定された番号のプロセッサとの動作タイミングによって、実行すべき、優先順位の補正処理が実行されない可能性があるからであり、再度、同じレディキューの検査を行うようにする。
【００７１】
図７には、プロセッサ210_0〜217_3各々によるプロセス実行の優先順位の補正処理が示されている。図７は、ステップＳ411および421の処理内容を具体的に示したものである。なお、プロセッサ210_0〜217_3各々の処理に着目した場合、ステップＳ411およびＳ421の処理内容は共通であるため、図７に一本化し説明する。
【００７２】
図７は、補助プロセッサ260からのステップＳ504またはステップＳ606の優先順位補正処理の起動処理に応答して開始される。
【００７３】
ステップＳ700では、レディキュー24k_nの排他制御用ロックを取得要求する。ＲＱＷ230_0〜237_255およびレディキュー240_0〜247_255は、システム内の全プロセッサ210_0〜217_3から参照および更新されるため、排他制御用ロックを備え、このロックを取得したプロセッサのみで参照および更新が可能となる。本実施形態では、RQW230_0およびレディキュー240_0の組み合わせに対して、一つの排他制御用ロックを備える。以下、同様に、RQW230_1とレディキュー240_1、RQW230_2とレディキュー240_2、・・・RQW237_255とレディキュー247_255の組み合わせに対応して、それぞれ排他制御用ロックを備える。ステップＳ700からステップＳ701へ分岐する。
【００７４】
ステップＳ701では、ステップＳ700の取得要求に対応し、排他制御用ロックが取得出来たか否かが確認される。取得出来た場合、ステップＳ702に分岐する。取得出来なかった場合、ステップＳ700に戻り、再度取得要求する。
【００７５】
ステップＳ702では、レディキュー24k_nが空か否かを確認する。図４（１）の例ではシステム内の全プロセッサ210_0〜217_3に優先順位補正処理の起動が指示される。そのため、全プロセッサ210_0〜217_3で図７の処理が実行されるが、実行される順序はその状況で異なり、ステップＳ700とＳ701で説明したレディキュー24k_nの排他制御用ロックを取得した順序となる。そして、先に実行したプロセッサの処理の結果、レディキュー24k_nが空になり、後で実行したプロセッサのステップＳ702においては、レディキュー24k_nが空の場合が頻繁に発生する。また、図４（１）および図４（２）の両方で、補助プロセッサ260から優先順位補正処理の起動指示を受けたプロセッサが図７の処理を行う前に、通常のディスパッチャ動作で、レディキュー24k_nが空になることが有り得る。従って、ステップＳ702では、レディキュー24k_nが空か否かが確認される。その確認結果で空の場合は、優先順位の補正処理は不要のため、ステップＳ714に分岐する。逆に、その確認結果で、空で無い場合はステップＳ703に分岐する。
【００７６】
ステップＳ703では、自プロセッサがアイドル状態か否かを確認する。この確認は、プロセッサ状態表示310で行われる。インアクティブ状態では、図７の処理自体が実行されないため、アクティブ状態における、プロセス実行状態か、アイドル状態かが確認される。アイドル状態では、自プロセッサに実行プロセスを取り込んでいないため、ステップＳ713に分岐し、無条件にレディキュー24k_n先頭PLの実行可能プロセスを自プロセッサの実行プロセスとして取り込む。逆に、アイドル状態で無ければステップＳ704に分岐する。
【００７７】
ステップＳ704では、自プロセッサの実行プロセスと、レディキュー24k_n先頭PLの実行可能プロセスの優先順位を比較する。そして、ステップＳ705に分岐する。
【００７８】
ステップＳ705では、ステップＳ704の比較結果を確認する。その結果、実行可能プロセスの優先順位の方が低いまたは等しい場合は、優先順位の補正処理は不要のため、ステップＳ714に分岐する。逆に、実行可能プロセスの優先順位の方が高い場合は、ステップＳ706に分岐する。
【００７９】
ステップＳ706では、現在時刻340からレディキュー24k_n先頭PLの時刻333を減算し、その結果を作業エリアWK1に設定する。そして、ステップＳ707へ分岐する。
【００８０】
ステップＳ707では、作業エリアWK1の内容とディスパッチタイマ350_nの内容を比較する。その結果、ディスパッチタイマ350_nの内容が大きい場合は、該当実行可能プロセスが実行可能状態に止まっていることによるシステム運用への影響の可能性は無く、性能的に対応する番号kのプロセッサグループに実行させることが最善と判断出来る。この場合は、ステップＳ714に分岐し、優先順位の補正処理は行わない。逆に、作業エリアWK1の内容が大きいまたは等しい場合は、対応する実行可能プロセスが実行可能状態に止まっていることによるシステム運用への影響の可能性があると判断出来、ステップＳ708に分岐する。
【００８１】
ステップＳ708では、自プロセッサに現在取り込んでいる実行プロセスを対応するレディキューに戻し、実行可能プロセスに遷移させるため、自プロセッサグループ番号xと、実行プロセスの優先順位番号yで決定されるレディキュー24x_yの排他制御用ロックの取得要求を行う。そして、ステップＳ709に分岐する。
【００８２】
ステップＳ709では、ステップＳ708の取得要求に対応し、排他制御用ロックが取得出来たか否かが確認される。取得出来た場合、ステップＳ711に分岐する。取得出来なかった場合、ステップＳ710に分岐する。
【００８３】
ステップＳ710では、レディキュー24x_yの排他制御用ロックの取得が出来なかった場合のデッドロック防止を目的として、現在、取得中のレディキュー24k_nの排他制御用ロックを一旦、解除、ステップＳ700へ分岐し、図７の処理を最初から再実行する。
【００８４】
ステップＳ711では、自プロセッサの実行プロセスについて、その情報を、主記憶100上に予め確保されているプロセス制御ブロックに戻し、レディキュー24x_yに繋ぐと同時に実行可能状態に遷移させる。そして、ステップＳ712に分岐する。
【００８５】
ステップＳ712では、ステップＳ708とＳ709で取得したレディキュー24x_yの排他制御用ロックを解除する。そして、ステップＳ713に分岐する。
【００８６】
ステップＳ713を開始する時点において、自プロセッサは、アイドル状態またはアイドル状態と同等の状態、すなわち、実行プロセスを取り込んでいない状態である。ステップＳ713では、レディキュー24k_n先頭PLの実行可能プロセスの情報をプロセス制御ブロックから自プロセッサに取り込み、レディキュー24k_nから先頭PLを外すと共に、該プロセスを実行状態に遷移させる。更に自プロセッサのRPWを更新する。その後、ステップＳ714に分岐する。
【００８７】
ステップＳ714では、ステップＳ700とＳ701で取得したレディキュー24k_nの排他制御用ロックを解除する。そして、ステップＳ715に分岐する。
【００８８】
ステップＳ715では、補助プロセッサ260へ優先順位補正処理の完了報告を行う。そして、ステップＳ716へ分岐する。
【００８９】
ステップＳ716は、システム内全プロセッサ210_0〜217_3の各々で、実行プロセスを取り込んでいる場合の処理を示したものであり、その実行プロセスの命令列の中から、命令カウンタで指定された命令を実行する。対応するプロセッサ上で、該当プロセスが、実行プロセスで有り続ける限り、命令カウンタを更新しながら、その命令カウンタで指定された命令を実行し続ける。ステップＳ716は、システム内全プロセッサ210_0〜217_3の各々で、実行プロセスを取り込んでいない場合、すなわち、アイドル状態の場合は該当しない。
【００９０】
以上、図４〜図７を参照しながら、図４（１）および図４（２）の例を説明した。
【００９１】
なお、本実施形態における補助プロセッサ260の処理｛図５および図６｝は、予め定めた周期で実行される一時的な処理であり、この処理に必要な性能は、補助プロセッサ260処理性能全体に対して、僅かな割合である。このことから、図５および図６の処理を、補助プロセッサ260で実行せず、一般のプロセッサ210_0〜217_3の中から、予め定めた規則により一台のマスタプロセッサを決定し、そのマスタプロセッサで実行する方法もある。
【００９２】
また、本実施形態では、ディスパッチタイマを、優先順位毎に設けたが、複数の優先順位に対して一つ、またはシステムに対して一つにする等、単純化しても良い。
【００９３】
また、本実施形態では、システム内のプロセッサグループ数を８個、プロセッサグループ内のプロセッサ台数を４台としたが、双方とも個々のシステム環境に相応しい任意の個数、台数で良い。
【００９４】
また、本実施形態では、プロセッサグループ内のレディキューを優先順位毎に設けたが、複数の優先順位に対して一つのレディキュー、またはプロセッサグループに対して一つのレディキューに対応させても良い。
【００９５】
また、第１の実施形態の補正処理（１）ステップＳ410および図5では、全プロセッサに対して優先順位補正処理の起動指示を行う構成であるが、滞留時間が基準値を超えた実行可能プロセスが格納されたレディキューに対応するプロセッサグループ以外のプロセッサグループに属する全プロセッサに対して上記起動指示を行うようにしても良い。
【図面の簡単な説明】
【００９６】
【図１】図１は、本発明の第１の実施形態におけるコンピュータシステムのハードウェア構成図である。
【図２】図２は、コンピュータシステムのプロセッサ、実行プロセス、およびレディキューの関係図である。
【図３】図３は、コンピュータシステムの関連構造体および現在時刻の定義を示す図である。
【図４】図４は、処理の概要を示す図である。
【図５】図５は、補助プロセッサ260によるプロセス実行の優先順位の補正処理（１）を示す図である。
【図６】図６は、補助プロセッサ260によるプロセス実行の優先順位の補正処理（２）を示す図である。
【図７】図７は、プロセッサ210_0〜217_3によるプロセス実行の優先順位の補正処理を示す図である。
【符号の説明】
【００９７】
１００  主記憶
１１０  システムバス
１２０〜１２７  プロセッサボード
１３０  システムインタフェース部
１５０〜１５７  入出力処理装置
２１０＿０〜３  ・・・  ２１７＿０〜３  プロセッサ
２２０＿０〜３  ・・・  ２２７＿０〜３  ＲＰＷ
２３０＿０〜２５５  ・・・  ２３７＿０〜２５５  ＲＱＷ
２４０＿０〜２５５  ・・・  ２４７＿０〜２５５  レディキュー
２６０  補助プロセッサ
３１０  プロセッサ状態表示
３１１  優先順位
３１２  実行プロセス名
３１３  実行状態への遷移時刻
３２０  レディキュー先頭ＰＬへのポインタ
３３０  ＮＬ
３３１  優先順位
３３２  実行可能プロセス名
３３３  実行可能状態への遷移時刻
３４０  現在時刻
３５０＿０〜３５０＿２５５  各優先順位に対応したディスパッチタイマ
【図１】
2010160597.tif 000003
【図２】
2010160597.tif 000004
【図３】
2010160597.tif 000005
【図４】
2010160597.tif 000006
【図５】
2010160597.tif 000007
【図６】
2010160597.tif 000008
【図７】
2010160597.tif 000009