(57)【特許請求の範囲】
【請求項１】
複数のプロセッサ・コアを具備してオペレーティング・システムを起動するサーバ装置であって、
電源オン状態後に最初に起動されるＢＩＯＳにより生成されてＯＳ起動時に参照されるリソーステーブルを、前記オペレーティング・システムが起動される前に書き換えて、前記オペレーティング・システムからプロセッサ・コア及びメモリのハードウェア資源を分割し、前記分割したハードウェア資源を特定処理専用として確保する資源分割手段と、
前記資源分割手段により確保された特定処理専用のハードウェア資源上で動作する特定処理実行手段と、
前記資源分割手段により確保された特定処理専用のハードウェア資源に、前記オペレーティング・システム上からアクセスする機能を提供するプロセッサ間通信手段と、
前記オペレーティング・システム上で動作し、要求に応じて前記プロセッサ間通信手段を使って前記特定処理実行手段に特定の処理を実行させ、実行させた結果を、前記プロセッサ間通信手段を使って前記特定処理実行手段から受け取る特定処理実行管理手段と
を備えたことを特徴とするサーバ装置。
【請求項２】
前記資源分割手段は、特定処理専用として確保すべきプロセッサ・コアのエントリの削除を行い書き換えて、前記特定処理専用として確保すべきプロセッサ・コアを前記オペレーティング・システムから使用不可に設定することで分割し、物理メモリの一部をオペレーティング・システムから使用不可として、特定処理専用のメモリとして分割し、分割したハードウェア資源を前記特定処理専用として確保することを特徴とする請求項１に記載のサーバ装置。
【請求項３】
前記プロセッサ間通信手段は、前記オペレーティング・システムが使用するハードウェア資源用と特定処理の実行のためのハードウェア資源用の２つの割込信号用の割込み信号制御部を有することを特徴とする請求項１又は２に記載のサーバ装置。
【請求項４】
複数のプロセッサ・コアを具備してオペレーティング・システムを起動するサーバ装置の実行方法であって、
電源オン状態後に最初に起動されるＢＩＯＳにより生成されてＯＳ起動時に参照されるリソーステーブルを、前記オペレーティング・システムが起動される前に書き換えて、前記オペレーティング・システムからプロセッサ・コア及びメモリのハードウェア資源を分割し、前記分割したハードウェア資源を特定処理専用として確保しておき、
前記特定処理専用として確保されたハードウェア資源に、前記オペレーティング・システム上からアクセスする機能を設け、
要求に応じて、前記特定処理専用として確保された特定処理専用のハードウェア資源上で特定処理を実行させる
ことを特徴とする処理実行方法。
【請求項５】
複数のプロセッサ・コアを具備してオペレーティング・システムを起動するサーバ装置で、電源オン状態後に最初に起動されるＢＩＯＳにより生成されてＯＳ起動時に参照されるリソーステーブルを、前記オペレーティング・システムが起動される前に書き換えて、前記オペレーティング・システムからプロセッサ・コア及びメモリのハードウェア資源を分割し、前記分割したハードウェア資源を特定処理専用として確保するためのプログラムであって、
前記リソーステーブルから特定処理専用として確保すべきプロセッサ・コアのエントリを削除して、特定処理専用のプロセッサ・コアとして確保するステップと、
物理メモリの一部をオペレーティング・システムから使用不可として、特定処理専用のメモリとして確保するステップと
を含むことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特に、複数のプロセッサ・コアを具備し、マルチプロセッシング可能なサーバ装置、当該サーバ装置における処理実行方法およびプログラムに関する。
【背景技術】
【０００２】
マルチプロセッサやマルチコアなど、複数のプロセッサ・コアを具備するサーバ装置においてオープンＯＳ(Operating System)が動作する場合、ＯＳ上で動作する各アプリケーションプログラムに対してＯＳ管理下のプロセッサ・コアやメモリなどのハードウェア資源を論理的に割り当てて、各アプリケーションプログラムによる処理を並列に動作させる技術が知られており、製品化されている。このような複数のプロセッサ・コアを具備するサーバ装置において、負荷が上昇してプロセッサ使用率が１００％になってサーバ装置の処理能力の限界に達した場合には、１つのプロセッサ・コアを具備するサーバ装置と同様、サーバ装置全体の処理能力が低下してしまう。この場合、即時応答が要求される処理の応答も遅延してしまい、オペレータによるキーボードやマウスによる入力が待たされる他、オンライン処理の応答が遅延してネットワーク経由で接続している外部システムでタイムアウト障害を検出するおそれがある。この問題を回避する手段としては、プロセッサやメモリを増設してサーバ装置自体の処理能力を増強する方法が考えられる。
【０００３】
また、複数のプロセッサ・コアを具備するサーバ装置でプロセッサ・コアやメモリなどのハードウェア資源を分割し、分割された各ハードウェア資源上で複数のゲストＯＳを実行させるバーチャルマシンの技術が知られており、製品化されている。そして、バーチャルマシン上の各ゲストＯＳに割り当てるハードウェア資源を業務負荷のピークに合わせて最適化する技術に関しては複数の技術が知られている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第４０１８９００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明が解決しようとする第１の問題点は、一時的に発生する高負荷処理の処理能力不足を解決するためにプロセッサやメモリの増設を行うことはコスト効率が悪いということである。その理由は、一般的にサーバ装置で大きな処理能力が必要となる時間はサーバ装置の運用時間全体から見ると短時間であるためである。また、大きなプロセッサ負荷を必要とする処理の多くは時間がかかる処理であり、即時応答を求められていない場合が多く、必ずしも大きな処理能力を使って短時間に完了させる必要はない。
【０００６】
第２の問題点は、一時的に発生する高負荷処理の処理能力不足を解決するためにバーチャルマシン・システムを通常の事業者が運用することはコスト的に高額になり採用し難いことである。その理由は、バーチャルマシン・システムは一般のサーバ装置と比べてシステム自体が高額であることに加え、バーチャルマシン・システムで特定のゲストＯＳの一時的な高負荷時にハードウェア資源の配分を増やす場合、増やす分のハードウェア資源は負荷が低い他のゲストＯＳのハードウェア資源を減らすことにより確保することになるためである。特定のゲストＯＳのピーク負荷時の処理を最適化するようにハードウェア資源の割当を行うと、他のゲストＯＳに対して充分なハードウェア資源を割り当てることが出来なくなるおそれがあり、これら他のゲストＯＳにおける処理が滞ってしまう。大企業やデータセンターなどにおけるサーバ装置のように、大きなコンピュータ処理能力を必要とするためにハードウェア資源を充分に具備するサーバ装置では、バーチャルマシン・システムを採用してピーク負荷に対応可能な充分なハードウェア資源を割り当てる上記方法が有効であるが、小規模な事業者にとっては一般の安価なオープンサーバ装置の代替手段にはなり難い。
【０００７】
第３の問題点は、既存のサーバ装置を利用する場合、一時的に発生する高負荷処理の処理能力不足を解決するために処理能力を増強することができない場合があることである。その理由は、サーバ装置のスペックの制限によりプロセッサやメモリの増設ができない場合があるためである。この場合、処理能力が高いサーバ装置を新規に導入する必要があると共に、業務システムを新規サーバに移行する必要もあり、コストが大きい。
【０００８】
本発明は、上述の課題を解決することのできるサーバ装置、処理実行方法およびプログラムを提供することを目的としている。
【課題を解決するための手段】
【０００９】
この発明は上述した課題を解決するためになされたもので、本発明の一態様によるサーバ装置は、複数のプロセッサ・コアを具備してオペレーティング・システムを起動するサーバ装置であって、電源オン状態後に最初に起動されるＢＩＯＳにより生成されてＯＳ起動時に参照されるリソーステーブルを、前記オペレーティング・システムが起動される前に書き換えて、前記オペレーティング・システムからプロセッサ・コア及びメモリのハードウェア資源を分割し、前記分割したハードウェア資源を特定処理専用として確保する資源分割手段と、前記資源分割手段により確保された特定処理専用のハードウェア資源上で動作する特定処理実行手段と、前記資源分割手段により確保された特定処理専用のハードウェア資源に、前記オペレーティング・システム上からアクセスする機能を提供するプロセッサ間通信手段と、前記オペレーティング・システム上で動作し、要求に応じて前記プロセッサ間通信手段を使って前記特定処理実行手段に特定の処理を実行させ、実行させた結果を、前記プロセッサ間通信手段を使って前記特定処理実行手段から受け取る特定処理実行管理手段とを備えたことを特徴とする。
【００１０】
また、本発明の一態様による処理実行方法は、複数のプロセッサ・コアを具備してオペレーティング・システムを起動するサーバ装置の実行方法であって、電源オン状態後に最初に起動されるＢＩＯＳにより生成されてＯＳ起動時に参照されるリソーステーブルを、前記オペレーティング・システムが起動される前に書き換えて、前記オペレーティング・システムからプロセッサ・コア及びメモリのハードウェア資源を分割し、前記分割したハードウェア資源を特定処理専用として確保しておき、前記特定処理専用として確保されたハードウェア資源に、前記オペレーティング・システム上からアクセスする機能を設け、要求に応じて、前記特定処理専用として確保された特定処理専用のハードウェア資源上で特定処理を実行させることを特徴とする。
【００１１】
また、本発明の一態様によるプログラムは、複数のプロセッサ・コアを具備してオペレーティング・システムを起動するサーバ装置で、電源オン状態後に最初に起動されるＢＩＯＳにより生成されてＯＳ起動時に参照されるリソーステーブルを、前記オペレーティング・システムが起動される前に書き換えて、前記オペレーティング・システムからプロセッサ・コア及びメモリのハードウェア資源を分割し、前記分割したハードウェア資源を特定処理専用として確保するためのプログラムであって、前記リソーステーブルから特定処理専用として確保すべきプロセッサ・コアのエントリを削除して、特定処理専用のプロセッサ・コアとして確保するステップと、物理メモリの一部をオペレーティング・システムから使用不可として、特定処理専用のメモリとして確保するステップとを含むことを特徴とする。
【発明の効果】
【００１２】
本発明によれば、コストアップやハードウェアの増設を伴うことなく、複数のプロセッサ・コアを具備するサーバ装置で、プロセッサ負荷の高い状態における、オペレータによるキーボードやマウスを使った入力操作やオンライン処理などの即時応答が要求される処理の応答遅延が発生することを防止できる。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１の実施形態に係るサーバ装置の構成を示すブロック図である。
【図２】同実施形態におけるプロセッサ間通信用ＩＯボードの詳細を示すブロック図である。
【図３】同実施形態における資源分割前及び資源分割後のプロセッサエントリの説明図である。
【図４】同実施形態における資源分割前及び資源分割後のシステムアドレスマップの説明図である。
【図５】同実施形態におけるシステムアドレスマップの各エントリの格納情報の説明図である。
【図６】同実施形態における特定処理専用メモリマップの説明図である。
【図７】同実施形態における特定処理用資源管理テーブルの説明図である。
【図８】一般のオープンサーバのシステム起動動作を説明するためのフローチャートである。
【図９】一般のオープンサーバのブロック図である。
【図１０】本発明の第１の実施形態に係るサーバ装置の起動動作を説明するためのフローチャートである。
【図１１】同実施形態においてディスクに格納されているデータブロック構成を示す図である。
【図１２】同実施形態における資源分割プログラムの動作を説明するためのフローチャートである。
【図１３】同実施形態における特定処理実行ＦＷの動作を説明するためのフローチャートである。
【図１４】同実施形態における特定処理管理プログラムとプロセッサ間通信ドライバの動作を説明するためのフローチャートである。
【図１５】本発明の第２の実施形態に係るサーバ装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態について図面を参照して説明する。
＜第１の実施形態＞
図１は、本発明の第１の実施形態に係るサーバ装置１の構成を示すブロック図である。同図に示すように、本発明の第１の実施形態に係るサーバ装置１は、４つのプロセッサ・コア２〜５（物理プロセッサ番号「０」、「６」、「２」、「４」）を具備し、Ｗｉｎｄｏｗｓ（登録商標）のＯＳ(Operating System)が起動するオープンサーバ装置である。なお、サーバ装置１における４つのプロセッサ・コアは、マルチプロセッサにて実現されていてもよいし、マルチコアにて実現されていてもよい。
ここでいう「オープンサーバ装置」は、Ｗｉｎｄｏｗｓ（登録商標）やＬｉｎｕｘ（登録商標）等のオープンＯＳが起動するサーバ装置である。ただし、本発明の適用範囲は、オープンサーバ装置に限らない。すなわち、本発明はオープンＯＳに限らず様々なＯＳの起動するサーバ装置に適用可能である。
【００１５】
同図において、４つのプロセッサ・コア２〜５は、メモリハブ７を介して、物理メモリ６に接続される。また、４つのプロセッサ・コア２〜５は、ＩＯハブ８を介して、ディスク用ＩＯボード１０、コンソール用コントローラ１１、およびネットワークアダプタ１２に接続される。更に、本実施形態においては、ＩＯハブ８には、プロセッサ間通信用ＩＯボード１５が接続される。
【００１６】
ディスク用ＩＯボード１０には、ディスク１３（ディスクＡ）及びディスク１４（ディスクＢ）が接続される。ディスク１３（ディスクＡ）は、Ｗｉｎｄｏｗｓ（登録商標）のＯＳ起動プログラム２２や、資源分割プログラム（資源分割手段）２６を格納している。
コンソール用コントローラ１１には、ディスプレイ８１、キーボード８２、マウス８３等の入出力デバイスが接続される。ネットワークアダプタ１２は、通信用のアダプタである。
【００１７】
このような複数のプロセッサ・コアを具備するオープンサーバ装置１では、プロセッサやメモリ等のハードウェア資源を、ＯＳ用と特定処理用とに分割することで、ＯＳが動作するプロセッサの負荷上昇を抑えつつ、負荷の高い特定処理を実行可能としている。ここでいう「特定処理」とは、より具体的には、即時処理を要求される処理であり、例えば、オペレータによるキーボードやマウスを使った入力操作の処理やオンライン処理などである。
【００１８】
すなわち、本発明の第１の実施形態では、ＯＳが起動される前に、資源分割プログラム２６が、ＢＩＯＳ（Basic Input/Output System）の生成したリソーステーブルを書き換えることで、プロセッサ・コア２〜５を、ＯＳ用のプロセッサ・コア２及び３と、特定処理専用のプロセッサ・コア４及び５とに分割している。また、資源分割プログラム２６により、物理メモリ６を、ＯＳ用メモリ２１と特定処理専用メモリ２５とに分割している。これにより、特定処理専用のプロセッサ・コア４及び５、並びに特定処理専用メモリ２５は、ＯＳから独立した、特定処理専用の資源とすることができる。
【００１９】
サーバ装置１は、プロセッサ負荷の高い特定の処理を実行する際に、オペレータがキーボード８２やマウス８３を使って行う入力操作や、オンライン処理など、即時応答が要求される処理（特定処理）が発生すると、ＯＳから資源分割されたプロセッサ・コア４及び５、並びに特定処理専用メモリ２５上で当該特定処理を実行する。これにより、ＯＳが動作するプロセッサの負荷上昇を抑えつつ、一般にプロセッサ負荷の高い処理である、即時応答が要求される処理を実行可能となる。
【００２０】
このような処理を実行可能とするために、サーバ装置１は、資源分割プログラム２６と、プロセッサ間通信用ＩＯボード１５と、特定処理実行ＦＷ（Firmware）（特定処理実行手段）１９と、プロセッサ間通信ドライバ２８と、特定処理実行管理プログラム（特定処理実行管理手段）２７とを具備する。
【００２１】
資源分割プログラム２６は、前述したように、ＯＳが利用可能なプロセッサ・コアやメモリなどのハードウェア資源情報が書込まれた、ＢＩＯＳメモリ２０上のリソーステーブルを、ＯＳが起動される前に書き換える。これにより、特定処理専用プロセッサ・コア４及び５や、特定処理専用メモリ２５等の資源をＯＳから分離して、特定処理実行ＦＷ１９用に確保する。
【００２２】
プロセッサ間通信用ＩＯボード１５は、図２に示すように、特定処理実行ＦＷ１９用に確保するプロセッサ・コア数やメモリ容量を設定する物理スイッチ１８を持ち、特定処理実行ＦＷ１９で使用するプロセッサ・コア４及び５用のＩＯ割込信号用であるＩＯ割込信号Ａを制御するＩＯ割込信号Ａ制御部（割込信号制御部）１６と、ＯＳで使用するプロセッサ・コア用のＩＯ割込信号用であるＩＯ割込信号Ｂを制御するＩＯ割込信号Ｂ制御部（割込信号制御部）１７とを備えている。
【００２３】
特定処理実行ＦＷ１９は、資源分割プログラム２６により確保された特定処理専用のプロセッサ・コア４及び５、並びに特定処理専用メモリ２５上で、ＯＳから独立して、特定処理を行う。
【００２４】
プロセッサ間通信ドライバ２８は、資源分割プログラム２６により確保された特定処理専用メモリ２５及びプロセッサ間通信用ＩＯボード１５に、ＯＳ上のアプリケーションプログラムからアクセスする機能を提供する。このように、プロセッサ間通信用ＩＯボード１５とプロセッサ間通信ドライバ２８とでプロセッサ間通信手段を構成し、特定処理専用のハードウェア資源（特定処理専用メモリ２５と、特定処理専用のプロセッサ・コア４及び５と）に、ＯＳ上からアクセスする機能を提供する。
【００２５】
特定処理実行管理プログラム２７は、ＯＳ上で動作し、オペレータや他のＯＳ上のアプリケーションプログラムからの要求により、プロセッサ間通信ドライバ２８を使って、特定処理実行ＦＷ１９に特定処理を実行させて結果を応答する。
【００２６】
次に、本発明の第１の実施形態に係るサーバ装置１において、特定処理用の資源を確保する処理について説明する。
サーバ装置１では、電源をＯＮされて起動すると、ＢＩＯＳが動作する。そして、ＢＩＯＳは、ハードウェアの診断を実施した後、プロセッサ・コア２〜５や物理メモリ６などのハードウェア資源情報を記述したリソーステーブルをＢＩＯＳメモリ２０上に生成する。
【００２７】
図３（Ａ）は、ＢＩＯＳが生成するリソーステーブルの例を示している。
図１に示したように、サーバ装置１は、４つのプロセッサ・コア２、３、４、５を具備する。そこで、ＢＩＯＳは、図３（Ａ）に示すように、プロセッサエントリとして、４つのエントリ４１、４２、４３、４４を生成する。各エントリ４１、４２、４３、４４には、エントリタイプと、物理プロセッサ番号と、ブートフラグが記載される。なお、ここでは、物理プロセッサ番号「０」はプロセッサ・コア２、物理プロセッサ番号「２」はプロセッサ・コア４、物理プロセッサ番号「４」はプロセッサ・コア５、物理プロセッサ番号「６」はプロセッサ・コア３にそれぞれ対応している。
【００２８】
また、図４（Ａ）は、ＢＩＯＳが生成するシステムアドレスマップの例を示している。
ここでは、物理メモリ６が４ＧＢの場合の例を示している。なお、システムアドレスマップのエントリに含まれる情報は、図５に示すように、領域の開始アドレス５１と、領域の長さ５２と、領域の属性５３とから構成されている。属性「１」はメインメモリとしてＯＳで使用可能なメモリ領域を示し、属性「２」はリザーブ用のメモリ領域を示し、属性「３」は割込制御用メモリ領域を示し、属性「４」は割込制御用不揮発メモリ領域を示す。なお、サーバ装置１におけるシステムアドレスマップのエントリ数は、同図に示すエントリ数に限らず、様々なエントリ数を取り得る。
【００２９】
ＢＩＯＳが動作して、ハードウェア資源情報を記述したリソーステーブルを生成すると、次に、資源分割プログラム２６が動作する。そして、資源分割プログラム２６は、プロセッサ間通信用ＩＯボード１５から物理スイッチ１８（図２参照）の設定情報を読み込むことで、資源分割情報を取得する。
【００３０】
次に、資源分割プログラム２６は、ＢＩＯＳメモリ２０上のリソーステーブルを書き換えて、リソーステーブルからプロセッサ・コア４及び５を削除して、特定処理専用プロセッサ・コア４及び５をＯＳから使用不可に設定することで、プロセッサ・コア４及び５を特定処理専用として確保する。また、資源分割プログラム２６は、物理メモリ６の一部をＯＳから使用不能の領域に設定することで、特定処理専用メモリ２５を確保する。
【００３１】
つまり、前述したように、本実施形態のサーバ装置１には、４つのプロセッサ・コア２、３、４、５が設けられており、図３（Ａ）に示したように、ＢＩＯＳは、プロセッサエントリとして、４つのエントリ４１〜４４を生成する。資源分割プログラム２６は、これらの４つのエントリ４１〜４４の中から、プロセッサ・コア４（物理プロセッサ番号「２」）のエントリ４２と、プロセッサ・コア５（物理プロセッサ番号「４」）のエントリ４３とを削除する。これにより、図３（Ｂ）に示すように、ＯＳから使用可能なプロセッサを示すプロセッサエントリは、プロセッサ・コア２（物理プロセッサ番号「０」）のエントリ４１と、プロセッサ・コア３（物理プロセッサ番号「６」）のエントリ４４だけになり、プロセッサ・コア４及び５（物理プロセッサ番号「２」、「４」）は特定処理用として確保される。
【００３２】
また、前述したように、物理メモリ６のアドレスマップは、図４（Ａ）に示したように設定されている。資源分割プログラム２６は、このアドレスマップの中から、図４（Ｂ）に示すように、特定処理用メモリの領域を分割する。図４（Ｂ）の例では、図４（Ａ）に示すシステムアドレスマップのエントリ「２」で示されている約２ＧＢのメモリ領域を、システムアドレスマップのエントリ「２」とエントリ「３」の２つの領域に分割する。そして、資源分割プログラム２６は、特定処理専用に確保するメモリ領域の属性を、ＯＳがメインメモリとして使用できないリザーブド属性（属性「２」）に設定することで、特定処理専用メモリ２５を確保している。
【００３３】
資源分割プログラム２６は、資源分割情報を取得すると、続いて、特定処理専用メモリ２５の先頭に、図６及び図７に示すような特定処理用資源管理テーブル７０を生成し、特定処理専用メモリ２５に特定処理実行ＦＷ１９を書き込んで、特定処理専用プロセッサ・コア４及び５に当該特定処理実行ＦＷを実行させる。
【００３４】
図６は、物理メモリ６に確保される特定処理専用メモリ２５のアドレスマップを示している。
同図に示すように、特定処理専用メモリ２５は、特定処理用資源管理テーブル７０と、指示受信バッファ７１と、結果送信バッファ７２と、特定処理ＦＷ領域７３と、特定処理ＦＷワークメモリ７４とからなる。
【００３５】
図７は、特定処理専用メモリ２５の先頭に設けられる特定処理用資源管理テーブル７０の構成を示している。
同図に示すように、特定処理用資源管理テーブル７０は、ヘッダ部６０と、プロセッサエントリ６１、６２と、特定処理メモリエントリ６３と、ＩＯ割込エントリ６４と、ＩＯボード情報エントリ６５と、特定処理実行ＦＷ開始アドレスエントリ６６とからなる。
【００３６】
ヘッダ部６０は、ヘッダ部識別コードと、特定処理起動通知エリアとを含む。プロセッサエントリ６１、６２は、物理プロセッサ番号と、マスタープロセッサかスレーブプロセッサかの区別を示す属性とを含む。ＩＯ割込エントリ６４は、プロセッサ間通信用ＩＯボードの割込信号Ａの割込アドレス及び割込番号を含む。ＩＯボード情報エントリ６５は、プロセッサ間通信用ＩＯボードアクセス用のＰＣＩ（Peripheral Component Interconnect）アドレスを含む。特定処理実行ＦＷ開始アドレスエントリ６６は、特定処理実行ＦＷ１９の開始アドレスを含む。
【００３７】
特定処理専用メモリ２５の先頭に特定処理用資源管理テーブル７０が生成され、特定処理実行ＦＷ領域が書き込まれて、特定処理専用プロセッサ・コア４及び５が起動されると、次に、資源分割プログラム２６は、ＯＳ起動プログラム２２をスタートして、ＯＳ２３を起動する。
ＯＳ２３が起動すると、ＯＳ２３にインストールされた（すなわち、ＯＳ２３の一部を構成する）プロセッサ間通信ドライバ２８は、ＯＳ２３が設定したプロセッサ間通信用ＩＯボード１５へアクセスするための制御情報を、特定処理用資源管理テーブル７０のＩＯボード情報エントリ６５に書き込む。
【００３８】
次に、ＯＳ２３にインストールされた特定処理実行管理プログラム２７が、プロセッサ間通信ドライバ２８を介して、特定処理用資源管理テーブル７０のヘッダ部６０にある特定処理起動通知エリアに、特定処理実行ＦＷ１９の起動指示を書き込む。これにより、特定処理実行ＦＷ１９は動作環境が整ったことを認識し、特定処理の実行指示待ち状態となる。
【００３９】
オペレータ又は他の業務プログラム２４から特定処理の実行要求が発せられると、特定処理実行管理プログラム２７は、プロセッサ間通信ドライバ２８に特定処理実行ＦＷ１９への処理要求発行を指示する。これにより、特定処理実行管理プログラム２７は、特定処理専用メモリ２５上の指示受信バッファ７１に、特定処理実行ＦＷに処理を実行させるための指示データを書き込み、また、プロセッサ間通信用ＩＯボード１５のＩＯ割込信号Ａ制御部１６に、ＩＯ割込信号Ａを発行させる。
【００４０】
特定処理実行ＦＷ１９は、プロセッサ間通信用ＩＯボード１５のＩＯ割込信号Ａを検出すると、指示受信バッファ７１を読み込んで指示に従って処理を実行する。処理が完了した後、特定処理実行ＦＷ１９は、結果送信バッファ７２に実行結果を書き込み、プロセッサ間通信用ＩＯボード１５のＩＯ割込信号Ｂ制御部１７にＩＯ割込信号Ｂを発行させる。
【００４１】
プロセッサ間通信ドライバ２８は、プロセッサ間通信用ＩＯボード１５のＩＯ割込信号Ｂを検出すると結果送信バッファ７２を読み込み、特定処理実行管理プログラム２７に特定処理の実行結果を通知する。
特定処理実行管理プログラム２７は、特定処理の要求元のオペレータ又は業務プログラム２４に対して処理結果を通知する。
【００４２】
次に、サーバ装置１が電源ＯＮとなった後、システムの起動が完了するまでの動作について、フローチャートを用いて説明する。
まず、図８を参照して、一般のオープンサーバ装置の電源ＯＮからシステム起動完了までの動作を説明する。
【００４３】
一般のオープンサーバ装置では、電源がＯＮすると最初にＢＩＯＳによるハードウェア資源の確認と診断を行い（ステップＳ１）、ＢＩＯＳはハードウェア資源テーブル（リソーステーブル（図３（Ａ））を生成する（ステップＳ２）。
次に、ＢＩＯＳは、ディスク１３（ディスクＡ）の先頭ブロックにあるマスターブートレコードであるブロック「０」を読み込んで、ブートストラップローダを実行する（ステップＳ３）。
【００４４】
ブートストラップローダは、マスターブートレコードに書き込まれているパーティションテーブルによりＯＳブートパーティションを確認し、ディスク１３のＯＳブートパーティションの先頭ブロックを読み込んで、ＯＳ起動プログラム２２を実行する（ステップＳ４）。
ＯＳ起動プログラム２２は、ＢＩＯＳが生成したリソーステーブルを参照してＯＳを起動する（ステップＳ５）。
【００４５】
例えば、４個のプロセッサ・コア２〜５を具備する一般のオープンサーバ装置は、図８で説明した処理により、図９に示すように、４個のプロセッサ・コア２〜５とＯＳ用メモリ２１とをＯＳ用のハードウェア資源として使用可能な状態になり、サーバ装置の起動を完了する。なお、図９では、図１の各部と対応する部分に同一の符号を付しているが、図９のサーバ装置は、特定処理用の各部を具備しない点で、図１のサーバ装置１と異なる。
【００４６】
次に、本発明の第１の実施形態に係るサーバ装置１における電源ＯＮからシステム起動完了までの動作を、フローチャートを参照して説明する。
図１０は、本発明の第１の実施形態に係るサーバ装置１において、電源ＯＮからシステム起動完了までの動作を示すフローチャートである。
【００４７】
図１０のフローチャートは、図８のフローチャートに対して、資源分割プログラム２６の読み込みと実行（ステップＳ６）と、プロセッサ間通信ドライバ２８による特定処理用資源管理テーブル７０の読み込み（ステップＳ７）と、プロセッサ間通信ドライバ２８による特定処理用資源管理テーブル７０のＩＯボード情報エントリ６５の書き込み（ステップＳ８）と、特定処理実行管理プログラム２７がプロセッサ間通信ドライバ２８を使って特定処理用資源管理テーブル７０のヘッダ部６０の特定処理起動通知エリアに特定処理実行ＦＷ１９の起動を通知する動作（ステップＳ９）を追加したものになっている。
【００４８】
同図のステップＳ３でＢＩＯＳによる処理を行った後に、ステップＳ６で資源分割プログラム２６の読み込みを実行できるようにするためには、例えば、以下のような処理を行うようにすれば良い。
【００４９】
ここで、図１１（Ａ）において、一般のオープンサーバ装置では、ＢＩＯＳは、ディスク１３（ディスクＡ）の先頭ブロックにあるブロック「０」（符号３１で示す）を読み込んでブートストラップローダを実行する。また、ディスク１３（ディスクＡ）のＯＳブートパーティションの先頭ブロック（符号３２で示す）を読み込んで、ＯＳ起動プログラム２２を実行する。また、マスターブートレコードであるブロック「０」（符号３１）の次のブロック（ブロック「１」）から、ＯＳブートパーティションの先頭ブロック（符号３２）の１つ手前のブロックまでの間は、ＯＳをインストールするときにリザーブド領域に設定され、ＯＳからは使用されない。
【００５０】
このような一般のオープンサーバ装置におけるデータを元に、本実施形態における処理を実行可能なデータを得るために、一般のオープンサーバにおけるブロック「０」（符号３１）に書き込まれているデータを、図１１（Ｂ）におけるブロック「１」（符号３５で示す）にコピーし、ステップＳ３で実行されるブロック「０」（符号３４で示す）に格納されているブートストラップローダを、ブロック「２」（符号３６で示す）を読み込んで実行するプログラムに書き変える。これにより、サーバ装置１が、ステップＳ３の次にステップＳ６の資源分割プログラムの読み込みと実行を行うようにする。
【００５１】
図１０において、ステップＳ６で実行される資源分割プログラム２６は、ＢＩＯＳメモリ２０上にある資源管理情報を書き換えて、４個のプロセッサ・コア２〜５の内の２個のプロセッサ・コア４及び５と、物理メモリ６の内の特定処理専用メモリ２５をＯＳが使用不可能なハードウェア資源として分割（ＯＳから分離）し、特定処理実行ＦＷ１９を実行させる。
【００５２】
ステップＳ７〜Ｓ９は、プロセッサ間通信ドライバ２８と、特定処理実行管理プログラム２７とを、ＯＳにインストールすることにより実行される。
【００５３】
次に、図１２を参照して、ステップＳ６で実行している資源分割プログラム２６の動作を説明する。
まず、資源分割プログラム２６は、ＢＩＯＳによりプロセッサ間通信用ＩＯボード１５の割込信号Ａに割り当てられた割込アドレス及び割込番号と、プロセッサ間通信用ＩＯボード１５の物理スイッチ１８に設定された、特定処理専用に確保するプロセッサ・コアの数と物理メモリ容量の情報とを取得する（ステップＳ１０）。
【００５４】
次に、資源分割プログラム２６は、ＢＩＯＳによりＢＩＯＳメモリ２０上に生成されているハードウェア資源情報を書き換えて、プロセッサ・コアと物理メモリとを、特定処理専用に確保する（ステップＳ１１）。
ステップＳ１１で４個のプロセッサ・コアのうち２個のプロセッサ・コアを特定処理専用に確保する場合、資源分割プログラム２６は、図３（Ａ）に示すハードウェア資源情報中のプロセッサエントリから２つのプロセッサエントリを削除して、図３（Ｂ）のように書き換える。
【００５５】
また、ステップＳ１１で４ＧＢのメモリから約１ＧＢのメモリを特定処理専用に確保する場合、資源分割プログラム２６は、図４（Ａ）に示すシステムアドレスマップのエントリ「２」で示されている約２ＧＢのメモリ領域を、図４（Ｂ）に示すメモリ資源分割後のシステムアドレスマップのエントリ「２」とエントリ「３」の２つの領域に分割し、特定処理専用に確保するメモリ領域の属性を、ＯＳがメインメモリとして使用できないリザーブド属性「２」に設定する。
【００５６】
次に、資源分割プログラム２６は、特定処理用資源管理テーブル７０（図７）を生成し、特定処理専用メモリ２５の先頭に書き込む（ステップＳ１２）。
次に、資源分割プログラム２６は、ディスク１３（ディスクＡ）のブロック「６」〜ブロック「１４」（図１１（Ｂ）において符号３７で示す）から特定処理実行ＦＷを読み込んで、特定処理専用メモリ２５に書き込む（ステップＳ１３）。
【００５７】
次に、資源分割プログラム２６は、特定処理用プロセッサ・コア４及び５を起動して、特定処理実行ＦＷ１９の実行を開始させる（ステップＳ１４）。
次に、ディスク１３（ディスクＡ）の先頭ブロック（図１１の符号３１）のデータが格納されているブロック「１」（図１１の符号３５）を読み出して、オリジナルの（一般のサーバ装置で実行されるブートストラップローダと同様の）ブートストラップローダを実行する（ステップＳ１５）。
【００５８】
次に、ステップＳ１４で起動された特定処理専用プロセッサ・コア４及び５で実行される特定処理実行ＦＷ１９の動作について、図１３のフローチャートを参照して説明する。
図１３において、特定処理実行ＦＷ１９は、特定処理用資源管理テーブル７０（図７）のプロセッサエントリ６１、６２の情報と自身が動作しているプロセッサ・コアの物理プロセッサ番号とを比較して、自身が動作しているプロセッサ・コアがスレーブプロセッサか否かを判定する（ステップＳ２０）。
【００５９】
スレーブプロセッサであると判定した場合（ステップＳ２０：Ｙｅｓ）、マスタープロセッサからの指示により処理を実行する動作となる（ステップＳ３０）。
一方、マスタープロセッサであると判定した場合（ステップＳ２０：Ｎｏ）、特定処理実行ＦＷ１９は、特定処理用資源管理テーブル７０のヘッダ部６０にある特定処理起動通知エリアの読み込みを行い（ステップＳ２１）、ＦＷ起動通知が来るのを待ち合わせる（ステップＳ２２）。
【００６０】
特定処理の実行環境が整って特定処理実行管理プログラム２７からＦＷ起動通知が来た後は（ステップＳ２２：Ｙｅｓ）、特定処理実行ＦＷ１９は、プロセッサ間通信用ＩＯボード１５からのＩＯ割込信号Ａの待ち合わせを行う（ステップＳ２３、Ｓ２４）。ＩＯ割込信号Ａを検出していない場合（ステップＳ２４：Ｎｏ）、ステップＳ２３に戻り、特定処理実行ＦＷ１９は、引き続きＩＯ割込信号Ａの待ち合わせを行う。
【００６１】
一方、ＩＯ割込信号Ａを検出すると（ステップＳ２４：Ｙｅｓ）、特定処理実行ＦＷ１９は、指示受信バッファ７１の読み込みを行い（ステップＳ２５）、特定処理実行管理プログラム２７の指示内容を実行する（ステップＳ２６）。
【００６２】
指示内容の実行を完了すると、特定処理実行ＦＷ１９は、結果送信バッファ７２へ実行結果の書き込みを行い（ステップＳ２７）、プロセッサ間通信用ＩＯボード１５へＩＯ割込信号Ｂの送信を指示する（ステップＳ２８）。その後、ステップＳ２３に戻り、特定処理実行ＦＷ１９は、プロセッサ間通信用ＩＯボード１５からのＩＯ割込信号Ａを待ち合わせる。
【００６３】
次に、特定処理実行管理プログラム２７の動作について、図１４のフローチャートを参照して説明する。
図１４において、オペレータ又は他の業務プログラムから特定処理の処理要求が来たとき、特定処理実行管理プログラム２７はプロセッサ間通信ドライバ２８に特定処理実行ＦＷ１９への処理要求発行を指示する（ステップＳ４０）。
当該指示を受けたプロセッサ間通信ドライバ２８は、特定処理実行管理プログラム２７から受け取った特定処理実行ＦＷ１９に対する指示情報を特定処理専用メモリ２５上の指示受信バッファ７１に書き込み、プロセッサ間通信用ＩＯボード１５のＩＯ割込信号Ａ制御部１６にＩＯ割込信号Ａを発行させる。
【００６４】
次に、プロセッサ間通信ドライバ２８は、プロセッサ間通信用ＩＯボード１５からのＩＯ割込信号Ｂの待ち合わせを行う（ステップＳ４２、Ｓ４３）。ＩＯ割込信号Ｂを検出していない場合（ステップＳ４３：Ｎｏ）、ステップＳ４２に戻り、プロセッサ間通信ドライバ２８は、引き続き、ＩＯ割込信号Ｂの待ち合わせを行う。
【００６５】
一方、ＩＯ信号Ｂを検出すると（ステップＳ４３：Ｙｅｓ）、プロセッサ間通信ドライバ２８は、特定処理専用メモリ２５上の結果送信バッファ７２から処理の実行結果を読み出し、読み出した実行結果を、特定処理実行管理プログラム２７に通知する（ステップＳ４４）
処理の実行結果を受け取った特定処理実行管理プログラム２７は、特定処理の要求元に特定処理の処理結果を通知する（ステップＳ４５）。
【００６６】
なお、サーバ装置１が、高負荷の処理を特定処理として実行するようにしてもよい。例えば、特定処理実行管理プログラム２７が、サーバ装置で実行する業務に合わせてプロセッサ負荷が高く時間がかかる特定の処理を特定処理として選択し、特定処理実行ＦＷ１９に実行させるようにする。
【００６７】
以上のように、サーバ装置１は、即時処理を要求される処理あるいはプロセッサ負荷の高い処理である特定処理を、ＯＳから資源分割されたプロセッサ・コア及びメモリ上で実行する。これにより、サーバ装置１において、ＯＳが動作するプロセッサの負荷上昇を抑えつつ、即時処理を要求される処理やプロセッサ負荷の高い処理を実行可能である。
そして、サーバ装置１は、プロセッサやメモリの増設や、処理能力の高い高価なバーチャルマシン・システム等のサーバ装置の導入を行うことなく、上記のように、ＯＳが動作するプロセッサの負荷上昇を抑えつつ、即時処理を要求される処理やプロセッサ負荷の高い処理を実行可能である。
また、サーバ装置のスペックの制限によりサーバ装置１では、プロセッサやメモリの増設ができない場合でも、上記のように、ＯＳが動作するプロセッサの負荷上昇を抑えつつ、即時処理を要求される処理やプロセッサ負荷の高い処理を実行可能である。
【００６８】
このように、サーバ装置１では、コストアップやハードウェアの増設を伴うことなく、即時処理を要求される処理またはプロセッサ負荷の高い処理である特定処理を実行した場合に、オペレータによるキーボードやマウスを使った入力操作やオンライン処理などの即時応答が要求される処理で応答遅延が発生することを防止できる。
【００６９】
また、資源分割プログラム２６は、ＯＳが起動される前に、リソーステーブルを書き換えて、特定処理専用のハードウェア資源（プロセッサ・コアおよびメモリ）を確保するので、サーバ装置１が、特定処理専用のハードウェア資源を割り当て済みのリソーステーブルを予め具備する必要が無い。サーバ装置１の構成を一般のサーバ装置に近い構成と出来る点で、サーバ装置１の製造コストを低減することができる。
【００７０】
また、サーバ装置１が、プロセッサ間通信用ＩＯボード１５を具備し、ＩＯ割込信号ＡおよびＩＯ割込信号Ｂの制御を行うことにより、ＯＳと特定処理実行ＦＷとの間の通信量（プロセッサ２および３と、プロセッサ４および５との間の通信量）が多い場合にも、適切に通信を行ってサーバ装置１全体の処理速度を維持することができる。
【００７１】
＜第２の実施形態＞
次に、本発明の他の実施形態について説明する。図１５は、本発明の第２の実施形態を示している。この第２の実施形態におけるサーバ装置２は、その基本的構成は第１の実施形態におけるサーバ装置１と同様であるが、プロセッサ間通信用ＩＯボード１５を除いた構成となっている。なお、図１５において、図１の各部に対応して同様の機能を有する部分には、同一符号を付して、その説明を省略する。
【００７２】
特定処理実行管理プログラム２７と特定処理実行ＦＷ１９間の通信性能があまり要求されない場合、図１５に示すように、プロセッサ間通信用ＩＯボード１５を外した構成とし、プロセッサ間通信ドライバ２８と特定処理実行ＦＷ１９の間で、図６における指示受信バッファ７１と結果送信バッファ７２を使ったメモリアクセスインタフェースのみでプロセッサ間通信を実現することが可能である。
【００７３】
この場合、特定処理実行ＦＷ１９は、指示受信バッファ７１を一定の時間間隔で読み出して特定処理の実行指示が来ているか否かを確認する。指示が来たことを検出すると、特定処理実行ＦＷ１９は、指示内容を受け取って指示受信バッファ７１に指示受け取り済みであることを書き込み、指示された処理を実行する。指示された処理が終了したら、特定処理実行ＦＷ１９は結果送信バッファ７１に処理結果を書き込む。
【００７４】
プロセッサ間通信ドライバ２８は、指示受信バッファ７１に実行する処理の指示を書き込んだ後、結果送信バッファ７２を一定の時間間隔で読み出して特定処理の実行結果が格納されているか確認する。プロセッサ間通信ドライバ２８は、結果が格納されていることを検出すると、処理結果を受け取って結果送信バッファ７２に結果受け取り済みであることを書き込む。
【００７５】
プロセッサ間通信用ＩＯボード１５上の物理スイッチ１８を読み込むことで実現していた資源分割情報の取得に関しては、資源分割プログラム２６に初期値として値を持ち、特定処理実行管理プログラム２７から設定を変更可能とすることにより、次回のシステム起動時から設定した資源分割情報が有効となる。
【００７６】
このようにして、この例ではプロセッサ間通信用ＩＯボード１５を用いることなく、オープンＯＳ用プロセッサと特定処理専用プロセッサ間の通信を実現している。これにより、コストダウンを図ることができる。また、既存のオープンサーバ装置にＩＯボード用空きスロットがない場合でも実現が可能となる。
【００７７】
なお、サーバ装置１、２の全部または一部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【００７８】
以上、本発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【符号の説明】
【００７９】
１、２：サーバ装置
２〜５：プロセッサ・コア
６：物理メモリ
７：メモリハブ
８：ＩＯハブ
１０：ディスク用ＩＯボード
１１：コンソール用コントローラ
１２：ネットワークアダプタ
１３、１４：ディスク
１５：プロセッサ間通信用ＩＯボード
１６：ＩＯ割込信号Ａ制御部
１７：ＩＯ割込信号Ｂ制御部
１８：物理スイッチ
１９：特定処理実行ＦＷ
２０：ＢＩＯＳメモリ
２１：ＯＳ用メモリ
２２：ＯＳ起動プログラム
２４：業務プログラム
２５：特定処理専用メモリ
２６：資源分割プログラム
２７：特定処理実行管理プログラム
２８：プロセッサ間通信ドライバ
【図１】
0005699665.tif 000002
【図２】
0005699665.tif 000003
【図３】
0005699665.tif 000004
【図４】
0005699665.tif 000005
【図５】
0005699665.tif 000006
【図６】
0005699665.tif 000007
【図７】
0005699665.tif 000008
【図８】
0005699665.tif 000009
【図９】
0005699665.tif 000010
【図１０】
0005699665.tif 000011
【図１１】
0005699665.tif 000012
【図１２】
0005699665.tif 000013
【図１３】
0005699665.tif 000014
【図１４】
0005699665.tif 000015
【図１５】
0005699665.tif 000016