(57)【要約】【課題】マルチ・プロセッサ・コンピュータをフォールト・トレラントに適用した場合に、障害発生の切り替え時に正常な処理を行う。【解決手段】タイミング制御部は、複数のプロセッサのうち１つのプロセッサに共有リソースを使用するためのアクセス権を付与している間にプロセッサ以外の複数のプロセッサからアクセス権の付与が要求された場合、アクセス権の解放後、アクセス権の付与を要求した複数のプロセッサにその付与を要求してきた順序でアクセス権を順次付与する。同期制御部は、一定の監視タイミングにて、複数のプロセッサが搭載された他の情報処理装置と当該情報処理装置との同期を制御する。タイミング制御部によるアクセス権の解放は、監視タイミングにて行われる。【選択図】図１
2011090553.tif 000002
【特許請求の範囲】
【請求項１】
共有リソースを用いて動作する複数のプロセッサが搭載された情報処理装置であって、
前記複数のプロセッサのうち１つのプロセッサに前記共有リソースを使用するためのアクセス権を付与している間に該プロセッサ以外の複数のプロセッサから該共有リソースに対するアクセス権の付与が要求された場合、該アクセス権を解放した後、該アクセス権の付与を要求した複数のプロセッサに該アクセス権の付与を要求してきた順序で該アクセス権を順次付与するタイミング制御部と、
一定の監視タイミングにて、前記命令をそれぞれ実行する複数のプロセッサが搭載された他の情報処理装置と当該情報処理装置との同期を制御する同期制御部とを有し、
前記タイミング制御部は、前記アクセス権の解放を前記監視タイミングにて行う情報処理装置。
【請求項２】
請求項１に記載の情報処理装置において、
前記タイミング制御部は、前記共有リソースに対するアクセス権が前記複数のプロセッサのいずれにも付与されていない状態で、前記複数のプロセッサのうち１つのプロセッサから前記アクセス権の付与が要求された場合、該プロセッサに該アクセス権を付与することを特徴とする情報処理装置。
【請求項３】
請求項１または２に記載の情報処理装置において、
前記同期制御部は、前記命令の実行が終了したタイミングにおける該命令の実行結果と該タイミングにおける前記他の情報処理装置による実行結果との比較結果に基づいて、当該情報処理装置と該他の情報処理装置との同期を制御することを特徴とする情報処理装置。
【請求項４】
共有リソースを用いて動作する複数のプロセッサが搭載された情報処理装置における同期制御方法であって、
前記複数のプロセッサのうち１つのプロセッサに前記共有リソースを使用するためのアクセス権を付与している間に該プロセッサ以外の複数のプロセッサから該共有リソースに対するアクセス権の付与が要求された場合、該アクセス権を解放した後、該アクセス権の付与を要求した複数のプロセッサに該アクセス権の付与を要求してきた順序で該アクセス権を順次付与するタイミング制御処理と、
一定の監視タイミングにて、前記命令をそれぞれ実行する複数のプロセッサが搭載された他の情報処理装置と当該情報処理装置との同期を制御する同期制御処理とを有し、
前記タイミング制御処理では、前記アクセス権の解放を前記監視タイミングにて行う同期制御方法。
【請求項５】
請求項４に記載の同期制御方法において、
前記タイミング制御処理では、前記共有リソースに対するアクセス権が前記複数のプロセッサのいずれにも付与されていない状態で、前記複数のプロセッサのうち１つのプロセッサから前記アクセス権の付与が要求された場合、該プロセッサに該アクセス権を付与することを特徴とする同期制御方法。
【請求項６】
請求項４または５に記載の同期制御方法において、
前記同期制御処理では、前記命令の実行が終了したタイミングにおける該命令の実行結果と該タイミングにおける前記他の情報処理装置による実行結果との比較結果に基づいて、当該情報処理装置と該他の情報処理装置との同期を制御することを特徴とする同期制御方法。
【請求項７】
共有リソースを用いて動作する複数のプロセッサが搭載された情報処理装置に、
前記複数のプロセッサのうち１つのプロセッサに前記共有リソースを使用するためのアクセス権を付与している間に該プロセッサ以外の複数のプロセッサから該共有リソースに対するアクセス権の付与が要求された場合、該アクセス権を解放した後、該アクセス権の付与を要求した複数のプロセッサに該アクセス権の付与を要求してきた順序で該アクセス権を順次付与するタイミング制御手順と、
一定の監視タイミングにて、前記命令をそれぞれ実行する複数のプロセッサが搭載された他の情報処理装置と当該情報処理装置との同期を制御する同期制御手順とを実行させ、
前記タイミング制御手順では、前記アクセス権の解放を前記監視タイミングにて行うプログラム。
【請求項８】
請求項７に記載のプログラムにおいて、
前記タイミング制御手順では、前記共有リソースに対するアクセス権が前記複数のプロセッサのいずれにも付与されていない状態で、前記複数のプロセッサのうち１つのプロセッサから前記アクセス権の付与が要求された場合、該プロセッサに該アクセス権を付与することを特徴とするプログラム。
【請求項９】
請求項７または８に記載のプログラムにおいて、
前記同期制御手順では、前記命令の実行が終了したタイミングにおける該命令の実行結果と該タイミングにおける前記他の情報処理装置による実行結果との比較に基づいて、当該情報処理装置と該他の情報処理装置との同期を制御することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、同期制御方法およびプログラムに関する。
【背景技術】
【０００２】
近年、複数のプロセッサが搭載され、各プロセッサが命令を実行するためのリソースを互いに共有するマルチ・プロセッサ・コンピュータが普及してきている。
【０００３】
また、複数台のコンピュータに同じ命令をそれぞれ実行させることで、これらのコンピュータの一部に障害が発生した場合でも残りのコンピュータにより命令を継続して実行するフォールト・トレラント・コンピュータ・システムという技術が存在する。フォールト・トレラント・コンピュータ・システムでは、複数のコンピュータで互いに同じタイミングで処理を行うために、特殊な回路などを用いて各コンピュータへ互いに同期をとるための同期信号を入力させることにより、各コンピュータ間において処理の同期がとられている。
【０００４】
近年では、ハードウェアにて同期信号を入力する代わりに、ハイパーバイザなどを用いて複数台のコンピュータに同じ命令を実行させることで、フォールト・トレラント・コンピュータ・システムを実現する技術が登場してきた（例えば、特許文献１、非特許文献１，２参照。）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−０８０６９５号公報
【非特許文献】
【０００６】
【非特許文献１】VMWare、""Protecting Mission-Critical Workloads with VMware Fault Tolerance″、［online］、Revision: 20090507 Item: WP-084-PRD-01-02、平成 21年 5月 7日、［平成 21年 9月 28日検索］、インターネット〈URL：http://www.vmware.com/files/pdf/resources/ft_virtualization_wp.pdf〉
【非特許文献２】Marathon、"Bringing XenServer to Mission Critical Systems"、［online］、平成 20年11月、［平成 21年 9月 28日検索］、インターネット〈URL：http://www.xen.org/files/xensummit_tokyo/12_SatoshiWatanabe-ja.pdf〉
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、マルチ・プロセッサ・コンピュータにおいては、各コンピュータを構成するマルチ・プロセッサが、お互いに同期することなく命令を実行する。
【０００８】
よって、複数のマルチ・プロセッサ・コンピュータに同じ処理を実行させた場合、それぞれのプロセッサが共有リソースへアクセスする順番がお互いに異なるおそれがある。その場合、ある時点で行っている処理が、マルチ・プロセッサ・コンピュータごとに互いに異なってしまう。
【０００９】
それにより、マルチ・プロセッサ・コンピュータは、フォールト・トレラント・コンピュータ・システムなどの冗長構成にそのまま適用しても互いのコンピュータ間で処理の同期をとれないおそれがある。また、それに伴って、障害発生の切り替え時に正常に処理を継続できないおそれがある。
【００１０】
本発明は、上述した課題を解決する情報処理装置、同期制御方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、本発明の情報処理装置は、共有リソースを用いて動作する複数のプロセッサが搭載された情報処理装置であって、前記複数のプロセッサのうち１つのプロセッサに前記共有リソースを使用するためのアクセス権を付与している間に該プロセッサ以外の複数のプロセッサから該共有リソースに対するアクセス権の付与が要求された場合、該アクセス権を解放した後、該アクセス権の付与を要求した複数のプロセッサに該アクセス権の付与を要求してきた順序で該アクセス権を順次付与するタイミング制御部と、一定の監視タイミングにて、前記命令をそれぞれ実行する複数のプロセッサが搭載された他の情報処理装置と当該情報処理装置との同期を制御する同期制御部とを有し、前記タイミング制御部は、前記アクセス権の解放を前記監視タイミングにて行う。
【００１２】
また、上記課題を解決するために、本発明の同期制御方法は、共有リソースを用いて動作する複数のプロセッサが搭載された情報処理装置における同期制御方法であって、前記複数のプロセッサのうち１つのプロセッサに前記共有リソースを使用するためのアクセス権を付与している間に該プロセッサ以外の複数のプロセッサから該共有リソースに対するアクセス権の付与が要求された場合、該アクセス権を解放した後、該アクセス権の付与を要求した複数のプロセッサに該アクセス権の付与を要求してきた順序で該アクセス権を順次付与するタイミング制御処理と、一定の監視タイミングにて、前記命令をそれぞれ実行する複数のプロセッサが搭載された他の情報処理装置と当該情報処理装置との同期を制御する同期制御処理とを有し、前記タイミング制御処理では、前記アクセス権の解放を前記監視タイミングにて行う。
【００１３】
また、コンピュータに実行させるプログラムであって、共有リソースを用いて動作する複数のプロセッサが搭載された情報処理装置に、前記複数のプロセッサのうち１つのプロセッサに前記共有リソースを使用するためのアクセス権を付与している間に該プロセッサ以外の複数のプロセッサから該共有リソースに対するアクセス権の付与が要求された場合、該アクセス権を解放した後、該アクセス権の付与を要求した複数のプロセッサに該アクセス権の付与を要求してきた順序で該アクセス権を順次付与するタイミング制御手順と、一定の監視タイミングにて、前記命令をそれぞれ実行する複数のプロセッサが搭載された他の情報処理装置と当該情報処理装置との同期を制御する同期制御手順とを実行させ、前記タイミング制御手順では、前記アクセス権の解放を前記監視タイミングにて行う。
【発明の効果】
【００１４】
本発明によれば、マルチ・プロセッサ・コンピュータをフォールト・トレラント・コンピュータ・システムに適用した場合でも、障害発生の切り替え時に正常な処理を継続できる。
【図面の簡単な説明】
【００１５】
【図１】本発明のフォールト・トレラント・コンピュータ・システムの実施形態を示す図である。
【図２】ソフトウェアが起動された場合のタイミング制御部における処理を示すフローチャートである。
【図３】スレッドがリソースへのアクセス権の付与を要求した場合のタイミング制御部における処理を示すフローチャートである。
【図４】複数の情報処理装置の間で同期をとる処理におけるシーケンスを示す図である。
【図５】本発明のフォールト・トレラント・コンピュータ・システムの実施形態の変形例を示す図である。
【発明を実施するための形態】
【００１６】
以下、本発明のフォールト・トレラント・コンピュータ・システム（情報処理装置、同期制御方法およびプログラムを含む）の実施形態を説明する。
【００１７】
まず、本実施形態のフォールト・トレラント・コンピュータ・システムの構成について、図１を参照して説明する。
【００１８】
図１に示すように、本実施形態のフォールト・トレラント・コンピュータ・システムは、情報処理装置１００−１と、情報処理装置１００−２とから構成され、情報処理装置１００−１と情報処理装置１００−２とがインターコネクト１４を介して接続されている。
【００１９】
情報処理装置１００−１、１００−２それぞれは、「共有リソース」を用いて動作する複数のプロセッサが搭載されたマルチ・プロセッサ・コンピュータである。
【００２０】
つぎに、情報処理装置１００−１、１００−２の構成について説明する。なお、情報処理装置１００−１の構成と情報処理装置１００−２の構成とは同じであるため、以下では、情報処理装置１００−１の構成を例に挙げて説明する。
【００２１】
情報処理装置１００−１には、ソフトウェア１−１と、ハイパーバイザ６−１と、プロセッサ群９−１とが設けられている。
【００２２】
ソフトウェア１−１の例としては、任意のＯＳ（オペレーティング・システム）、任意のアプリケーション・ソフトウェアなどが挙げられる。
【００２３】
ソフトウェア１−１は、ハイパーバイザ６−１から提供された共有リソースを用いて、所定の情報を処理するための任意の命令列を実行する。
【００２４】
以下では、ソフトウェア１−１が共有リソースを用いて実行する複数の命令列それぞれを「スレッド」と呼ぶ。本実施形態では、ソフトウェア１−１が実行する命令列は、４つのスレッド２−１、３−１、４−１、５−１で構成されている場合を例に挙げて説明する。
【００２５】
プロセッサ群９−１は、複数のプロセッサから構成される。本実施形態では、プロセッサ群９−１は、４個のプロセッサ１０−１、１１−１、１２−１、１３−１から構成されている。ソフトウェア１−１およびハイパーバイザ６−１は、これらのプロセッサ１０−１、１１−１、１２−１、１３−１を用いて動作する。
【００２６】
ハイパーバイザ６−１は、プロセッサ１０−１、１１−１、１２−１、１３−１、メモリ（図示せず）、Ｉ／Ｏ（Input/Output）ポート（図示せず）などの物理的なハードウェアを、仮想的な「共有リソース」としてソフトウェア１−１へ提供する。「共有リソース」は一定の粒度（単位）でアクセス制御を行う。例えば、メモリはページフレーム単位でアクセス制御を行い、Ｉ／Ｏポートはポート単位でアクセス制御を行う。
【００２７】
なお、ハイパーバイザ６−１はソフトウェア１−１に対して透過である。つまり、ソフトウェア１−１からは、仮想的な共有リソースを構成する物理的なハードウェアに直接アクセスしているように見える。
【００２８】
また、ハイパーバイザ６−１には、タイミング制御部７−１と、同期制御部８−１とが設けられている。
【００２９】
タイミング制御部７−１は、ソフトウェア１−１が起動した際、共有リソースに対するアクセス権をスレッド２−１、３−１、４−１、５−１のいずれに対しても付与されていない状態に設定する。
【００３０】
スレッド２−１、３−１、４−１、５−１のいずれかによって、アクセス権が付与されていない共有リソース又は、他のスレッドにアクセス権が付与されている共有リソースにアクセスを試みられた場合、スレッドが一時停止され、タイミング制御部７−１に制御が移る。このとき、スレッドがアクセス権の付与を要求したと見なす。以下に述べる処理によってスレッドが「待機状態」にならず「稼動状態」のままならば、処理が完了した後、スレッドの実行が再開される。
【００３１】
その後、タイミング制御部７−１は、共有リソースに対するアクセス権の付与がスレッド２−１、３−１、４−１、５−１のいずれかより要求されたかどうかを判定する。
【００３２】
アクセス権の付与がスレッド２−１、３−１、４−１、５−１のいずれかより要求されたと判定した場合、タイミング制御部７−１は、そのアクセス権が、付与を要求してきたスレッドと異なる他のスレッドに付与されているかどうかを判定する。
【００３３】
要求されたアクセス権が他のスレッドに付与されていないと判定した場合、タイミング制御部７−１は、付与を要求してきたスレッドにそのアクセス権を付与する。
【００３４】
また、タイミング制御部７−１は、アクセス権を付与したスレッドを「稼動状態」に設定し、起動させる。すると、アクセス権が付与されたスレッドは、当該アクセス権によりアクセスが許可されたリソースを用いて命令を実行する。
【００３５】
ここで、「稼動状態」とは、アクセス権が付与されたスレッドが、当該アクセス権によりアクセスが許可された共有リソースを用いて命令を実行している状態を指す。
【００３６】
また、要求されたアクセス権が他のスレッドに付与されていると判定した場合、タイミング制御部７−１は、アクセス権の付与を要求してきたスレッドを「待機状態」に設定する。
【００３７】
ここで、「待機状態」とは、アクセス権の付与を要求してから、そのアクセス権が付与されるまでの間のスレッドの状態を指し、「稼動状態」と排他的なものである。
【００３８】
なお、タイミング制御部７−１は、スレッド２−１、３−１、４−１、５−１のうちのあるスレッド（例えば、スレッド２−１）が命令を実行している間に、それ以外の複数のスレッド（例えば、スレッド３−１、４−１）からアクセス権の付与が要求された場合、付与を要求してきたスレッドすべて（スレッド３−１、４−１）を待機状態に設定する。
【００３９】
また、タイミング制御部７−１は、スレッド２−１、３−１、４−１、５−１のいずれかを待機状態に設定した場合、要求されたアクセス権が付与されているスレッドが「監視タイミング」まで実行されたかを判定する。なお、「監視タイミング」は、スレッドの命令境界の中から、後述する同期制御部８−１が、一定の規則に従って定める。
【００４０】
スレッドが「監視タイミング」まで実行されていないと判定した場合、アクセス権の付与が当該スレッドから要求された際、タイミング制御部７−１は、そのアクセス権を当該スレッドに付与したままにする。
【００４１】
また、スレッドが監視タイミングまで実行されたと判定した場合は、タイミング制御部７−１は、命令を実行したスレッドに付与されているアクセス権を、待機状態にあるスレッドに当該アクセス権の付与を要求してきた順序で順次付与する。
【００４２】
具体的には、タイミング制御部７−１は、スレッド３−１、４−１が待機状態にあり、かつスレッド４−１がスレッド３−１よりも先にアクセス権の付与を要求してきた場合、当該アクセス権を、スレッド４−１に付与した後に、スレッド３−１に付与する。
【００４３】
同期制御部８−１は、情報処理装置１００−１と情報処理装置１００−２との同期をロックステッピング方式で制御するロックステッピング機構でもよく、これらの同期をリプレイ方式で制御するリプレイ機構でもよい。
【００４４】
同期制御部８−１は、ロックステッピング機構である場合、スレッド２−１、３−１、４−１、５−１がそれぞれ実行する命令列を、任意の個数の命令が個々に含まれた「命令量子」と呼ばれる単位で分割する。
【００４５】
そして、同期制御部８−１は、ある命令量子とその命令量子に続いて実行される命令量子との境界（以下、「監視タイミング」と称する）で、スレッド２−１、３−１、４−１、５−１それぞれによる命令の実行結果を取得する。
【００４６】
同期制御部８−１は、ソフトウェア１−２の実行結果を情報処理装置１００−２から取得する。そして、同期制御部８−１は、ソフトウェア１−１の実行結果と、ソフトウェア１−２の実行結果とを比較する。
【００４７】
同期制御部８−１は、比較の結果、これらの実行結果が同じである場合、情報処理装置１００−１と情報処理装置１００−２とが同期していると判定する。
【００４８】
また、同期制御部８−１は、これらの実行結果が異なっている場合、監視タイミングにおけるスレッド２−１、３−１、４−１、５−１それぞれによる命令の実行結果にエラーが存在するかどうかを判定する。そして、同期制御部８−１は、エラーが存在すると判定した場合、情報処理装置１００−２のメモリ（図示せず）に記憶されている情報すべてを取得して情報処理装置１００−１のメモリ（図示せず）にコピーするなどの一般的な再同期制御を行う。
【００４９】
また、同期制御部８−１は、監視タイミングをタイミング制御部７−１に通知する。
【００５０】
また、同期制御部８−１は、リプレイ機構である場合、一般的なバイナリ・トランスレーション技術を用いて、一定の規則に従って設けられた監視タイミングで、スレッド２−１、３−１、４−１、５−１それぞれが実行する命令を監視する。
【００５１】
また、同期制御部８−１は、監視タイミングごとに、ソフトウェア１−１へ任意の情報を入力する。また、同期制御部８−１は、監視タイミングごとに、ソフトウェア１−１へ入力した情報を、情報処理装置１００−２が具備する同期制御部８−２へ送信する。すると、同期制御部８−２は、情報処理装置１００−１から送信されてきた情報をソフトウェア１−２へ入力する。
【００５２】
また、同期制御部８−１は、ロックステッピング機構である場合と同様に、監視タイミングをタイミング制御部７−１に通知する。
【００５３】
つぎに、上記構成を有する情報処理装置１００−１、１００−２それぞれに設けられたタイミング制御部７−１、７−２における処理について説明する。なお、タイミング制御部７−１における処理とタイミング制御部７−２における処理とは同じであるため、以下では、タイミング制御部７−１における処理を例に挙げて説明する。
【００５４】
まず、情報処理装置１００−１において、ソフトウェア１−１が起動した際のタイミング制御部７−１における処理について、図２を参照して説明する。
【００５５】
このとき、図２に示すステップ３０１にて、タイミング制御部７−１は、ソフトウェア１−１を起動させると、共有リソースに対するアクセス権を、スレッド２−１、３−１、４−１、５−１のいずれに対しても付与されていない状態に設定する。
【００５６】
つぎに、スレッド２−１、３−１、４−１、５−１のいずれかが共有リソースへのアクセス権の付与を要求した場合のタイミング制御部７−１における処理について、図３を参照して説明する。
【００５７】
まず、図３に示すステップ４０１にて、タイミング制御部７−１は、共有リソースに対するアクセス権の付与がスレッド２−１、３−１、４−１、５−１のいずれかより要求されたかどうかを判定している。
【００５８】
アクセス権の付与が要求されたと判定した場合、ステップ４０２にて、タイミング制御部７−１は、そのアクセス権が、付与を要求してきたスレッドと異なる他のスレッドに付与されているかどうかを判定する。
【００５９】
他のスレッドに付与されていないと判定した場合、ステップ４０３にて、タイミング制御部７−１は、アクセス権の付与を要求してきたスレッドに当該アクセス権を付与する。
【００６０】
続いて、ステップ４０４にて、タイミング制御部７−１は、アクセス権を付与したスレッドを稼動状態に設定し、起動させる。
【００６１】
すると、ステップ４０５にて、アクセス権が付与されたスレッドは、そのアクセス権によりアクセスが許可された共有リソースを用いて命令を実行する。
【００６２】
また、要求されたアクセス権が他のスレッドに付与されていると判定した場合、ステップ４０６にて、タイミング制御部７−１は、アクセス権の付与を要求してきたスレッドを待機状態に設定する。
【００６３】
なお、タイミング制御部７−１は、スレッド２−１、３−１、４−１、５−１のうちのあるスレッドが命令を実行している間に、それ以外の複数のスレッドからアクセス権の付与が要求された場合、付与を要求してきたスレッドすべてを待機状態に設定する。
【００６４】
続いて、ステップ４０７にて、タイミング制御部７−１は、要求されたアクセス権が付与されているスレッドが監視タイミングまで実行されたかを判定する。アクセス権の付与が命令を実行しているスレッドから要求された際、当該スレッドが監視タイミングまで実行されていないと判定した場合、タイミング制御部７−１は、そのアクセス権をそのスレッドに付与したままにする。
【００６５】
また、スレッドが監視タイミングまで実行されたと判定した場合、ステップ４０８にて、タイミング制御部７−１は、その命令の実行が終了した監視タイミングで、命令を実行したスレッドに付与されているアクセス権を、待機状態にあるスレッドに当該アクセス権の付与を要求してきた順序で順次付与する。
【００６６】
続いて、ステップ４０９にて、タイミング制御部７−１は、アクセス権を付与したスレッドを稼動状態に設定して起動させる。
【００６７】
すると、ステップ４１０にて、アクセス権が付与されたスレッドは、当該アクセス権によりアクセスが許可された共有リソースを用いて命令を実行する。
【００６８】
タイミング制御部７−１は、スレッド２−１、３−１、４−１、５−１それぞれによるすべての命令列の実行が完了するまで、上述したステップ４０１〜ステップ４１０の処理を繰り返し実行する。
【００６９】
なお、情報処理装置１００−２内のタイミング制御部７−２においても、上述したタイミング制御部７−１と同様の処理が行われる。
【００７０】
つぎに、情報処理装置１００−１における命令実行タイミングと情報処理装置１００−２における命令実行タイミングとの制御により、本発明のフォールト・トレラント・コンピュータ・システムが情報処理装置１００−１と情報処理装置１００−２とを同期させる処理の一例を、図４を参照して説明する。
【００７１】
図４は、情報処理装置１００−１内の共有リソースに対するアクセス権がスレッド２−１、３−１に付与される様子と、情報処理装置１００−２内の共有リソースに対するアクセス権がスレッド２−２、３−２に付与される様子とを表すシーケンス図である。なお、この説明例では、ソフトウェア１−１とソフトウェア１−２とが同じタイミングで起動した場合を例に挙げて説明する。
【００７２】
情報処理装置１００−１においてソフトウェア１−１が起動した際、タイミング制御部７−１は、共有リソースに対するアクセス権をスレッド２−１、３−１、４−１、５−１のいずれに対しても付与されていない状態に設定する。そのため、図４に示す監視タイミング５０１が経過する前において、スレッド２−１、３−１、４−１、５−１のうち共通リソースに対するアクセス権を付与されたスレッドは存在しない。また、スレッド２−１、３−１、４−１、５−１を稼動状態とする。
【００７３】
監視タイミング５０１の経過後、情報処理装置１００−１が具備するタイミング制御部７−１は、スレッド２−１が共有リソースに対するアクセス権の付与を要求してきた場合、スレッド２−１にアクセス権を付与する。
【００７４】
続いて、タイミング制御部７−１は、アクセス権を付与したスレッド２−１を稼動状態に設定して起動させる。すると、アクセス権が付与されたスレッド２−１は、当該アクセス権によりアクセスが許可された共有リソースを用いて命令の実行を開始する。
【００７５】
その後、情報処理装置１００−１上でスレッド２−１が命令を実行している間に、スレッド２−１に付与されているアクセス権の付与がスレッド３−１から要求された場合、タイミング制御部７−１は、スレッド３−１を待機状態に設定する。
【００７６】
なお、タイミング制御部７−１は、スレッド２−１が命令を実行している間にアクセス権の付与がスレッド２−１から要求された場合、そのアクセス権をスレッド２−１に付与したままにする。
【００７７】
その後、同期制御部８−１は、スレッド２−１が監視タイミング５０２まで実行されたことを検知した場合、その旨をタイミング制御部７−１へ通知する。また、タイミング制御部７−１は、スレッド２−１が監視タイミング５０２まで実行されたと判定し、命令の実行を終了したスレッド２−１を稼動状態のままにする。スレッド２−１は、次にアクセス権の付与要求を行うまで、実行される。
【００７８】
さらに、タイミング制御部７−１は、スレッド２−１に付与されていたアクセス権を、待機状態にあるスレッド３−１へ付与する。なお、タイミング制御部７−１は、待機状態のスレッドが複数存在する場合、これらのスレッドに、アクセス権を、当該アクセス権の付与を要求してきた順序で順次付与する。
【００７９】
続いて、タイミング制御部７−１は、アクセス権を付与したスレッド３−１を稼動状態に設定して起動させる。すると、アクセス権が付与されたスレッド３−１は、当該アクセス権によりアクセスが許可された共有リソースを用いて命令を実行する。
【００８０】
また、スレッド３−１が命令を実行している間に、スレッド３−１に付与されているアクセス権の付与がスレッド２−１から要求された場合、タイミング制御部７−１は、スレッド２−１を待機状態に設定する。
【００８１】
その後、同期制御部８−１は、スレッド３−１が監視タイミング５０３まで実行されたことを検知した際、その旨をタイミング制御部７−１へ通知する。タイミング制御部７−１は、スレッド３−１が監視タイミング５０３まで実行されたと判定する。
【００８２】
さらに、タイミング制御部７−１は、監視タイミング５０３にて、スレッド３−１に付与されていたアクセス権を待機状態にあるスレッド２−１へ付与する。続いて、タイミング制御部７−１は、アクセス権を付与したスレッド２−１を稼動状態に設定して起動させる。すると、スレッド２−１は、共有リソースを用いて命令を実行する。
【００８３】
なお、タイミング制御部７−１は、監視タイミング５０４にて、スレッド２−１が監視タイミング５０４まで実行されたと判定した場合、スレッド２−１を稼動状態のままにする。
【００８４】
また、情報処理装置１００−２のタイミング制御部７−２は、情報処理装置１００−１のタイミング制御部７−１がスレッド２−１、３−１に対して行った制御と同様の制御を、スレッド２−２、３−２に対して行う。
【００８５】
なお、情報処理装置１００−１が具備する同期制御部８−１は、一定の監視タイミングごとに、命令のトラップやバイナリ・トランスレーションによって、スレッド２−１、３−１、４−１、５−１による命令の実行結果を監視する。また、同期制御部８−１は、スレッド２−１、３−１、４−１、５−１が監視タイミングまで実行されたことをタイミング制御部７−１へ通知する。
【００８６】
また、情報処理装置１００−２が具備する同期制御部８−２は、一定の監視タイミングごとに、命令のトラップやバイナリ・トランスレーションによって、スレッド２−２、３−２、４−２、５−２による命令の実行結果を監視する。また、同期制御部８−２は、スレッド２−２、３−２、４−２、５−２が監視タイミングまで実行されたことをタイミング制御部７−２へ通知する。
【００８７】
そして、同期制御部８−１、８−２は、ロックステッピング方式やリプレイ方式に従って協働することにより、情報処理装置１００−１と情報処理装置１００−２との同期を制御する。
【００８８】
なお、「協働」とは、ロックステッピング方式において、情報処理装置１００−１と情報処理装置１００−２との少なくとも一方が、監視タイミングにおける当該情報処理装置による命令の実行結果と、当該監視タイミングにて残りの一方から取得した命令の実行結果との比較に基づいて、同期を制御することを指す。
【００８９】
また、「協働」とは、リプレイ方式において、監視タイミングごとに、情報処理装置１００−１がソフトウェア１−１に入力した情報を情報処理装置１００−２へ送信し、情報処理装置１００−２が当該情報をソフトウェア１−２へ入力することを指す。
【００９０】
以上説明したように、本発明の実施形態によれば、このようなスレッド間の命令実行タイミングの制御を複数のマルチ・プロセッサ・コンピュータにてそれぞれ実施することで、マルチ・プロセッサ・コンピュータをフォールト・トレラント・コンピュータ・システムに適用した場合でも、障害発生の切り替え時に正常に処理を継続することが可能となる。
【００９１】
また、本発明によれば、共有リソースを使用するスレッド間のみで命令の実行タイミングを制御する。そのため、すべてのスレッド間における命令の実行タイミングを制御する場合と比較して、命令の実行タイミングを制御するためのプロセッサに対する処理負荷を少なくでき、それに伴って、ソフトウェアの処理速度を向上させることができる。
【００９２】
また、本発明によれば、複数のスレッドにスピンロックやミューテックスなどのアクセス権を付与するタイミングを、アクセス権を要求してきた順序に応じて制御することができる。
【００９３】
なお、本発明の要旨を逸脱しない範囲で、様々な変形例を構成することが可能である。
【００９４】
図５に示すように、本発明の情報処理装置１００Ａには、図１に示したタイミング制御部７−１、同期制御部８−１を含むフォールト・トレラント・ソフトウェア７０１が実装されていてもよい。
【００９５】
この場合、情報処理装置１００Ａは、図１に示したハイパーバイザ６−１に代えて、ハイパーバイザ６Ａを有する。
【００９６】
ハイパーバイザ６Ａは、プロセッサ１０−１、１１−１、１２−１、１３−１、メモリ（図示せず）、Ｉ／Ｏポート（図示せず）などの物理的なハードウェアを、仮想的な共有リソースとしてソフトウェア１−１およびフォールト・トレラント・ソフトウェア７０１へ提供する。
【００９７】
また、このハイパーバイザ６Ａには、フォールト・トレラント・ソフトウェア７０１と連携して動作するためのソフトウェア連携部７０２が設けられている。
【００９８】
例えば、ハイパーバイザ６Ａは、ソフトウェア１−１が起動した際、ソフトウェア連携部７０２を介して、タイミング制御部７−１を呼び出す。すると、タイミング制御部７−１は、共有リソースに対するアクセス権をスレッド２−１、３−１、４−１、５−１のいずれに対しても付与されていない状態に設定する。
【００９９】
なお、図５に示した構成においては、ハイパーバイザ６Ａは、共有リソースに対するアクセス権の付与がスレッド２−１、３−１、４−１、５−１のいずれかによって要求されたかどうかを判定してもよい。さらに、アクセス権の付与が要求されたと判定した場合、ソフトウェア連携部７０２が、その旨をタイミング制御部７−１へ通知してもよい。そして、アクセス権の付与が要求された旨の通知を受けたタイミング制御部７−１は、要求されたアクセス権が、その付与を要求したスレッドと異なる他のスレッドに付与されているかどうかを判定し、この判定結果に基づいて上述した命令の実行タイミングを制御してもよい。
【０１００】
なお、本発明においては、情報処理装置１００−１内の処理は上述の専用のハードウェアにより実現されるもの以外に、その機能を実現するためのプログラムを、情報処理装置１００−１として動作させるコンピュータにて読取可能な記録媒体に記録し、この記録媒体に記録されたプログラムをそのコンピュータに読み込ませ、実行するものであってもよい。情報処理装置１００−１として動作させるコンピュータにて読取可能な記録媒体とは、フロッピーディスク（登録商標）、光磁気ディスク、ＤＶＤ、ＣＤなどの移設可能な記録媒体の他、そのコンピュータに内蔵されたＨＤＤ等を指す。この記録媒体に記録されたプログラムは、例えば、情報処理装置１００−１として動作させるコンピュータが有するタイミング制御部７−１、同期制御部８−１として動作するプロセッサにて読み込まれ、そのプロセッサの制御によって、上述したものと同様の処理が行われる。
【０１０１】
ここで、タイミング制御部７−１、同期制御部８−１として動作するプロセッサは、プログラムが記録された記録媒体から読み込まれたプログラムを実行するものである。なお、上述したプログラムは、情報処理装置１００−２に対しても同様に適用可能である。
【０１０２】
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明の要旨を逸脱しない範囲で当業者が理解し得る各種の変形が可能である。
【符号の説明】
【０１０３】
１００−１、１００−２、１００Ａ  情報処理装置
１−１、１−２  ソフトウェア
２−１、２−２、３−１、３−２、４−１、４−２、５−１、５−２  スレッド
６−１、６−２、６Ａ  ハイパーバイザ
７−１、７−２  タイミング制御部
８−１、８−２  同期制御部
９−１、９−２  プロセッサ群
１０−１、１０−２、１１−１、１１−２、１２−１、１２−２、１３−１、１３−２  プロセッサ
１４  インターコネクト
７０１  フォールト・トレラント・ソフトウェア
７０２  ソフトウェア連携部
【図１】
2011090553.tif 000003
【図２】
2011090553.tif 000004
【図３】
2011090553.tif 000005
【図４】
2011090553.tif 000006
【図５】
2011090553.tif 000007