(57)【要約】  マルチプロセッサ装置は、バスを介して複数のプロセッサ、ブートプログラムを格納した共有記憶領域、及び読出要求に対し実時間情報を通知する実時間通知部を接続する。実時間取得部は、各プロセッサに設けられ、パワーオンによる起動直後に動作して時間通知制御部から実時間情報を取得して共有記憶領域上のプロセッサテーブルに登録する。起動制御部は、各プロセッサに設けられ、自己の実時間情報を登録した後にプロセッサテーブルに登録している他プロセッサの実時間情報を参照し、自己の実時間が最も早い場合に優先処理権を取得し、ブートプログラムを読み出してブート処理を実行させ、ブート処理を終了した時点で前記プロセッサテーブルから自己の実時間情報を削除する。【特許請求の範囲】
【請求項１】
バスを介して接続された複数のプロセッサと、
前記バスに接続され、前記各プロセッサで使用されるブートプログラムを格納した共有記憶領域と、
読出要求に対し実時間情報を通知する実時間通知部と、
前記各プロセッサに設けられ、パワーオンによる起動直後に動作して前記時間通知制御部から実時間情報を取得して前記共有記憶領域上のプロセッサテーブルに登録する実時間取得部と、
前記各プロセッサに設けられ、自己の実時間情報を登録した後に前記プロセッサテーブルに登録している他プロセッサの実時間情報を参照し、自己の実時間が最も早い場合に優先処理権を取得し、前記ブートプログラムを読み出してブート処理を実行させ、ブート処理を終了した時点で前記プロセッサテーブルから自己の実時間情報を削除する起動制御部と、
を備えたことを特徴とするマルチプロセッサ装置。
【請求項２】
請求の範囲１のマルチプロセッサ装置に於いて、
前記実時間通知部は、外部から受信した世界標準時間情報（グローバル時間情報）に基づいて実時間情報を生成することを特徴とするマルチプロセッサ装置。
【請求項３】
請求の範囲１のマルチプロセッサ装置に於いて、
前記実時間通知部は、実時間情報としてタイムスタンプを生成し、
前記実時間取得部は、前記プロセッサテーブルに取得したタイムスタンプを登録すると共に自プロセッサのステータスとしてイネーブルを登録し、
前記起動制御部は、前記プロセッサテーブルから他のプロセッサのタイムスタンプとステータスを取得し、他プロセッサのステータスがディセーブルの場合は、タイムスタンプを比較することなく自己のタイムスタンプが早いと判断し、他プロセッサのステータスがイネーブルの場合はタイムスタンプを比較して早いか否か判断することを特徴とするマルチプロセッサ装置。
【請求項４】
請求の範囲１のマルチプロセッサ装置に於いて、前記実時間取得部は、前記実時間通知部から実時間情報を前記バス上に読み出すフェッチ動作に続いて前記プロセッサテーブルに前記バス上の時間情報を書き込むライト動作を連続して実行するハードウェア回路であることを特徴とするマルチプロセッサ装置。
【請求項５】
請求の範囲４のマルチプロセッサ装置に於いて、前記実時間通知部は、前記実時間取得部によるフェッチ動作とライト動作の連続実行時間以下の周期のクロックを計数してタイムスタンプを生成するカウンタを備えたことを特徴とするマルチプロセッサ装置。
【請求項６】
請求の範囲５のマルチプロセッサ装置に於いて、前記実時間取得部によるフェッチ動作とライト動作の連続実行時間は、前記バスの最短リードアクセス時間であることを特徴とするマルチプロセッサ装置。
【請求項７】
請求の範囲１のマルチプロセッサ装置に於いて、前記時間通知部は、予め設定された起動時刻に達した際に一定時間幅の時間窓を生成し、前記実時間取得部及び前記起動制御部は前記時間窓の時間帯にのみ動作して特定のプロセッサに優先処理権を取得させて順次起動させることを特徴とするマルチプロセッサ装置。
【請求項８】
請求の範囲７のマルチプロセッサ装置に於いて、前記時間通知部は、前記バスの最短リードアクセス時間以下の周期をもつクロックを計数してタイムスタンプを生成するカウンタを有し、前記時間窓の開始時刻で前記カウンタをリセットして有効なタイムスタンプの計数を開始させることを特徴とするマルチプロセッサ装置。
【請求項９】
請求の範囲１のマルチプロセッサ装置に於いて、
前記複数のプロセッサ、共有記憶領域、前記時間通知部および起動制御部は、別の場所に設置された少なくとも2台のコンピュータ装置の各々に設けられており、
前記各コンピュータ装置は、リモート操作で設定された異なる起動時刻に到達する毎に一定時間幅の時間窓を各々生成し、前記時間窓の時間帯に各コンピュータ装置の前記実時間取得部及び起動制御部を動作して特定のプロセッサに優先処理権を取得させて順次起動させることにより、各コンピュータ装置を前記起動時刻順に起動させることを特徴とするマルチプロセッサ装置。
【請求項１０】
請求の範囲９のマルチプロセッサ装置に於いて、早い起動時刻が設定されたコンピュータ装置の最初に処理優先権を取得したプロセッサの起動制御部は、ブート処理が終了した時点で遅い起動時刻が設定されたコンピュータ装置の共有記憶領域を初期化して自己が使用したブートプログラムをリモートコピーすることを特徴とするマルチプロセッサ装置。
【請求項１１】
バスを介して接続された共有記憶領域に格納されているブートプログラムを使用して複数のプロセッサを順次起動させるマルチプロセッサ装置の制御方法に於いて、
前記各プロセッサからの読出要求に対し実時間情報を通知する実時間通知ステップと、
パワーオンによる起動直後に動作し、各プロセッサが実時間通知部から取得した実時間情報を前記共有記憶領域上のプロセッサテーブルに登録する実時間取得ステップと、
あるプロセッサが自己の実時間情報を登録した後に前記プロセッサテーブルに登録している他プロセッサの実時間情報を参照し、自己の実時間が最も早い場合に優先処理権を取得し、前記ブートプログラムを読み出してブート処理を実行させ、ブート処理を終了した時点で前記プロセッサテーブルから自己の実時間情報を削除する起動制御ステップと、
を備えたことを特徴とするマルチプロセッサ装置の制御方法。
【請求項１２】
請求の範囲１１のマルチプロセッサ装置の制御方法に於いて、前記実時間通知ステップは、外部から受信した世界標準時間情報（グローバル時間情報）に基づいて実時間情報を生成することを特徴とするマルチプロセッサ装置の制御方法。
【請求項１３】
請求の範囲１１のマルチプロセッサ装置の制御方法に於いて、
前記実時間取得ステップは、前記プロセッサテーブルに前記時間通知部から実時間情報として取得したタイムスタンプを登録すると共に自プロセッサのステータスとしてイネーブルを登録し、
前記起動制御ステップは、前記プロセッサテーブルから他のプロセッサのタイムスタンプとステータスを取得し、他プロセッサのステータスがディセーブルの場合は、タイムスタンプを比較することなく自己のタイムスタンプが早いと判断し、他プロセッサのステータスがイネーブルの場合はタイムスタンプを比較して早いか否か判断することを特徴とするマルチプロセッサ装置の制御方法。
【請求項１４】
請求の範囲１１のマルチプロセッサ装置の制御方法に於いて、前記実時間取得ステップは、前記実時間通知部から実時間情報を前記バス上に読み出すフェッチ動作に続いて前記プロセッサテーブルに前記バス上の時間情報を書き込むライト動作を連続して実行することを特徴とするマルチプロセッサ装置の制御方法。
【請求項１５】
請求の範囲１４のマルチプロセッサ装置の制御方法に於いて、前記実時間通知ステップは、前記実時間取得ステップによるフェッチ動作とライト動作の連続実行時間以下の周期のクロックを計数してタイムスタンプを生成するカウンタを備えたことを特徴とするマルチプロセッサ装置の制御方法。
【請求項１６】
請求の範囲１５のマルチプロセッサ装置の制御方法に於いて、前記実時間取得ステップによるフェッチ動作とライト動作の連続実行時間は、前記バスの最短リードアクセス時間であることを特徴とするマルチプロセッサ装置の制御方法。
【請求項１７】
請求の範囲１１のマルチプロセッサ装置の制御方法に於いて、前記時間通知ステップは、予め設定された起動時刻に達した際に一定時間幅の時間窓を生成し、前記実時間取得ステップ及び前記起動制御ステップは前記時間窓の時間帯に動作して特定のプロセッサに優先処理権を取得させて順次起動させることを特徴とするマルチプロセッサ装置の制御方法。
【請求項１８】
請求の範囲１７のマルチプロセッサ装置の制御方法に於いて、前記時間通知ステップは、前記バスの最短リードアクセス時間以下の周期をもつクロックを計数してタイムスタンプを生成するカウンタを有し、前記時間窓の開始時刻で前記カウンタをリセットして有効なタイムスタンプの計数を開始させることを特徴とするマルチプロセッサ装置の制御方法。
【請求項１９】
請求の範囲１１のマルチプロセッサ装置の制御方法に於いて、
前記複数のプロセッサ、共有記憶領域、前記時間通知部および起動制御部は、別の場所に設置された少なくとも2台のコンピュータ装置の各々に設けられており、
前記各コンピュータ装置は、リモート操作で設定された異なる起動時刻に到達する毎に一定時間幅の時間窓を各々生成し、前記時間窓の時間帯に各コンピュータ装置の前記実時間取得部ステップび起動制御ステップを実行して特定のプロセッサに優先処理権を取得させて順次起動させることにより、各コンピュータ装置を前記起動時刻順に起動させることを特徴とするマルチプロセッサ装置の制御方法。
【請求項２０】
請求の範囲１９のマルチプロセッサ装置の制御方法に於いて、早い起動時刻が設定されたコンピュータ装置の最初に処理優先権を取得したプロセッサの起動制御部は、ブート処理が終了した時点で遅い起動時刻が設定されたコンピュータ装置の共有記憶領域を初期化して自己が使用したブートプログラムをリモートコピーすることを特徴とするマルチプロセッサ装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムのパワーオン時にバス接続している共通記憶領域から複数のプロセッサがブートプログラムを取得して同時に起動するマルチプロセッサ装置及びその制御方法に関し、特に、共通記憶領域からのブートプログラムを取得して実行する起動処理の優先順位をタイムスタンプを利用して決定するマルチプロセッサ装置及びその制御方法に関する。
【背景技術】
【０００２】
従来、複数のプロセッサ及び共通記憶領域をバスに接続したマルチプロセッサ装置にあっては、外部の管理サーバからの指示によりシステムをパワーオンした場合、共通記憶領域に格納されているブートプログラムを各プロセッサが取得して起動するようにしている。【０００３】
このためシステムのパワーオンにより複数のプロセッサからの共通記憶領域への同時ライトが発生し、不安定アクセスが発生する。そこで何れか１つのプロセッサをイニシエータとして動作させる必要があり、従来はセマフォ制御等を用いて競合を回避し、複数のプロセッサを順番に起動している。
【特許文献１】特開平４−２８４５５０号公報
【特許文献２】特開平２−１５６３６６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、近年にあっては、複数のプロセッサと共通記憶領域をバス接続したマルチプロセッサ装置でサーバ装置を構築し、このようなサーバ装置を物理的に離れた複数地点に設置し、異なる地点のサーバ装置の間には地点間共通記憶領域を設けて相互に必要な資源のやり取りを可能としたシステムが構築されている。【０００５】
このような複数地点にサーバ装置を分散配置したシステムにあっては、管理サーバ等による外部からの指示でシステムにパワーオンを指示し、各サーバ装置に設けている複数のプロセッサを同時に又は異なる時刻に起動するようにしている。【０００６】
しかしながら、従来のセマフォ制御等による共有記憶領域のアクセス競合の回避は、限られた範囲のプロセッサ、例えばボードに搭載されたプロセッサのみしか指定することができず、バス接続しているプロセッサや他地点に設置しているサーバ装置によるプロセッサ群で共通記憶領域のブートプログラムを使用して起動する場合には、イニシエータを決定することができない問題があった。【０００７】
本発明は、バス接続されたプロセッサ群、更には他地点に分散配置されたプロセッサ群のうちの１つをイニシエータとして決定して複数のプロセッサを優先順位に従って順次起動可能なマルチプロセッサ装置及びその制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、マルチプロセッサ装置を提供する。本発明のマルチプロセッサ装置は、バスを介して接続された複数のプロセッサと、バスに接続され、各プロセッサで使用されるブートプログラムを格納した共有記憶領域と、読出要求に対し実時間情報を通知する実時間通知部と、各プロセッサに設けられ、パワーオンによる起動直後に動作して時間通知制御部から実時間情報を取得して共通記憶領域上のプロセッサテーブルに登録する実時間取得部と、各プロセッサに設けられ、自己の実時間情報を登録した後にプロセッサテーブルに登録している他プロセッサの実時間情報を参照し、自己の実時間が最も早い場合に優先処理権を取得し、ブートプログラムを読み出してブート処理を実行させ、ブート処理を終了した時点でプロセッサテーブルから自己の実時間情報を削除する起動制御部とを備えたことを特徴とする。【０００９】
ここで実時間通知部は、外部から受信した世界標準時間情報（グローバル時間情報）に基づいて実時間情報を生成する。また実時間通知部は、実時間情報としてタイムスタンプを生成し、実時間取得部は、プロセッサテーブルに取得したタイムスタンプを登録すると共に自プロセッサのステータスとしてイネーブルを登録し、起動制御部は、プロセッサテーブルから他のプロセッサのタイムスタンプとステータスを取得し、他プロセッサのステータスがディセーブルの場合は、タイムスタンプを比較することなく自己のタイムスタンプが早いと判断し、他プロセッサのステータスがイネーブルの場合はタイムスタンプを比較して早いか否か判断する。【００１０】
実時間取得部は、実時間通知部から実時間情報をバス上に読み出すフェッチ動作に続いてプロセッサテーブルにバス上の時間情報を書き込むライト動作を連続して実行するハードウェア回路である。【００１１】
実時間通知部は、記実時間取得部によるフェッチ動作とライト動作の連続実行時間以下の周期のクロックを計数してタイムスタンプを生成するカウンタを備える。この実時間取得部によるフェッチ動作とライト動作の連続実行時間は、バスの最短リードアクセス時間である。【００１２】
時間通知部は、予め設定された起動時刻に達した際に一定時間幅の時間窓を生成し、実時間取得部及び起動制御部は前記時間窓の時間帯にのみ動作して特定のプロセッサに優先処理権を取得させて順次起動させる。【００１３】
時間通知部は、バスの最短リードアクセス時間以下の周期をもつクロックを計数してタイムスタンプを生成するカウンタを有し、時間窓の開始時刻でカウンタをリセットして有効なタイムスタンプの計数を開始させる。【００１４】
本発明のマルチプロセッサ装置は、複数のプロセッサ、共通記憶領域、時間通知部および起動制御部を別の場所に設置された少なくとも2台のコンピュータ装置の各々に設けており、各コンピュータ装置は、リモート操作で設定された異なる起動時刻に到達する毎に一定時間幅の時間窓を各々生成し、時間窓の時間帯に各コンピュータ装置の実時間取得部及び起動制御部を動作して特定のプロセッサに優先処理権を取得させて順次起動させることにより、各コンピュータ装置を起動時刻順に起動させることを特徴とする。【００１５】
ここで、早い起動時刻が設定されたコンピュータ装置の最初に処理優先権を取得したプロセッサの起動制御部は、ブート処理が終了した時点で遅い起動時刻が設定されたコンピュータ装置の共通記憶領域を初期化して自己が使用したブートプログラムをリモートコピーする。【００１６】
本発明は、マルチプロセッサ装置の制御方法を提供する。即ち、本発明は、バスを介して接続された共通記憶領域に格納されているブートプログラムを使用して複数のプロセッサを順次起動させるマルチプロセッサ装置の制御方法に於いて、
各プロセッサからの読出要求に対し実時間情報を通知する実時間通知ステップと、
パワーオンによる起動直後に動作し、各プロセッサが実時間通知部から取得した実時間情報を共通記憶領域上のプロセッサテーブルに登録する実時間取得ステップと、
あるプロセッサが自己の実時間情報を登録した後にプロセッサテーブルに登録している他プロセッサの実時間情報を参照し、自己の実時間が最も早い場合に優先処理権を取得し、ブートプログラムを読み出してブート処理を実行させ、ブート処理を終了した時点でプロセッサテーブルから自己の実時間情報を削除する起動制御ステップと、
を備えたことを特徴とする。【００１７】
なお、本発明によるマルチプロセッサ装置の制御方法の詳細は、マルチプロセッサ装置の場合と基本的に同じになる。
【発明の効果】
【００１８】
本発明によれば、システムのパワーオンにより複数のプロセッサの起動直後に実時間情報としてのタイムスタンプを取得し、最も早いタイムスタンプを取得したプロセッサに最優先処理権を設定してイニシエータとして決定し、イニシエータとなったプロセッサが最初に共有記憶領域からブートプログラムを取得し、ブート処理の実行で起動するようになり、イニシエータの決定がタイムスタンプを利用することで単純にできる。【００１９】
またプロセッサによる実時間通知部からのタイムスタンプの取得（フエッチ）と共有記憶領域のプロセッサテーブルへの登録（ライト）を連続動作として例えばハードウェア回路の実時間フェッチ・アンド・ライト動作として実行し、実時間フェッチ・アンド・ライト動作の実行時間をタイムスタンプを計数するカウンタの周期以下のクロック（最短バススロック周期以下のクロック）で実行することで、同じタイムスタンプの値を複数のプロセッサが取得してしまうことを防止し、タイムスタンプの比較により１台のプロセッサのみに最優先処理権を設定できる。【００２０】
また他地点に設置されるサーバ装置の各々に設けた複数のプロセッサによりプロセッサグループ（プロセッサ群）を構成した場合、各プロセッサグルーブに異なる時間窓を設定し、時間窓の時間帯においてのみタイムスタンプを有効して最優先処理権の設定による起動処理を実行させることで、複数箇所のプロセッサグループによってプロセッサがどんなに増えても、システムをパワーオンした最にイニシエータとなるプロセッサを１台決定して起動処理を実行できる。また時間窓の開始時刻を異ならせておくことで、他地点に分かれたプロセッサグループに対して順位を付けた起動処理ができる。
【図面の簡単な説明】
【００２１】
【図１】本発明のシステム構成を機能構成と共に示したブロック図；
【図２】図１のプロセッサ、共有メモリ及び実時間通知部を取り出して示したブロック図；
【図３】共有メモリに格納されているプロセッサテーブルの説明図；
【図４】２台のサーバによるプロセッサ群に対する時間窓の設定とタイムスタンプの有効カウント処理のタイムチャート；
【図５】プロセッサの実時間取得部によるタイムスタンプの取得登録処理のタイムチャート；
【図６】２台のプロセッサを例にとった本発明による起動制御処理のタイムチャート；
【図７】図７に続く本発明による起動制御処理のタイムチャート；
【図８】本発明による実時間通知処理のフローチャート；
【図９】本発明による起動制御処理のフローチャート；
【発明を実施するための最良の形態】
【００２２】
図１は、本発明によるマルチプロセッサ装置のシステム構成を機能構成と共に示したブロック図である。図１において、本発明のマルチプロセッサ装置は、この実施形態にあってはサーバ１０とサーバ１２を設置しており、サーバ１０の設置地点に対し、サーバ１２は異なった設置地点に設けている。サーバ１０にはｎ台のプロセッサ１４−１，１４−２，１４−ｎが設けられる。【００２３】
プロセッサ１４−１〜１４−ｎに対しては、バス２０を介して共有記憶領域として機能する共有メモリ１６を接続し、更に実時間通知部１８を設けている。一方、サーバ１２にあっては、ｎ台のプロセッサ２４−１，２４−２，・・・２４−ｎを有し、プロセッサ２４−１〜２４−ｎに対し、バス３０を介して共有メモリ２６及び実時間通知部２８を接続している。【００２４】
サーバ１０のバス２０とサーバ１２のバス３０の間にはシステム共有メモリ２２が接続され、システム共有メモリ２２を経由してサーバ１０とサーバ１２の間で情報をやり取りできるようにしている。サーバ１０の実時間通知部１８はグローバル時間送信局３２からのグローバル時間情報を受信し、プロセッサ１４−１〜１４−ｎからの読出し要求に対し、実時間としてのタイムスタンプ情報を通知する。【００２５】
共有メモリ１６には、プロセッサ１４−１〜１４−ｎの起動制御、即ちブート処理に使用されるブートプログラム４４が格納されている。また共有メモリ１６には、実時間通知部１８からプロセッサ１４−１〜１４−ｎがそれぞれ取得したタイムスタンプを登録するプロセッサテーブル４６が設けられている。プロセッサ１４−１〜１４−ｎのそれぞれには、実時間取得部４０−１，４０−２，・・・４０−ｎ及び起動制御部４２−１，４２−２，・・・４２−ｎの機能が設けられている。【００２６】
実時間取得部４０−１〜４０−ｎは、管理サーバ３４によるネットワーク３６を経由したリモート操作によるシステムのパワーオン指示を受けて起動した直後、又はリモート設定した起動時刻到達時の時間窓生成時に動作し、実時間通知部１８から実時間情報としてタイムスタンプを取得し、共有メモリ１６上のプロセッサテーブル４６に登録する。【００２７】
なおプロセッサテーブル４６にはプロセッサ１４−１〜１４−ｎのステータスとして、起動状態にあれば「イネーブル」が同時に登録され、起動していなければ「ディセーブル」が登録されることになる。起動制御部４２−１〜４２−ｎは、実時間通知部１８から取得した自己の実時間情報としてのタイムスタンプをプロセッサテーブル４６に登録した後に、プロセッサテーブル４６に登録している他のプロセッサのタイムスタンプを参照し、自己のタイムスタンプが最も早い場合に優先処理権を取得し、優先処理権の取得に基づき共有メモリ１６のブートプログラム４４を読み出してブート処理を実行することで起動し、ブート処理を終了した時点でプロセッサテーブル４６から自己のタイムスタンプを削除すると共にステータスをディセーブルとする処理を実行する。【００２８】
このようなサーバ１０における実時間通知部１８、プロセッサ１４−１〜１４−ｎに設けている実時間取得部４０−１〜４０−ｎ及び起動制御部４２−１〜４２−ｎの機能は、別地点に設置されているサーバ１２の実時間通知部２８、プロセッサ２４−１〜２４−ｎに設けている実時間取得部５０−１〜５０−ｎ及び起動制御部５２−１〜５２−ｎについても同じである。【００２９】
サーバ１０及びサーバ１２に設けている実時間通知部１８，２８による実時間情報としてのタイムスタンプは、管理サーバ３４によるリモート操作で設定された起動開始時刻から一定時間に亘る時間窓の時間帯においてのみ有効となる。この実施形態にあっては、管理サーバ３４はリモート操作によりサーバ１０、１２の実時間通知部１８、２８に対し異なる起動時刻ｔ１，ｔ２から例えば１時間に亘る時間枠を設定しているものとする。【００３０】
このようなサーバ１０，１２のそれぞれ対し異なる起動時刻ｔ１，ｔ２を設定していた場合には、管理サーバ３４からのリモート操作によるサーバ１０及びサーバ１２に対するパワーオン指示によりシステムが動作した状態で、実時間通知部１８，２８はそれぞれ設定された起動時刻ｔ１，ｔ２に到達するまで、グローバル時間送信局３２からのグローバル時間の受信に基づくタイムスタンプの値を無効化しており、サーバ１０，１２はシステムとしてはパワーオン状態にあっても、実時間通知部１８からのタイムスタンプの取得に基づくブートプログラム４４の実行によるブート処理が行われないことから起動待ちの状態となっている。【００３１】
そして実時間通知部１８において起動時刻ｔ１への到達が判別されると、起動時刻ｔ１から例えば１時間の間、グローバル時間送信局３２からのグローバル時間の受信に基づくタイムスタンプのカウント動作が有効となり、このときプロセッサ１４−１〜１４−ｎの読出し要求に対し有効に実時間情報としてのタイムスタンプが取得されてプロセッサテーブル４６に登録され、プロセッサテーブル４６において最も早い時間となるタイムスタンプを持ったプロセッサに優先処理権が設定されて、ブートプログラム４４の取得によるブート処理で最初に優先処理権を取得したプロセッサがイニシエータとして起動することになる。【００３２】
サーバ１０において、最初に優先処理権を取得したプロセッサが例えばプロセッサ１４−１であったとすると、プロセッサ１４−１は共有メモリ１６からブートプログラム４４を読み取ってブート処理を実行することで起動した後に、遅い起動時刻ｔ２が設定されているサーバ１２の共有メモリ２６におけるブートプログラムの格納領域を初期化した後に、プロセッサ１４−１で実行したブートプログラム４４のコピーをリモートコピーによりサーバ１２の共有メモリ２６にブートプログラム５４として格納する。【００３３】
このリモートコピーによるサーバ１２のブートプログラム５４の格納によりサーバ１０の起動時刻ｔ１後の起動時刻ｔ２に時間窓を生成して動作するサーバ１２にあっては、先に動作したサーバ１０のイニシエータとしてのプロセッサ１４−１による制御のもとで実質的に起動制御を行うことになる。【００３４】
図２は、図１のサーバ１０側に設けているプロセッサ１４−１、共有メモリ１６及び実時間通知部１８を取り出して、その機能構成を示したブロック図である。図２において、プロセッサ１４−１は、ＣＰＵ６０、ＲＡＭ６２、ＢＩＯＳ（Ｂａｃｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）６４、バスインターフェース６６で構成されており、更に本発明における実時間取得部７０として機能するハードウェア回路としてタイムフェッチ・ライト回路６８を設けている。【００３５】
またＢＩＯＳ６４には、本発明における起動制御部７２としての機能が設けられている。バス２０を介して接続した実時間通知部１８は、実時間受信装置７４、時間窓生成装置７６及びステータスレジスタ７８を備えている。実時間受信装置７４は図１のグローバル時間送信局３２からの信号を受信し、実時間情報をグローバル時間に同期して出力する。【００３６】
時間窓生成装置７６は、図１の管理サーバ３４などのリモート操作により起動時刻ｔ１が設定され、実時間受信部７４で受信したグローバル時間が、設定された起動時刻ｔ１に達すると、一定時間に亘る時間窓を生成し、この時間窓の生成時間に亘りプロセッサ１４−１の実時間取得部７０からのアクセスで取得可能な有効タイムスタンプを生成する。【００３７】
ステータスレジスタ７８には、図１の管理サーバ３４によるシステムのパワーオン指示や起動開始時刻などの情報が保存される。【００３８】
図３は、図２の共有メモリ１６に格納されているプロセッサテーブル４６の説明図である。図３において、プロセッサテーブル４６は、共有メモリ１６におけるボトムアドレスを起点としたアドレスβに管理サーバ３４からのリモート操作で設定された起動時刻となる時間窓開始時刻８０を記憶している。【００３９】
続いてアドレスαからプロセッサ１４−１〜１４−ｎごとに登録タイムスタンプ情報８２−１，８２−２，・・・８２−ｎを記憶している。登録タイムスタンプ情報８２−１〜８２−ｎは、登録スタンプ情報８２−１について右側に取り出して示すように、ステータス８４とタイムスタンプ値８６で構成されている。【００４０】
初期状態においてステータス８４は「ディセーブル」であり、またタイムスタンプ値８６は初期値「９９：９９：９９：９９」が格納されている。そしてサーバ１２における時間窓開始時刻８０から一定時間に亘る時間窓の生成で取得されたタイムスタンプの値がタイムスタンプ値８６に格納され、同時にステータス８４が「イネーブル」に書き換えられる。【００４１】
図４は、図１の２台のサーバによる２つのプロセッサ群に対する時間窓の設定とタイムスタンプの有効カウント処理のタイムチャートである。図４（Ａ）は１日２４時間の時間軸であり、この例では時刻「００：００」に管理サーバ３４からパワーオン８８の指示が行われ、サーバ１０に対し時間窓開始時刻ｔ１が設定され、サーバ１２には時間窓開始時刻ｔ３が設定される。【００４２】
ここでサーバ１０の時間窓開始時刻ｔ１は例えばｔ１＝０９：００であり、サーバ１２の時間窓開始時刻ｔ２はｔ２＝０１：００である。パワーオン８８により動作状態となったサーバ１０，１２にあっては、グローバル時間による現在時刻が時間窓開始時刻ｔ１またはｔ２に到達したか否かチェックしており、時間窓開始時刻ｔ１に達するとタイムスタンプ有効９０とする処理を開始し、一定時間Ｔ１に亘り時間窓９２を生成する。この時間窓９２にあっては、時間窓開始時刻ｔ１において、図４（Ｂ）に示すタイムスタンプを計数するカウンタのタイムスタンプ値Ｘをリセットして０とし、図４（Ｃ）のクロックを用いたカウントにより有効タイムスタンプ９８を生成する。【００４３】
有効タイムスタンプ９８を計数する図４（Ｃ）のクロック周期Ｔ３は、図２に示した例えばプロセッサ１４−１のタイムフェッチ・ライト回路６８が実時間通知部１８にタイムスタンプのリード要求を行って取得した後に、共有メモリ１６のプロセッサテーブル４６にライトする１回のタイムフェッチ・アンド・ライト動作時間であり、いわゆるリードアクセスサイクル換算クロックとしてタイムスタンプの計数を行っている。【００４４】
このリードアクセスサイクル換算クロックとなるクロック周期Ｔ３は、具体的にはバス２０の最短リードアクセス時間以下のクロック周期とする。このようなクロック周期Ｔ３によりタイムスタンプ値の計数を行うことで、同時に複数のプロセッサから実時間通知部１８に対しタイムスタンプのリードアクセスが行われたとしても、必ず１台のプロセッサのみが有効にタイムスタンプを取得してプロセッサテーブル４６に登録することとなり、異なるプロセッサに同じタイムスタンプが登録されてしまうことを防いでいる。【００４５】
時間窓９２による一定時間Ｔ１が過ぎると、カウンタはクリアされ、いわゆるフリーラン状態となる。このためサーバ１０のプロセッサ１４−１〜１４−ｎにあっては、時間窓９２の時間帯Ｔ１においてのみタイムスタンプの取得に基づく優先処理権に基づく起動処理を行うことができる。【００４６】
一方、サーバ１４のプロセッサ２４−１〜２４−ｎについては、時間窓開始時刻ｔ２＝０１：００に達したときに発生する一定時間Ｔ２の時間窓９６の時間帯においてのみ、サーバ１０の時間窓９２の場合と同様、図４（Ｂ）のようにカウンタによるタイムスタンプ値が有効となり、プロセッサ２４−１〜２４−ｎによるタイムスタンプ値の取得に基づき、最も早いタイムスタンプ値を持つプロセッサをイニシエータとして処理優先権を設定し、サーバ１０のイニシエータによるリモートコピーで共有メモリ２６に格納されているブートプログラム５４を読み出して実行することで、起動制御を順次行うことになる。【００４７】
図５は、図４のサーバ１０の時間窓９２において最初に行われる例えばプロセッサ１４−１の実時間取得部４０−１によるタイムスタンプの取得登録処理のタイムチャートである。図５（Ａ）はシステムクロック１０１であり、図５（Ｅ）に示すタイムスタンプを計数するカウンタのクロックであるリードアクセスサイクル換算クロック１００の８分の１の周期を持ったクロックである。【００４８】
図５（Ｂ）はバス２０のアクセスサイクルであり、図２に示したタイムフェッチ・ライト回路６８が時刻ｔ１でアドレス１０２をバス２０に出力し、続いて時刻ｔ１３から時刻ｔ１５のタイミングでＣＰＵ６０のステータスを示すＣＰＵイネーブル１０４をバス２０に読み出し、更に時刻ｔ１５から時刻ｔ１９に亘り実時間取得部７０よりタイムスタンプを読み出すタイムスタンプアクセス１０６が行われる。【００４９】
この図５（Ｂ）のバスアクセスサイクルに対応して、図５（Ｃ）のメモリリードイネーブルが出力される。メモリリードイネーブルは、時刻ｔ１４〜ｔ１５のリードイネーブル１０８によるＣＰＵイネーブル１０４の読出しと、時刻ｔ１６〜ｔ１７のリードイネーブル１１０による実時間通知部１８からのタイムスタンプアクセス１０６の読出しとが、２回連続して行われる。【００５０】
更に図５（Ｄ）は共有メモリ１６のプロセッサテーブル４６に対するメモリライトイネーブルであり、時刻ｔ１８からｔ１９のタイミングでライトイネーブル１１２が出力され、このときバス２０上に出力されているＣＰＵイネーブル１０４及びタイムスタンプアクセス１０６のそれぞれの値が、図３に示したプロセッサテーブル４６における登録タイムスタンプ情報８２−１の中のステータス８４とタイムスタンプ値８６に書き込まれる。【００５１】
この図５（Ａ）〜（Ｄ）のタイムチャートのように、図２に示したプロセッサ１４−１の実時間取得部７０として動作するタイムフェッチ・ライト回路６８にあっては、ハードウエアによりタイムスタンプに対するフェッチ・アンド・ライト動作を連続して実行することになる。【００５２】
タイムスタンプのフェッチ・アンド・ライト動作の実行時間、即ち図５（Ｅ）のリードアクセスサイクル換算クロックは、図４に示したように時間窓９２における図４（Ｂ）のタイムスタンプ値のカウントクロックとして使用しており、この結果、複数のプロセッサ１４−１〜１４−ｎによるタイムスタンプの同時取得が行われたとしても、１回のタイムスタンプのアクセスで必ず特定の１台のプロセッサに対してのみ、そのときのタイムスタンプの値を取得してプロセッサテーブル４６に登録することができる。【００５３】
このためイネーブル状態となった複数のプロセッサがタイムスタンプを取得してプロセッサテーブル４６に登録した状態で、必ずあるプロセッサのタイムスタンプの値が最も早い値を示すこととなり、タイムスタンプの値が最も早いプロセッサに対し処理優先権を設定して、ブートプログラムのロードによるブート処理の実行でプロセッサの起動が実行できる。【００５４】
図６及び図７は、２台のプロセッサ１４−１，１４−２を例に取った起動制御処理を、共有メモリ１６及び実時間通知部１８の処理と共に示したタイムチャートである。図６及び図7において、プロセッサ１４−１，１４−２、共有メモリ１６及び実時間通知部１８は、ステップＳ１，ステップＳ１０１、ステップＳ２０１及びステップＳ３０１のそれぞれに示すように、管理サーバ３４からのリモート操作によりパワーオン指示を受けて、電源投入により例えばそれぞれがパワーオン後のセルフテストなどを経て、ハードウェアコンポーネントが初期化された状態となっている。【００５５】
この状態でサーバ１２が時間窓開始時刻に達すると、タイムスタンプの通知機能が有効状態となり、これを受けてプロセッサ１４−１，１４−２はパワーオンによる起動直後と同様にして、ステップＳ２，Ｓ１０２のそれぞれで実時間通知部１８に対しタイムスタンプを要求する。【００５６】
ここでプロセッサ１４−１のステップＳ２によるタイムスタンプの要求が先に行われたとすると、実時間通知部１８はステップＳ３０２でプロセッサ１４−１に対しそのとき生成しているタイムスタンプの値「００：００：００：００：」を応答し、これを受けてプロセッサ１４−１は、ステップＳ３で共有メモリ１６のプロセッサテーブル４６の自己の割当位置に取得したタイムスタンプの値を登録し、且つステータスを「イネーブル」とする。【００５７】
このステップＳ２，Ｓ３の処理は連続処理として実行される。続いてプロセッサ１４−１にあっては、ステップＳ４でハードウェアコンポーネントの初期化を行った後、ステップＳ５で起動制御部４２−１を起動する。【００５８】
一方、プロセッサ１４−２にあっては、プロセッサ１４−１に時間的に遅れてステップＳ１０２でタイムスタンプ要求を行い、実時間通知部１８からステップＳ３０３でタイムスタンプの値「００：００：０７：００」の応答を受けて、ステップＳ１０３でプロセッサテーブル４６の該当位置にタイムスタンプの値及びステータスを登録し、ステップＳ１０４でハードウェアコンポーネント初期化を終了した後、ステップＳ１０５で起動制御部４２−２の動作を開始する。【００５９】
このようにプロセッサ１４−１が先にタイムスタンプを取得し、その後にプロセッサ１４−２がタイムスタンプを取得している状況にあっては、プロセッサ１４−１がステップＳ６で共有メモリ１６に対し登録タイムスタンプを要求して、ステップＳ２０２で登録タイムスタンプの応答を受けると、そのとき登録されている自分のタイムスタンプと別のプロセッサ１４−２のタイムスタンプをステップＳ７で比較し、これによって自分のタイムスタンプが最新であることが判別され、プロセッサ１４−１が優先処理権を取得する。【００６０】
このため、ステップＳ８でプロセッサ１４−１は共有メモリ１６に対しブートプログラムのロードを要求し、ステップＳ２０４でブートプログラムの読出し応答が行われ、ステップＳ９でプロセッサ１４−１のブート処理が最初に実行される。【００６１】
そしてステップＳ９のブート処理が終了すると、ステップＳ１０で共有メモリ１６に対し登録タイムスタンプのクリアとステータスのディセーブルへの書き換えを指示する。一方、プロセッサ１４−２にあっては、ステップＳ１０６で共有メモリ１６に対しタイムスタンプを要求して、ステップＳ２０３から登録タイムスタンプの応答を受けた場合、ステップＳ１０７におけるタイムスタンプの比較で自分のタイムスタンプに対しプロセッサ１４−１のタイムスタンプの方が早いため、優先処理権を取得することができず、一定サイクルで登録タイムスタンプの要求と比較判別を繰り返すことになる。【００６２】
そしてステップＳ１０８で、プロセッサ１０４が自己のタイムスタンプのクリアを行った後のタイムスタンプ要求に対しステップＳ２０５の登録タイムスタンプの応答を受け、ステップＳ１０８でタイムスタンプを比較すると、自分のタイムスタンプが最新であることからプロセッサ１４−２が優先処理権を取得し、ステップＳ１１０で共有メモリ１６にブートプログラム要求を行い、ステップＳ２０６のブートプログラムの読出し応答、及びステップＳ１１１でブート処理を実行する。【００６３】
そしてステップＳ１２で、ブート処理の終了に伴い、共有メモリ１６に対し自己の登録タイムスタンプのクリアとステータスのディセーブルへの書き換えを要求する。このようにしてプロセッサ１４−１と１４−２は、それぞれが実時間通知部１８から取得したタイムスタンプの順番に従ってブート処理を実行して順次起動するようになる。【００６４】
ここでプロセッサ１４−１のステップＳ９におけるブート処理は、共有メモリ１６の最初の物理セクタをマスタブートセクタとして読み取り、このマスタブートセクタのイメージをＲＡＭ６２にロードする。その後、ＢＩＯＳ６４はＲＡＭ６２のマスタブートセクタのイメージに処理を渡す。ＲＡＭ６２に展開したマスタブートセクタレコードには、共有メモリ１６におけるブートプログラム４４のアドレス位置を示すテーブルと実行可能コードが含まれ、この実行可能コードは共有メモリ１６を調べてブートプログラム４４の格納位置を識別する。【００６５】
これによりマスタブートレコードはブートプログラム４４の開始位置を見つけ、その最初のセクタのイメージ即ちブートセクタをＲＡＭ６２にロードする。その後、ＲＡＭ６２のマスタブートレコードはブートプログラム４４の先頭位置のブートセクタイメージに処理を渡し、プロセッサ１４−１で実行するＯＳをＲＡＭ６２に展開し、更にアプリケーションプログラムを展開して起動処理を終了する。【００６６】
図８は、本発明のプロセッサに設けている実時間通知部による処理動作を示したフローチャートである。図８において、ステップＳ１で管理サーバ３４の指示に基づき時間窓開始時刻を設定し、ステップＳ２でグローバル時間の受信に基づき時間窓開始時刻に到達したか否かチェックしている。【００６７】
ステップＳ２で時間窓開始時刻への到達が判別されると、ステップＳ３でタイムスタンプを計数するカウンタをリセットしてカウントを開始し、これによって時間窓の生成時間に亘りタイムスタンプの値が有効に生成される。続いてステップＳ４でタイムスタンプ取得要求があれば、ステップＳ５でタイムスタンプ値を応答する。【００６８】
ステップＳ６で時間窓開始時刻から予め定めた一定時間を経過すると、ステップＳ７に進み、タイムスタンプのカウンタをリセットしてフリーラン状態とし、タイムスタンプを無効化する。【００６９】
図９は、本発明のプロセッサに設けている起動制御部による起動制御処理のフローチャートである。図９において、時間窓開始時刻の到達に伴う起動制御部の動作直後に、ステップＳ１で実時間通知部にアクセスして、そのときのタイムスタンプを取得し、ステップＳ２で共有メモリ１６のプロセッサテーブル４６の自領域にタイムスタンプを取得し、ステータスをイネーブルにセットする。【００７０】
続いてステップＳ３で、共有メモリ１６のプロセッサテーブル４６を参照して他のプロセッサの登録タイムスタンプ及びステータスを取得する。続いてステップＳ４で、比較するために取得した他のプロセッサのステータスはディセーブルか否かチェックする。【００７１】
ディセーブルでなければ即ちイネーブルであれば、タイムスタンプは有効に登録されていることから、ステップＳ５に進み、自分のプロセッサと他のプロセッサのタイムスタンプを比較し、自プロセッサのタイムスタンプが最も早いか否かチェックする。自プロセッサのタイムスタンプが最も早ければ、ステップＳ６に進み、未取得のプロセッサがあれば再びステップＳ３に戻って、同様に他のプロセッサのタイムスタンプを取得して比較する。【００７２】
なおステップＳ４で比較するプロセッサのステータスがディセーブルであった場合には、タイムスタンプの登録は有効に行われていないことから、ステップＳ５のタイムスタンプの比較をスキップする。【００７３】
ステップＳ６で未取得のプロセッサがなくなれば、ステップＳ７に進み、自プロセッサが優先処理権を取得したものとし、ステップＳ８で共有メモリからブートプログラムを読み込んでブート処理を実行する。続いてステップＳ９で図１のサーバ１０から見てリモートのサーバ１２が存在するか否かチェックする。【００７４】
リモートサーバが存在すればステップＳ１０に進み、リモートサーバの共有メモリを初期化して自己のブートプログラムをコピーする。例えばサーバ１０の場合には、サーバ１２の共有メモリ２６のブートプログラム格納領域を初期化した後に、例えば最初に処理優先権を取得してブート処理を実行した例えばプロセッサ１４−１のＲＡＭにロードしているブートプログラムを共有メモリ２６にリモートコピーする。【００７５】
ステップＳ９でリモートサーバがなければ、ステップＳ１０はスキップする。最終的にステップＳ１１でプロセッサテーブル４６の自領域のタイムスタンプを初期化した後、ステータスをディセーブル状態にリセットする。【００７６】
なお上記の実施形態は、図１のように２地点に分けて複数のプロセッサを有する２台のサーバを設けた場合を例に取るものであったが、サーバ１０のみのシステム構成でもよく、更に２台以上の３台、４台というサーバを他地点に設けた場合についてもそのまま適用できる。【００７７】
また上記の実施形態にあっては、プロセッサが実時間通知部から取得したタイムスタンプ及び自己のステータスを登録するプロセッサテーブル４６を共有メモリに設けているが、プロセッサテーブルを設ける位置は共有メモリに限定されず、レジスタ、テーブルなど適宜の共有記憶領域を利用することができる。【００７８】
また上記の実施形態にあっては、実時間取得部として機能するハードウエアとしてタイムフェッチ・ライト回路６８をプロセッサに設けた場合を例に取るものであるが、実時間のタイムフェッチ・アンド・ライト命令を実行するプログラムによるソフトウェア処理であってもよいことはもちろんである。【００７９】
また本発明は、その目的と利点を損なうことのない適宜の変形を含み、更に上記の実施形態に示した数値による限定は受けない。
【図１】
2006001051.tif 000002
【図２】
2006001051.tif 000003
【図３】
2006001051.tif 000004
【図４】
2006001051.tif 000005
【図５】
2006001051.tif 000006
【図６】
2006001051.tif 000007
【図７】
2006001051.tif 000008
【図８】
2006001051.tif 000009
【図９】
2006001051.tif 000010
【国際調査報告】
2006001051.tif 000011
2006001051.tif 000012
2006001051.tif 000013
2006001051.tif 000014