(57)【要約】【課題】  複数の汎用プロセッサが備わったマルチプロセッサシステムにおいて、ユーザが任意に指定したプログラムを専用に処理するプロセッサを提供する。【解決手段】  汎用プロセッサのうち、１台以上を専用のプロセッサとし、ハードウェアに専用プロセッサ属性を持たせ、初期設定時に専用プロセッサ属性を管理テーブルに格納する。ユーザが専用プロセッサで動作するよう要求したプログラムを実行しているアドレス空間の管理テーブルにフラグを立てる。プログラムを実行するとき、ディスパッチャはプロセッサの属性とアドレス空間の専用プロセッサ要求フラグを照らし合わせ、条件に合致したときのみディスパッチする。【選択図】  図１
2005266841.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが、ハードウェアの識別子を持つことで他の汎用プロセッサとは異なるハードウェアとしてソフトウェアが識別できる複数の汎用プロセッサを含むマルチプロセッサ計算機システムは、
当該プロセッサが専用プロセッサであるかどうかを識別するための第１のフラグを、プロセッサを管理するプロセッサ論理情報テーブルに設定する手段、
専用プロセッサで動作させたいプログラムを専用プロセッサに割り当てるための第２のフラグを、前記プログラムが動作するアドレス空間を管理するテーブルに設定する手段、
前記第１のフラグ及び前記第２のフラグが立っていた場合に、前記専用プロセッサを前記アドレス空間に割り当てる手段、及び
前記第１のフラグ及び前記第２のフラグが立っていなかった場合に、通常のプロセッサを前記アドレス空間に割り当てる手段を有することを特徴とする専用プロセッサの備わった計算機システム。
【請求項２】
前記計算機システムにおいて、一つのプロセッサ群を特定のプログラムのみ動作する専用のプロセッサとして制御することを特徴とする請求項１記載の専用プロセッサの備わった計算機システム。
【請求項３】
前記計算機システムにおいて、特定のプログラムを、専用のプロセッサだけでなく、他の汎用プロセッサも含めた全てのプロセッサで動作させることを特徴とする請求項２記載の専用プロセッサの備わった計算機システム。
【請求項４】
それぞれが、ハードウェアの識別子を持つことで他の汎用プロセッサとは異なるハードウェアとしてソフトウェアが識別できる複数の汎用プロセッサを含むマルチプロセッサ計算機システムにおいて、
当該プロセッサが専用プロセッサであるかどうかを識別するための第１のフラグを、プロセッサを管理するプロセッサ論理情報テーブルに設定し、
専用プロセッサで動作させたいプログラムを専用プロセッサに割り当てるための第２のフラグを、前記プログラムが動作するアドレス空間を管理するテーブルに設定し、
前記第１のフラグ及び前記第２のフラグが立っていた場合に、前記専用プロセッサを前記アドレス空間に割り当て、
前記第１のフラグ及び前記第２のフラグが立っていなかった場合に、通常のプロセッサを前記アドレス空間に割り当てることを特徴とするプロセッサの割り当て制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の汎用プロセッサが備わっている計算機システムにかかわり、オペレーティングシステムにおける、プロセッサの割り当て制御方法に関する。
【背景技術】
【０００２】
特許文献１に記載のように、ユーザが指定したプログラムを他のプログラムとは別のプロセッサで動作させる計算機システムとして、ネットワークに接続された２台以上のプロセッサからユーザが特定のプログラムを動作させるプロセッサを選択できる、プロセッサ指定方式がある。
【０００３】
【特許文献１】特開平７−３１１７４３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
背景技術に記載したプロセッサ指定方式は、ユーザが指定したプログラムを、ネットワークで接続された２台以上のプロセッサから１つのプロセッサを選択する方式であり、次のような問題点がある。
【０００５】
まず、特定のプログラムを複数台のプロセッサで動作させたい場合に、上記のプロセッサ選択方式では個々のプロセッサは独立した計算機であるので、これは不可能である。
【０００６】
つぎに、プロセッサを１台追加する際に、計算機を１台追加することとなり、そのため、全体の計算機システムの管理、運用が複雑になってしまい、システム拡張性が損なわれる。
【０００７】
また、特定のプログラムが他のプログラムと情報の受け渡しをする際には、ネットワークを介しているため、通信の手間が発生し、このオーバヘッドが無視できない。
【０００８】
さらに、特定のプログラムの総実行時間を短縮するため、プロセッサを全て使用して動作させることも不可能である。
【０００９】
本発明の目的は、複数の汎用プロセッサが備わった、１台のマルチプロセッサ計算機システムにおいて、汎用プロセッサのうち、１台以上のプロセッサをユーザが任意に指定したプログラムのみを動作させる専用のプロセッサとして割り当てる方法を提供することにある。
【課題を解決するための手段】
【００１０】
一般的に、プログラムがプロセッサで動作する際は、プロセッサごとに存在しプロセッサ資源を各プログラムに割り当てるディスパッチャが、レディなアドレス空間をサーチし、レディなアドレス空間が見つかれば、そのアドレス空間内で動作するレディなプロセスにプロセッサ資源を割り当てる（ディスパッチする）。
【００１１】
本発明では、ディスパッチャが、当該プロセッサが専用プロセッサであるかどうかを識別できるよう、プロセッサを管理するプロセッサ論理情報テーブルに専用プロセッサであるかどうかを示すフラグを設ける。
【００１２】
また、ユーザが専用プロセッサで動作させたいプログラムが専用プロセッサにてディスパッチされるよう、このプログラムが動作するアドレス空間を管理するテーブルに専用プロセッサを使用することを示すフラグを設ける。
【００１３】
ディスパッチャは、当該プロセッサが専用プロセッサで、かつ、ディスパッチしようとするアドレス空間に専用プロセッサを使用するフラグが立っていた場合に、ディスパッチする。また、当該プロセッサが専用プロセッサでない通常のプロセッサで、かつ、ディスパッチしようとするアドレス空間に専用プロセッサを使用するフラグが立っていなかった場合、ディスパッチする。
【発明の効果】
【００１４】
本発明により、複数の汎用プロセッサが備わった１台のマルチプロセッサシステムにおいて、上記プロセッサのうち１台以上のプロセッサを、ユーザが任意に指定したプログラムのみ実行する専用のプロセッサとすることができるため、ユーザはプロセッサ負荷に影響を及ぼさずに計算機システムで、プロセッサ負荷の非常に高いプログラムを実行したいときに、プロセッサ負荷の高いプログラムを専用プロセッサで動作させることで専用のプロセッサでない通常のプロセッサのプロセッサ負荷に影響を与えずにプロセッサ負荷の高いプログラムを実行することができる。その際、専用プロセッサは１台の計算機システムで実現されているため、ユーザが指定する特定のプログラムを変更する必要はなく、また、特定のプログラムが他のプログラムと情報の受け渡しを行う場合も、通信等のオーバヘッドは発生せず、従来のマルチプロセッサシステムと同等の性能で実現できる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態を図面により詳細に説明する。
【００１６】
図１は本発明の実施例の全体構成であり、１００は通常ＣＰＵ（プロセッサ）、１０１は特定の処理専用のＣＰＵである。１１６、１１７はＣＰＵの識別部であり、これによりソフトウェアはＣＰＵが特定の処理専用のＣＰＵであるかを識別する。ＣＰＵ物理情報１０２、１０３は各々のＣＰＵの物理情報を格納するテーブル、ＣＰＵ論理情報１０４、１０５は各々のＣＰＵの論理情報を格納するテーブル（これらの情報はＣＰＵ管理テーブル９９ａ、ｂに格納されている）、システム共通領域１０６は計算機システム共通の情報を格納するテーブル、ディスパッチャ１０７ａ、ｂはＣＰＵ資源を各プロセスに割り当てる手段、初期設定制御１０８は計算機システムの初期設定をする手段、ジョブ管理１０９はジョブの入力から実行に移すまでを管理する手段、アドレス空間管理テーブル１１０、１１１、１１２は各ジョブが動作するアドレス空間を管理するテーブル、タスク１１３、１１４、１１５はジョブを構成する各プロセス群である。ＣＰＵ１０１が専用ＣＰＵであるという情報はハードウェアが保持している。初期設定制御１０８が初期設定時にハードウェアにＣＰＵ情報を問い合わせることで当該ＣＰＵが専用ＣＰＵであるかどうかをソフトウェアが認識する。ＣＰＵ１００、１０１の資源をアドレス空間１１０ａ、１１１ａ、１１２ａに割り当てることをディスパッチと呼ぶ。これは手段１０７が対応する。
【００１７】
図２はＣＰＵ１００、１０１の論理情報テーブル１０４、１０５の詳細であり、２００は当該ＣＰＵが専用ＣＰＵであるかを示すフラグである。このフラグ２００は初期設定制御１０８がシステム初期設定時に、当該ＣＰＵが専用ＣＰＵである場合に立てる。ディスパッチャ１０７は当フラグ２００を参照することにより、割り当てようとしているＣＰＵが通常ＣＰＵか専用ＣＰＵのどちらであるかを判断する。
【００１８】
図３はアドレス空間管理テーブル１１０、１１１、１１２の詳細であり、３００は当該アドレス空間が専用ＣＰＵのみで動作する要求があることを示すフラグ、３０１は当該アドレス空間が通常ＣＰＵ、又は専用ＣＰＵで動作する要求があることを示すフラグである。ディスパッチャ１０７はディスパッチしようとしているアドレス空間に専用ＣＰＵのみで動作フラグ３００を参照することで、通常ＣＰＵ、又は専用ＣＰＵ各々のＣＰＵを当該アドレス空間に割り当ててもよいかを判断する。また、ディスパッチャはすべてのＣＰＵで動作フラグ３０１を参照することで、同様のディスパッチ制御を行うが、すべてのＣＰＵで動作フラグ３０１が立っていた場合は、通常ＣＰＵ、専用ＣＰＵどちらのＣＰＵでも当該アドレス空間をディスパッチする。
【００１９】
図４からは本発明の１つの実施例を示している。システムの起動時に図４の初期設定制御１０８が動作する。初期設定制御１０８はＣＰＵ番号をＣＰＵ物理情報テーブル１０２、１０３、ＣＰＵ論理情報テーブル１０４、１０５に格納し（ステップ４０１）、ＣＰＵが専用ＣＰＵであるかどうかをハードウェアすなわち、各ＣＰＵの識別部１１６、１１７に問い合わせる（ステップ４０２）。ハードウェアから専用ＣＰＵであると報告されたなら（ステップ４０３）、ＣＰＵ論理情報テーブル１０５の専用ＣＰＵフラグ２００を立てる（ステップ４０４）。ここまでの処理（ステップ４０１からステップ４０４まで）をＣＰＵの数だけ繰り返す（ループ４００）。初期設定制御１０８の処理が終了した時点で、どのＣＰＵが専用ＣＰＵであるかは各ＣＰＵの論理情報テーブル１０４、１０５で判断できる。以降、専用ＣＰＵフラグ２００は変更されない。
【００２０】
ユーザがジョブを入力すると、図５のジョブ管理１０９が動作する。ジョブ管理１０９は入力ジョブを受け付け（ステップ５００）、ジョブに対してアドレス空間を割り当て（ステップ５０１）、ジョブを実行する（ステップ５０２）。
【００２１】
図６はジョブ実行の一例を示している。すなわち、図５のステップ５０２の詳細フローである。ユーザジョブが当該アドレス空間１１０ａ、１１１ａ、１１２ａを専用ＣＰＵのみで動作するよう要求していた場合は（ステップ６００）、当該アドレス空間管理テーブル１１０、１１１、１１２の専用ＣＰＵのみで動作フラグ３００を立てる（ステップ６０１）。また、当該アドレス空間１１０ａ、１１１ａ、１１２ａを通常ＣＰＵ、専用ＣＰＵを含むすべてのＣＰＵで動作するよう要求した場合は（ステップ６０２）、当該アドレス空間管理テーブル１１０、１１１、１１２のすべてのＣＰＵで動作フラグ３０１を立てる（ステップ６０３）。ここで、各アドレス空間管理テーブル１１０、１１１、１１２の専用ＣＰＵのみで動作フラグ３００と、すべてのＣＰＵで動作フラグ３０１は排他的であり、１つのアドレス空間ではどちらか一方のフラグが立っているか、両方とも立っていないかである。すなわち、専用ＣＰＵのみで動作、すべてのＣＰＵで動作、の両方を要求することはできない。専用ＣＰＵの要求に関する処理が終了すると、ディスパッチャ１０７を呼ぶ。ここで一度制御を明示的にディスパッチャに移すことで、次のユーザ処理（ステップ６０４）からは必ず要求した方のＣＰＵでディスパッチされる。
【００２２】
図７はＯＳからの視点で、ディスパッチャ１０７がアドレス空間１１０ａ、１１１ａ、１１２ａをディスパッチする流れを示している。まず、当該アドレス空間の専用ＣＰＵに対する要求と、当該ＣＰＵが専用ＣＰＵであるかという属性とを照らし合わせる、ディスパッチテスタ７００を実行する。図８がディスパッチテスタの流れである。ディスパッチテスタ７００は、当該ＣＰＵが専用ＣＰＵであるかどうかをＣＰＵ論理情報テーブル１０４、１０５の専用ＣＰＵフラグ２００を参照することで判断する（ステップ８００）。
【００２３】
当該ＣＰＵが専用ＣＰＵであった場合は、次にディスパッチしようとしているアドレス空間が専用ＣＰＵを使用する指定であるか（専用ＣＰＵのみで動作フラグ３００またはすべてのＣＰＵで動作フラグ３０１が立っているか）を判断する（ステップ８０１）。専用ＣＰＵを使用する指定であった場合はディスパッチ可能であると判断する（ステップ８０３）。専用ＣＰＵを使用する指定でなかった場合は、ディスパッチ不可能であると判断する（ステップ８０４）。
【００２４】
当該ＣＰＵが専用ＣＰＵでなかった場合は、次にディスパッチしようとしているアドレス空間が専用ＣＰＵのみで動作する指定であるかをアドレス空間管理テーブルの専用ＣＰＵのみで動作のフラグ３００で判断する（ステップ８０２）。専用ＣＰＵのみで動作する指定でなかった場合は、ディスパッチ可能であると判断する（ステップ８０３）。専用ＣＰＵのみで動作する指定であった場合はディスパッチ不可能であると判断する（ステップ８０４）。
【００２５】
ディスパッチテスタ７００が終了すると、ディスパッチャ１０７は、ディスパッチテスタが、当該アドレス空間をディスパッチテスタがディスパッチ可能であると判断したかどうかを判定する（ステップ７０１）。ディスパッチ可能であった場合は、アドレス空間内のレディなタスクをサーチする（ステップ７０２）。ディスパッチ不可能であった場合は当該アドレス空間をほかのＣＰＵでディスパッチさせるよう、要求する（ステップ７０３）。
【００２６】
例えば、ジョブ１１０が専用ＣＰＵのみで動作するよう要求があった場合は、専用ＣＰＵの要求に関する処理（ステップ６０３まで）でアドレス空間管理テーブル１１０に専用ＣＰＵのみで動作フラグ３００が立つ。この間は専用ＣＰＵのみで動作フラグ３００、及びすべてのＣＰＵで動作フラグ３０１共に立っていないため、通常ＣＰＵ１００で動作する。その後、ディスパッチャ１０７をコールするが、ディスパッチテスタ７００が当該アドレス空間１１０をディスパッチできないと判断するため、ディスパッチされない。その後、専用ＣＰＵ１０１が当該アドレス空間１１０ａをディスパッチしようとしたとき、専用ＣＰＵ１０１のディスパッチャ１０７でディスパッチテスタ７００が、当該アドレス空間１１０ａをディスパッチ可能と判断し、ディスパッチされる。
【００２７】
また、第２の例としてアドレス空間１１１ａのジョブがすべてのＣＰＵで動作するよう要求があった場合は、専用ＣＰＵの要求に関する処理（ステップ６０３まで）でアドレス空間管理テーブル１１１にすべてのＣＰＵで動作フラグ３０１が立つ。この間は通常ＣＰＵ１００で動作する。その後、ディスパッチャ１０７をコールする。ディスパッチテスタ７００は、当該アドレス空間１１１ａをディスパッチ可能と判断し、再度ディスパッチする。その後、割り込み等でプロセスが中断した場合、他のＣＰＵが当該アドレス空間１１１ａをディスパッチしようとしたときに通常ＣＰＵ１００、専用ＣＰＵ１０１のどちらのＣＰＵのディスパッチャ１０７でもディスパッチテスタ７００がディスパッチ可能と判断するため、どちらのＣＰＵでも動作する。
【図面の簡単な説明】
【００２８】
【図１】本発明の構成の概要を示す図である。
【図２】本発明の構成における管理テーブルを示す図である。
【図３】本発明の構成における管理テーブルを示す図である。
【図４】本発明の一実施例における初期設定処理のフローチャートである。
【図５】本発明の一実施例におけるジョブ入力からジョブ実行までのフローチャートである。
【図６】本発明の一実施例におけるジョブ実行のフローチャートである。
【図７】本発明の一実施例におけるディスパッチャのフローチャートである。
【図８】本発明の一実施例におけるディスパッチャ内部処理のフローチャートである。
【符号の説明】
【００２９】
１００  …  通常ＣＰＵ
１０１  …  専用ＣＰＵ
１０２  …  ＣＰＵ物理情報管理テーブル
１０３  …  ＣＰＵ物理情報管理テーブル
１０４  …  ＣＰＵ論理情報管理テーブル
１０５  …  ＣＰＵ論理情報管理テーブル
１０６  …  システム共通情報管理テーブル
１０７  …  ディスパッチャ
１０８  …  初期設定制御部
１０９  …  ジョブ管理部
１１０  …  アドレス空間管理テーブル
１１１  …  アドレス空間管理テーブル
１１２  …  アドレス空間管理テーブル
１１３  …  アドレス空間内タスク群
１１４  …  アドレス空間内タスク群
１１５  …  アドレス空間内タスク群
１１６  …  プロセッサ識別子
１１７  …  プロセッサ識別子
【図１】
2005266841.tif 000003
【図２】
2005266841.tif 000004
【図３】
2005266841.tif 000005
【図４】
2005266841.tif 000006
【図５】
2005266841.tif 000007
【図６】
2005266841.tif 000008
【図７】
2005266841.tif 000009
【図８】
2005266841.tif 000010