(57)【要約】      （修正有）【課題】稼働する複数のプロセッサの中から正常なプロセッサを抽出する方法、プログラム及び情報処理装置を提供する。【解決手段】抽出方法は、複数のプロセッサのそれぞれに対して同じ処理を実行させ、複数のプロセッサのそれぞれの処理における、データの書き込みアドレス、書き込まれるデータの値、データの読み込みアドレス、読み込まれたデータなどの動作情報の中に、プロセッサ間で一致しない動作情報が含まれる場合に、多数を占める動作情報が得られた１以上のプロセッサを正常なプロセッサとして抽出する。【選択図】図１
2016170521.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが、
複数のプロセッサのそれぞれに対して同じ処理を実行させ、
前記複数のプロセッサのそれぞれの前記処理における動作情報の中に、プロセッサ間で一致しない動作情報が含まれる場合に、多数を占める動作情報が得られた１以上のプロセッサを正常なプロセッサとして抽出する、
処理を実行する、正常なプロセッサの抽出方法。
【請求項２】
前記動作情報が、前記複数のプロセッサのそれぞれの前記処理における、データの書き込みアドレス、書き込まれるデータの値、データの読み込みアドレス、及び読み込まれたデータの値の少なくともいずれかを含む
請求項１記載の正常なプロセッサの抽出方法。
【請求項３】
前記コンピュータが、
前記動作情報を、前記複数のプロセッサのそれぞれに接続するバスを通過するデータをキャプチャして取得する、
処理をさらに実行する請求項１又は２記載の正常なプロセッサの抽出方法。
【請求項４】
前記コンピュータが、
前記複数のプロセッサのうち予め定められた１の第１プロセッサが、前記多数を占める動作情報が得られた１以上のプロセッサに含まれない場合、前記多数を占める動作情報が得られた１以上のプロセッサの中から、新たな前記第１プロセッサを選択する、
処理をさらに実行する請求項１乃至３のいずれか１つ記載の正常なプロセッサの抽出方法。
【請求項５】
前記複数のプロセッサのそれぞれに対して同じ処理を実行させる処理において、
前記複数のプロセッサのうち前記第１プロセッサ以外のプロセッサの前記処理を、前記第１プロセッサの前記処理より所定時間遅らせて実行させる、
請求項４記載の正常なプロセッサの抽出方法。
【請求項６】
前記コンピュータが、
前記多数を占める動作情報が得られた１以上のプロセッサ以外のプロセッサについて、所定時間以上又は所定回数以上前記多数を占める動作情報が得られない場合に、当該プロセッサを停止する
処理をさらに実行する請求項１記載の正常なプロセッサの抽出方法。
【請求項７】
コンピュータに、
複数のプロセッサのそれぞれに対して同じ処理を実行させ、
前記複数のプロセッサのそれぞれの前記処理における動作情報の中に、プロセッサ間で一致しない動作情報が含まれる場合に、多数を占める動作情報が得られた１以上のプロセッサを正常なプロセッサとして抽出する、
処理を実行させる、正常なプロセッサの抽出プログラム。
【請求項８】
複数のプロセッサのそれぞれに対して同じ処理を実行させる実行制御部と、
前記複数のプロセッサのそれぞれの前記処理における動作情報の中に、プロセッサ間で一致しない動作情報が含まれる場合に、多数を占める動作情報が得られた１以上のプロセッサを正常なプロセッサとして抽出する抽出部と、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、冗長化技術に関する。
【背景技術】
【０００２】
可用性とは、障害に対する耐性のことである。特にプラント制御や航空機制御に利用されるコンピュータシステムなど、瞬断が許容されないコンピュータシステムにおいては、コンピュータシステムの可用性を高め運用が継続的に行われるようにするため様々な対策が行われる。
【０００３】
コンピュータシステムの可用性を高める技術として、プロセッサやサーバなどを冗長化する技術が知られている。例えば或る文献は、以下のような技術を開示する。具体的には、複数の演算処理装置の各々が、演算処理によって自己の状態を判定し、自己の状態を表す状態データを所定の周期で複数の判定部に送信する。各判定部は、状態データに基づき正常な演算処理装置の選択を行い、選択結果を制御部に通知する。制御部は、各判定部から受信した選択結果から、多数決論理に基づき正常な演算処理装置を抽出する。
【０００４】
この技術は、まず演算処理装置自体が自己の状態を判定し、次に各判定部が正常な演算処理装置の選択を行い、さらに制御部が多数決論理に基づき正常な演算処理装置を抽出する技術である。従って、最終的に正常な演算処理装置を抽出するまでに時間がかかる場合があり、この点については検討がなされていない。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−２３９０３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従って、本発明の目的は、１つの側面では、稼働する複数のプロセッサの中から正常なプロセッサを抽出することである。
【課題を解決するための手段】
【０００７】
本発明の１つの態様では、複数のプロセッサのそれぞれに対して同じ処理を実行させ、複数のプロセッサのそれぞれの処理における動作情報の中に、プロセッサ間で一致しない動作情報が含まれる場合に、多数を占める動作情報が得られた１以上のプロセッサを正常なプロセッサとして抽出する処理を含む。
【発明の効果】
【０００８】
１つの側面では、稼働する複数のプロセッサの中から正常なプロセッサを抽出できるようになる。
【図面の簡単な説明】
【０００９】
【図１】図１は、情報処理装置の構成図である。
【図２】図２は、稼働ＣＰＵの動作及び運用ＣＰＵの切替について説明するための図である。
【図３】図３は、稼働ＣＰＵの動作及び運用ＣＰＵの切替について説明するための図である。
【図４】図４は、稼働ＣＰＵの動作及び運用ＣＰＵの切替について説明するための図である。
【図５】図５は、アドレス比較部が実行する処理について説明するための図である。
【図６】図６は、データ値比較部が実行する処理について説明するための図である。
【図７】図７は、選択制御部が実行する処理について説明するための図である。
【図８】図８は、選択制御部が実行する処理について説明するための図である。
【図９】図９は、運用管理部が実行する処理について説明するための図である。
【図１０】図１０は、管理テーブルに格納されるデータの一例を示す図である。
【図１１】図１１は、管理テーブルに格納されるデータの一例を示す図である。
【図１２】図１２は、運用管理部が実行する処理について説明するための図である。
【図１３】図１３は、運用ＣＰＵの切替に要する時間について説明するための図である。
【図１４】図１４は、運用ＣＰＵの切替に要する時間について説明するための図である。
【発明を実施するための形態】
【００１０】
［実施の形態１］
図１に、本実施の形態における情報処理装置１の構成図を示す。情報処理装置１は、制御部１０と、ワークデータ格納部１１と、センサデータ格納部１２と、操作データ格納部１３とを有する。制御部１０は、ＣＰＵ（Central Processing Unit）部１４と、セレクタ部１５と、管理部１６と、記憶部ａ１乃至ａｎ（ｎは３以上の自然数）と、記憶部ｂ１乃至ｂｎと、記憶部ｃとを有する。ＣＰＵ部１４は、複数のＣＰＵであるＣＰＵ１乃至ｎを有する。管理部１６は、同期制御部１６１と、運用管理部１６２と、決定部１６３と、管理テーブル格納部１６４とを有する。決定部１６３は、アドレス比較部１６３１と、データ値比較部１６３２と、選択制御部１６３３とを有する。
【００１１】
図１において、「ＷＤ」は書き込まれるデータ値を表し、「ＲＤ」は読み出されたデータ値を表し、「Ｄ」はデータ値を表し、「Ａ」はアドレスを表す。「Ｄ」が付されたバスはデータバスであり、「Ａ」が付されたバスはアドレスバスである。
【００１２】
ワークデータ格納部１１は、例えばメモリである。ワークデータ格納部１１は、セレクタ部１５及び記憶部ｃに接続される。ワークデータ格納部１１には、ＣＰＵ１乃至ｎが実行するプログラム、及びＣＰＵ１乃至ｎがプログラムを実行中に使用するデータ等が格納される。
【００１３】
センサデータ格納部１２は、例えばメモリ又はレジスタである。センサデータ格納部１２は、セレクタ部１５及び記憶部ｃに接続される。センサデータ格納部１２には、例えば、温度センサ或いは高度センサなどによって測定されたデータ（以下、センサデータと呼ぶ）が格納される。
【００１４】
操作データ格納部１３は、例えばメモリ又はレジスタである。操作データ格納部１３は、セレクタ部１５及び記憶部ｃに接続される。操作データ格納部１３には、例えばコマンド等が格納される。
【００１５】
セレクタ部１５は、ワークデータ格納部１１と、センサデータ格納部１２と、操作データ格納部１３と、管理部１６と、記憶部ａ１乃至ａｎと、記憶部ｂ１乃至ｂｎとに接続される。セレクタ部１５は、選択制御部１６３３からのＣＰＵ選択信号に従い、ワークデータ格納部１１、センサデータ格納部１２、及び操作データ格納部１３に接続されるＣＰＵを切り替える。図１の例では、ＣＰＵ選択信号により選択されたＣＰＵはＣＰＵ１である。なお、図面を見やすくするため、図１においてはＣＰＵ選択信号を「選択信号」と表している。
【００１６】
記憶部ａ１乃至ａｎは、例えばレジスタである。記憶部ａ１乃至ａｎは、ＣＰＵから出力されたアドレスを記憶する。記憶部ｂ１乃至ｂｎは、例えばレジスタである。記憶部ｂ１乃至ｂｎは、ＣＰＵから出力されたデータ値（ここでは、書き込まれるデータ値）を記憶する。記憶部ｃは、例えばレジスタである。記憶部ｃは、ワークデータ格納部１１から読み出されたデータ値、センサデータ格納部１２から読み出されたデータ値、及び操作データ格納部１３から読み出されたデータ値が格納される。記憶部ｃに格納されたデータ値は、ＣＰＵ１乃至ｎによって読み出される。このように、記憶部ｃを設けることで、ＣＰＵ１乃至ｎが同じ値に基づいてその後の処理を実行するようになるので、多数決判断の信頼性を高めることができる。
【００１７】
ＣＰＵ１乃至ｎは、同じプログラムを実行する複数のＣＰＵである。ＣＰＵ１乃至ｎの処理は同期されており、同時並行で処理を実行するが、後述のように、非運用ＣＰＵが運用ＣＰＵの処理から所定時間遅れて処理を行うようにしてもよい。ＣＰＵ１乃至ｎのうち一部のＣＰＵは停止していることもある。以下では、稼働しているＣＰＵを稼働ＣＰＵと呼び、稼働しておらず停止しているＣＰＵを非稼働ＣＰＵと呼ぶ。稼働ＣＰＵのうち、セレクタ部１５によってワークデータ格納部１１、センサデータ格納部１２、及び操作データ格納部１３に接続されるＣＰＵを運用ＣＰＵと呼ぶ。稼働ＣＰＵのうち、運用ＣＰＵが実行するプログラムと同じプログラムを実行するが、ワークデータ格納部１１、センサデータ格納部１２、及び操作データ格納部１３に接続されていないＣＰＵを非運用ＣＰＵと呼ぶ。本実施の形態においては、稼働ＣＰＵのうち１つのＣＰＵが運用ＣＰＵであり、残りのＣＰＵが非運用ＣＰＵである。
【００１８】
なお、最低でも稼働ＣＰＵが３つあれば多数決を行うことができるので、稼働ＣＰＵの数を３に保つように制御することで省電力化を図ってもよい。また、非稼働ＣＰＵの数は０以上であればよい。
【００１９】
同期制御部１６１は、運用管理部１６２から受け取った、運用状況に関する情報及び稼働状況に関する情報に従い、ＣＰＵ１乃至ｎの動作タイミング及び稼働を同期制御信号によって制御する。同期制御部１６１は、同期の状況に関する情報を運用管理部１６２に出力する。同期制御信号は、例えば、リセット解除のための信号又はバスアクセスの応答を遅延させるための信号等である。なお、図面を見やすくするため、図１においては同期制御信号を「制御信号」と表している。
【００２０】
運用管理部１６２は、同期制御部１６１から受け取った、同期状況に関する情報と、決定部１６３から受け取った、選択状況に関する情報とに基づき、管理テーブル格納部１６４に格納されるデータを管理する。運用管理部１６２は、運用状況に関する情報及び稼働状況に関する情報を、決定部１６３及び同期制御部１６１に出力する。
【００２１】
アドレス比較部１６３１は、記憶部ａ１乃至ａｎに格納されたアドレスをコピーして取得する。アドレス比較部１６３１は、取得した複数のアドレスを比較し、比較結果を選択制御部１６３３に出力する。
【００２２】
データ値比較部１６３２は、記憶部ｂ１乃至ｂｎに格納されたデータ値（ここでは、書き込まれるデータ値）をコピーして取得する。データ値比較部１６３２は、取得した複数のデータ値を比較し、比較結果を選択制御部１６３３に出力する。
【００２３】
選択制御部１６３３は、アドレス比較部１６３１から受け取った比較結果及びデータ値比較部１６３２から受け取った比較結果と、運用管理部１６２から受け取った、運用状況に関する情報及び稼働状況に関する情報とに基づき、運用ＣＰＵを選択する処理を実行する。選択制御部１６３３は、運用ＣＰＵの選択結果に基づき、セレクタ部１５に出力するＣＰＵ選択信号を変更する。
【００２４】
次に、図２乃至図４を用いて、本実施の形態における稼働ＣＰＵの動作及び運用ＣＰＵの切替について説明する。
【００２５】
図２の例においては、ＣＰＵ１乃至ｎは稼働ＣＰＵである。ＣＰＵ１は運用ＣＰＵであり、ＣＰＵ２乃至ｎは非運用ＣＰＵである。ＣＰＵ１が、アドレスがａであり且つデータ値がｂである書き込み（バスアクセス１）を行う場合、ＣＰＵ２乃至ｎもバスアクセス１を実行する。同様に、ＣＰＵ１が、アドレスがｃであり且つデータ値がｄである読み込み（バスアクセス２）を行う場合、ＣＰＵ２乃至ｎもバスアクセス２を実行する。以上のような動作が繰り返し行われる。
【００２６】
書き込みのアクセスが行われるフェーズにおいては、記憶部ａ１乃至ａｎに格納される書き込みのアドレスと、記憶部ｂ１乃至ｂｎに格納されているデータ値とに基づき、ＣＰＵに異常が発生したか判定される。例えばバスアクセス４のフェーズにおいて、ＣＰＵ３のアドレスが「ｇｇ」であり、その他のＣＰＵのアドレスが「ｇ」である場合、ＣＰＵ３は少数派なので、ＣＰＵ３に異常が発生したと判定される。また、たとえアドレスの相違が検出されなかったとしても、ＣＰＵ３のデータ値が「ｈｈ」であり、その他のＣＰＵのデータ値が「ｈ」である場合、ＣＰＵ３は少数派なので、ＣＰＵ３に異常が発生したと判定される。このように、アドレスの相違が検出された場合又はデータ値の相違が検出された場合、ＣＰＵに異常が発生したと判定される。
【００２７】
一方、読み込みのアクセスが行われるフェーズにおいては、ＣＰＵからはデータ値が出力されないので、記憶部ａ１乃至ａｎに格納される読み込みのアドレスに基づき、ＣＰＵに異常が発生したか判定される。例えばバスアクセス２のフェーズにおいて、ＣＰＵ３のアドレスが「ｃｃ」であり、その他のＣＰＵのアドレスが「ｃ」である場合、ＣＰＵ３は少数派なので、ＣＰＵ３に異常が発生したと判定される。
【００２８】
図３に、バスアクセス３のフェーズにおいてＣＰＵ２に異常が発生した場合におけるＣＰＵ１乃至ｎの動作を示す。図３の例においては、ＣＰＵ１が運用ＣＰＵであり、ＣＰＵ１以外のＣＰＵが非運用ＣＰＵである。ＣＰＵ２のアドレスは「ｅ」ではないが、ＣＰＵ２以外のアドレスは「ｅ」であるとする。このような場合には、多数決により、ＣＰＵ２に異常が発生したと判定される。但し、ＣＰＵ２は運用ＣＰＵではないので、運用ＣＰＵの切替は不要であり、ＣＰＵ１が運用ＣＰＵのままである。この例においては、ＣＰＵ２は異常の発生後停止され、非稼働ＣＰＵになる。そして、例えば異常が解消された後、バスアクセスφが行われるフェーズから非運用ＣＰＵに戻る。
【００２９】
図４に、バスアクセス３のフェーズにおいて、運用ＣＰＵであるＣＰＵ１に異常が発生した場合における動作を示す。図４の例においては、ＣＰＵ１のアドレスは「ｅ」ではないが、ＣＰＵ１以外のアドレスは「ｅ」であるとする。このような場合には、多数決により、ＣＰＵ１に異常が発生したと判定される。ここで、ＣＰＵ１は運用ＣＰＵから非稼働ＣＰＵに切り替わり、ＣＰＵ２は稼働ＣＰＵから運用ＣＰＵに切り替わる。そして、例えば異常が解消された後、ＣＰＵ１は、バスアクセスφが行われるフェーズから非運用ＣＰＵに戻る。
【００３０】
次に、図５乃至図１４を用いて、情報処理装置１の動作をより詳細に説明する。第１に、アドレス比較部１６３１が実行する処理について説明する。本処理は、運用ＣＰＵが動作を開始後、例えば所定時間が経過する度に行われる。或いは、運用ＣＰＵが動作を開始後、運用ＣＰＵが動作を停止するまで継続的に行われてもよい。
【００３１】
まず、アドレス比較部１６３１は、稼働ＣＰＵ（すなわち、多数決の対象となるＣＰＵ）の番号を選択制御部１６３３から取得する（図５：ステップＳ１）。
【００３２】
アドレス比較部１６３１は、稼働ＣＰＵから出力されたアドレスを比較する（ステップＳ３）。具体的には、記憶部ａ１乃至ａｎのうち稼働ＣＰＵに接続された記憶部から取得されたアドレスが比較される。
【００３３】
アドレス比較部１６３１は、アドレスの相違が検出された（すなわち、全アドレスが同一であるわけではない）か判断する（ステップＳ５）。例えば、稼働ＣＰＵから出力されたアドレスが、アドレス「ｇ」、アドレス「ｇ」、及びアドレス「ｇｇ」である場合には、アドレスの相違が検出されたと判断される。アドレス「ｇ」、アドレス「ｇ」、及びアドレス「ｇ」である場合には、アドレスの相違が検出されないと判断される。
【００３４】
アドレスの相違が検出されない場合（ステップＳ５：Ｎｏルート）、アドレス比較部１６３１は、アドレスの相違が検出されないことを示す比較結果を、選択制御部１６３３に出力する（ステップＳ７）。そして処理を終了する。
【００３５】
一方、アドレスの相違が検出された場合（ステップＳ５：Ｙｅｓルート）、アドレス比較部１６３１は、アドレスに基づき、稼働ＣＰＵを多数派グループと少数派グループとに分類する（ステップＳ９）。例えば、ＣＰＵ１のアドレスが「ｇ」、ＣＰＵ２のアドレスが「ｇ」、ＣＰＵ３のアドレスが「ｇ」、ＣＰＵ４のアドレスが「ｇｇ」、ＣＰＵ５のアドレスが「ｇｇ」であったとする。このような場合、ＣＰＵ１乃至３は多数派グループに属する稼働ＣＰＵであり、ＣＰＵ４及び５は少数派グループに属する稼働ＣＰＵである。
【００３６】
アドレス比較部１６３１は、アドレスの相違が検出されたことを示す比較結果及び少数派グループに属する稼働ＣＰＵの番号を、選択制御部１６３３及び運用管理部１６２に出力する（ステップＳ１１）。そして処理を終了する。
【００３７】
以上のような処理を実行すれば、異常な動作をしている可能性があるＣＰＵ（ここでは、少数派グループに属する稼働ＣＰＵ）を検出できるようになる。なお、読み込み時及び書き込み時の両方においてアドレスはＣＰＵから出力されるので、読み込み時及び書き込み時の両方において多数決を行うことができる。
【００３８】
第２に、データ値比較部１６３２が実行する処理について説明する。本処理は、運用ＣＰＵが動作を開始後、例えば所定時間が経過する度に行われる。或いは、運用ＣＰＵが動作を開始後、運用ＣＰＵが動作を停止するまで継続的に行われてもよい。
【００３９】
まず、データ値比較部１６３２は、稼働ＣＰＵ（すなわち、多数決の対象となるＣＰＵ）の番号を選択制御部１６３３から取得する（図６：ステップＳ２１）。
【００４０】
データ値比較部１６３２は、バスアクセスが書き込みに該当するか判断する（ステップＳ２３）。バスアクセスが書き込みに該当するか否かは、データ値の内容あるいはＣＰＵに具備される書込み制御信号の状態によって判断することができる。読み込みの際のデータ値はＣＰＵから出力されるわけではないので、本実施の形態においては、バスアクセスが書き込みに該当する場合にのみ比較が行われる。バスアクセスが読み込みに該当する場合（ステップＳ２３：Ｎｏルート）、ステップＳ２５の処理に移行する。
【００４１】
バスアクセスが書き込みに該当する場合（ステップＳ２３：Ｙｅｓルート）、データ値比較部１６３２は、稼働ＣＰＵから出力されたデータ値を比較する（ステップＳ２４）。具体的には、記憶部ｂ１乃至ｂｎのうち稼働ＣＰＵに接続された記憶部から取得されたデータ値が比較される。
【００４２】
データ値比較部１６３２は、データ値の相違が検出された（すなわち、全データ値が同一であるわけではない）か判断する（ステップＳ２７）。例えば、稼働ＣＰＵから出力されたデータ値が、データ値「ｈ」、データ値「ｈ」、及びデータ値「ｈｈ」である場合には、データ値の相違が検出されたと判断される。データ値「ｈ」、データ値「ｈ」、及びデータ値「ｈ」である場合には、データ値の相違が検出されないと判断される。
【００４３】
データ値の相違が検出されない場合（ステップＳ２７：Ｎｏルート）、データ値比較部１６３２は、データ値の相違が検出されないことを示す比較結果を、選択制御部１６３３に出力する（ステップＳ２５）。そして処理を終了する。
【００４４】
一方、データ値の相違が検出された場合（ステップＳ２７：Ｙｅｓルート）、データ値比較部１６３２は、データ値に基づき、稼働ＣＰＵを多数派グループと少数派グループとに分類する（ステップＳ２９）。例えば、ＣＰＵ１のデータ値が「ｈ」、ＣＰＵ２のデータ値が「ｈ」、ＣＰＵ３のデータ値が「ｈ」、ＣＰＵ４のデータ値が「ｈ」、ＣＰＵ５のデータ値が「ｈｈ」であったとする。このような場合、ＣＰＵ１乃至４は多数派グループに属する稼働ＣＰＵであり、ＣＰＵ５は少数派グループに属する稼働ＣＰＵである。
【００４５】
データ値比較部１６３２は、データ値の相違が検出されたことを示す比較結果及び少数派グループに属する稼働ＣＰＵの番号を、選択制御部１６３３及び運用管理部１６２に出力する（ステップＳ３１）。そして処理を終了する。
【００４６】
以上のような処理を実行すれば、異常な動作をしている可能性があるＣＰＵ（ここでは、少数派グループに属する稼働ＣＰＵ）を検出できるようになる。
【００４７】
第３に、選択制御部１６３３が実行する処理について説明する。本処理は、運用ＣＰＵが動作を開始後、例えば所定時間が経過する度に行われる。或いは、運用ＣＰＵが動作を開始後、運用ＣＰＵが動作を停止するまで継続的に行われてもよい。
【００４８】
まず、選択制御部１６３３は、運用ＣＰＵの番号、稼働ＣＰＵの番号、及び切替の優先順位を運用管理部１６２から取得する（図７：ステップＳ４１）。
【００４９】
選択制御部１６３３は、ステップＳ４１において取得した稼働ＣＰＵ（すなわち、多数決の対象となるＣＰＵ）の番号をアドレス比較部１６３１及びデータ値比較部１６３２に出力する（ステップＳ４３）。
【００５０】
選択制御部１６３３は、アドレス比較部１６３１から、比較結果と、ステップＳ５において相違が検出された場合には少数派グループに属する稼働ＣＰＵの番号とを取得する（ステップＳ４５）。
【００５１】
選択制御部１６３３は、ステップＳ４５において取得した比較結果が、アドレスの相違が検出されたことを示しているか判断する（ステップＳ４７）。ステップＳ４５において取得した比較結果が、アドレスの相違が検出されたことを示していない場合（ステップＳ４７：Ｎｏルート）、処理は端子Ａを介して図８のステップＳ５５に移行する。
【００５２】
ステップＳ４５において取得した比較結果が、アドレスの相違が検出されたことを示している場合（ステップＳ４７：Ｙｅｓルート）、選択制御部１６３３は、運用ＣＰＵが少数派グループに含まれるか判断する（ステップＳ４９）。ステップＳ４９においては、ステップＳ４５において取得した稼働ＣＰＵの番号の中に、運用ＣＰＵの番号が含まれているか判断される。
【００５３】
運用ＣＰＵが少数派グループに含まれない場合（ステップＳ４９：Ｎｏルート）、処理は端子Ａを介して図８のステップＳ５５に移行する。運用ＣＰＵが少数派グループに含まれる場合（ステップＳ４９：Ｙｅｓルート）、選択制御部１６３３は、多数派グループに属する非運用ＣＰＵ（すなわち、稼働ＣＰＵのうち少数派グループに属するＣＰＵ以外のＣＰＵ）の中から、新規の運用ＣＰＵ（すなわち、切替後に運用ＣＰＵになるＣＰＵ）の番号を選択し、ＣＰＵ選択信号を変更する（ステップＳ５１）。ステップＳ５１においては、新規の運用ＣＰＵがワークデータ格納部１１、センサデータ格納部１２、及び操作データ格納部１３に接続されるようにＣＰＵ選択信号が変更され、セレクタ部１５は、ＣＰＵ選択信号に従いバスの切替を実行する。なお、ステップＳ５１においては、ステップＳ４１において取得した切替の優先順位に基づき運用ＣＰＵが選択される。
【００５４】
選択制御部１６３３は、新規の運用ＣＰＵの番号を運用管理部１６２に出力する（ステップＳ５３）。処理は端子Ｂを介して終了する。
【００５５】
図８の説明に移行し、データ値比較部１６３２から、比較結果と、ステップＳ２７において相違が検出された場合には少数派グループに属する稼働ＣＰＵの番号とを取得する（ステップＳ５５）。
【００５６】
選択制御部１６３３は、ステップＳ５５において取得した比較結果が、データ値の相違が検出されたことを示しているか判断する（ステップＳ５７）。ステップＳ５５において取得した比較結果が、データ値の相違が検出されたことを示していない場合（ステップＳ５７：Ｎｏルート）、処理は終了する。
【００５７】
ステップＳ５５において取得した比較結果が、データ値の相違が検出されたことを示している場合（ステップＳ５７：Ｙｅｓルート）、選択制御部１６３３は、運用ＣＰＵが少数派グループに含まれるか判断する（ステップＳ５９）。ステップＳ５９においては、ステップＳ５５において取得した稼働ＣＰＵの番号の中に、運用ＣＰＵの番号が含まれているか判断される。
【００５８】
運用ＣＰＵが少数派グループに含まれない場合（ステップＳ５９：Ｎｏルート）、処理は終了する。運用ＣＰＵが少数派グループに含まれる場合（ステップＳ５９：Ｙｅｓルート）、選択制御部１６３３は、多数派グループに属する非運用ＣＰＵ（すなわち、稼働ＣＰＵのうち少数派グループに属するＣＰＵ以外のＣＰＵ）の中から、新規の運用ＣＰＵ（すなわち、切替後に運用ＣＰＵになるＣＰＵ）の番号を選択し、ＣＰＵ選択信号を変更する（ステップＳ６１）。ステップＳ６１においては、新規の運用ＣＰＵがワークデータ格納部１１、センサデータ格納部１２、及び操作データ格納部１３に接続されるように、ＣＰＵ選択信号が変更され、セレクタ部１５は、ＣＰＵ選択信号に従いバスの切替を実行する。なお、ステップＳ６１においては、ステップＳ４１において取得した切替の優先順位に基づき運用ＣＰＵが選択される。
【００５９】
選択制御部１６３３は、新規の運用ＣＰＵの番号を運用管理部１６２に出力する（ステップＳ６３）。そして処理を終了する。
【００６０】
以上のようにすれば、ＣＰＵの異常により誤った制御を行ってしまうことを抑制できるようになる。また、新規の運用ＣＰＵを、既に稼働中のＣＰＵである非運用ＣＰＵの中から選択するので、切替にかかる時間を大幅に短縮しつつ運用を継続できるようになる。
【００６１】
第４に、運用管理部１６２が実行する処理について説明する。本処理は、例えば電源投入後に行われる。
【００６２】
まず、運用管理部１６２は、管理テーブル格納部１６４に格納された管理テーブルからデータを読み込む（図９：ステップＳ７１）。
【００６３】
図１０に、管理テーブル格納部１６４に格納される管理テーブルの一例を示す。図１０の例では、ＣＰＵの番号と、運用ＣＰＵであるか否かを表す情報（以下、運用情報と呼ぶ）と、稼働ＣＰＵであるか否かを表す情報（以下、稼働情報と呼ぶ）と、故障中であるか否かを表す情報（以下、故障情報と呼ぶ）と、切替の優先順位を表す情報とが格納される。運用情報が「１」である場合、ＣＰＵは運用ＣＰＵであり、運用情報が「０」である場合、ＣＰＵは非運用ＣＰＵである。稼働情報が「１」である場合、ＣＰＵは稼働ＣＰＵであり、稼働情報が「０」である場合、ＣＰＵは非稼働ＣＰＵである。故障情報が「１」である場合、ＣＰＵは故障中であり、故障情報が「０」である場合、ＣＰＵは故障中ではない。切替の優先順位が「０」である場合、ＣＰＵは切替の対象ではない。例えば、現在運用ＣＰＵであるＣＰＵは、切替によって次回また運用ＣＰＵになることはないので、「０」が設定される。
【００６４】
図１１に、ＣＰＵ１が故障し運用ＣＰＵがＣＰＵ１からＣＰＵ２に切り替わった場合における管理テーブルの一例を示す。図１１の例においては、ＣＰＵ１について、運用情報が「１」から「０」に変わっており、故障表す情報が「０」から「１」に変わっている。また、故障によりＣＰＵ１は停止されたため、稼働情報が「１」から「０」に変わっている。ＣＰＵ２については、運用情報が「０」から「１」に変わっている。また、ＣＰＵ１の故障により稼働ＣＰＵの数が減ったため、ＣＰＵ４が稼働ＣＰＵに切り替えられる。そのため、ＣＰＵ４については、稼働情報が「０」から「１」に変わっている。そして、切替の優先順位も更新されている。
【００６５】
図９の説明に戻り、運用管理部１６２は、運用ＣＰＵの番号、稼働ＣＰＵの番号、及び切替の優先順位を決定部１６３に出力する（ステップＳ７３）。
【００６６】
運用管理部１６２は、アドレス比較部１６３１から、アドレスの相違が検出されたことを示す比較結果を取得したか判断する（ステップＳ７５）。アドレスの相違が検出されたことを示す比較結果をアドレス比較部１６３１から取得していない場合（ステップＳ７５：Ｎｏルート）、処理は端子Ｃを介して図１２のステップＳ８７に移行する。
【００６７】
一方、アドレスの相違が検出されたことを示す比較結果をアドレス比較部１６３１から取得した場合（ステップＳ７５：Ｙｅｓルート）、運用管理部１６２は、アドレス比較部１６３１から取得した少数派グループに属する稼働ＣＰＵの番号を読み出し、新規の運用ＣＰＵの番号を選択制御部１６３３から取得する（ステップＳ７７）。ステップＳ７７において読み出される稼働ＣＰＵの番号は、比較結果と共に既に取得し、所定の記憶装置（例えばメインメモリ或いはレジスタ）に格納されたものである。
【００６８】
運用管理部１６２は、少数派グループに属するＣＰＵを非稼働ＣＰＵに切り替え（すなわち、稼働情報を「０」に設定し）、新規に運用ＣＰＵになるＣＰＵを非運用ＣＰＵから運用ＣＰＵに切り替え（すなわち、運用情報を「１」に設定し）、運用ＣＰＵであったＣＰＵを非運用ＣＰＵに切り替える（すなわち、運用情報を「０」に設定する）ように管理テーブルを更新する（ステップＳ７９）。運用ＣＰＵであったＣＰＵが少数派グループに属する場合には、非稼働ＣＰＵに切り替えられる。ここで、運用管理部１６２は運用状況に関する情報及び稼働状況に関する情報を同期制御部１６１に出力し、これに応じ、同期制御部１６１はＣＰＵ１乃至ｎの動作タイミング及び稼働を制御する。
【００６９】
運用管理部１６２は、管理テーブルに格納されている、故障情報及び切替の優先順位を更新する（ステップＳ８１）。具体的には、少数派グループに属するＣＰＵについて、故障情報を「１」に設定し、少数派グループに属するＣＰＵの優先順位を「０」に設定する。処理は端子Ｄを介して図１２のステップＳ８３に移行する。
【００７０】
図１２の説明に移行し、運用管理部１６２は、管理テーブル格納部１６４に格納された管理テーブルからデータを読み込む（ステップＳ８３）。
【００７１】
運用管理部１６２は、運用ＣＰＵの番号、稼働ＣＰＵの番号、及び切替の優先順位を決定部１６３に出力する（ステップＳ８５）。
【００７２】
運用管理部１６２は、データ値比較部１６３２から、データ値の相違が検出されたことを示す比較結果を取得したか判断する（ステップＳ８７）。データ値の相違が検出されたことを示す比較結果をデータ値比較部１６３２から取得していない場合（ステップＳ８７：Ｎｏルート）、ステップＳ９５の処理に移行する。
【００７３】
一方、データ値の相違が検出されたことを示す比較結果をデータ値比較部１６３２から取得した場合（ステップＳ８７：Ｙｅｓルート）、運用管理部１６２は、データ値比較部１６３２から取得した少数派グループに属する稼働ＣＰＵの番号を読み出し、新規の運用ＣＰＵの番号を選択制御部１６３３から取得する（ステップＳ８９）。ステップＳ８９において読み出される稼働ＣＰＵの番号は、比較結果と共に既に取得し、所定の記憶装置（例えばメインメモリ或いはレジスタ）に格納されたものである。
【００７４】
運用管理部１６２は、少数派グループに属するＣＰＵを非稼働ＣＰＵに切り替え（すなわち、稼働情報を「０」に設定し）、新規に運用ＣＰＵになるＣＰＵを非運用ＣＰＵから運用ＣＰＵに切り替え（すなわち、運用情報を「１」に設定し）、運用ＣＰＵであったＣＰＵを非運用ＣＰＵに切り替える（すなわち、運用情報を「０」に設定する）ように管理テーブルを更新する（ステップＳ９１）。運用ＣＰＵであったＣＰＵが少数派グループに属する場合には、非稼働ＣＰＵに切り替えられる。ここで、運用管理部１６２は、運用状況に関する情報及び稼働状況に関する情報を同期制御部１６１に出力し、これに応じ、同期制御部１６１はＣＰＵ１乃至ｎの動作タイミング及び稼働を制御する。
【００７５】
運用管理部１６２は、管理テーブルに格納されている、故障情報及び切替の優先順位を更新する（ステップＳ９３）。具体的には、少数派グループに属するＣＰＵについて、故障情報を「１」に設定し、少数派グループに属するＣＰＵの優先順位を「０」に設定する。
【００７６】
運用管理部１６２は、ＣＰＵの冗長化を終了するか判断する（ステップＳ９５）。ＣＰＵの冗長化を終了しない場合（ステップＳ９５：Ｎｏルート）、処理は端子Ｅを介して図９のステップＳ７１の処理に戻る。一方、ＣＰＵの冗長化を終了する場合（ステップＳ９５：Ｙｅｓルート）、処理を終了する。
【００７７】
以上のような処理を実行すれば、ＣＰＵ１乃至ｎの運用状況及び稼働状況を適切に管理できるようになる。
【００７８】
次に、図１３及び図１４を用いて、運用ＣＰＵの切替に要する時間について説明する。図１３及び図１４においては、運用ＣＰＵが実行する処理と、非運用ＣＰＵが実行する処理と、運用ＣＰＵに異常が発生するタイミングと、ＣＰＵの切替を行うタイミングとが示されている。横軸は時間を表す。（１）は、ワークデータ格納部１１に関係する処理であることを表す。（２）は、センサデータ格納部１２に関係する処理であることを表す。（３）は、操作データ格納部１３に関係する処理であることを表す。（４）は、ＣＰＵ間通信を表す。各処理は１クロックの時間で行われるものとする。
【００７９】
図１３は、本実施の形態の方法を用いた場合の例を示す図である。この例においては、色付けされた長方形の図形の部分におけるいずれかのタイミングにおいて、運用ＣＰＵの異常及びＣＰＵの切替が発生する。本実施の形態においては、運用ＣＰＵと非運用ＣＰＵとが同じ処理を並行して行っている。具体的には、センサデータ格納部１２からデータを読み出すための命令をワークデータ格納部１１から読み出す処理（処理１）と、読み出された命令に従いセンサデータ格納部１２からデータを読み出す処理（処理２）と、ワークデータ格納部１１からデータ処理命令を読み出す処理（処理３）と、読み出したデータ処理命令に従いワークデータ格納部１１に格納されたデータに対して実行する処理（処理４）と、ワークデータ格納部１１から書き込み命令を読み出す処理（処理５）と、読み出した書き込み命令に従い操作データ格納部１３に書き込みを行う処理（処理６）とが並行して行われている。また、ＣＰＵ間通信も発生しない。従って、色付けされた長方形の図形の部分におけるいずれのタイミングにおいて、運用ＣＰＵを切り替えたとしても、運用が停止する時間帯が生じることが無い。
【００８０】
図１４は、本実施の形態の方法を用いない場合の例を示す図である。この例においては、色付けされた長方形の図形の部分におけるいずれかのタイミングにおいて、運用ＣＰＵの異常が発生する。異常の発生が検出されると、ＣＰＵの切替を行うために等値化（すなわち、ＣＰＵの状態を同じにすること）が行われる。具体的には、運用ＣＰＵが、非運用ＣＰＵを等値化するための等値化データを送信するための命令をワークデータ格納部１１から読み出す処理（処理Ｕ）と、等値化データを非運用ＣＰＵに送信する処理（処理Ｖ）とを実行する。そして、非運用ＣＰＵは、等値化データを運用ＣＰＵから受信する処理（処理Ｗ）と、等値化データの正当性を確認するための命令をワークデータ格納部１１から読み出す処理（処理Ｘ）と、読み出した命令に従い等値化データの正当性を確認する処理（処理Ｙ）とを実行する。この時点で運用ＣＰＵが切り替わり、新規の運用ＣＰＵは、ワークデータ格納部１１からデータ処理命令を読み出す処理（処理３）を開始する。このように、異常の発生を検出してから等値化を行うような方法では、即時の切替を行うことはできない。そして、元の運用ＣＰＵが操作データ格納部１３に書き込みを行う処理（処理６）が終わった後、新規の運用ＣＰＵが操作データ格納部１３に書き込みを行う処理（処理６）が完了するまでの間は新たな処理が行われず、実質的に処理が遅延することになる。実際には、各処理には数クロックの時間を要することが普通であるので、遅延時間はさらに長くなる。
【００８１】
［実施の形態２］
第１の実施の形態においては、少数派グループに属するＣＰＵを非稼働ＣＰＵに切り替える（すなわち、停止させる）。しかし、ＣＰＵのハードウエア自体に異常は無かったとしても、ノイズによる一時的なバスエラーが原因で多数派グループのアドレス等と異なるアドレス等が検出される場合もある。
【００８２】
そこで、アドレス又はデータ値の相違が検出されたＣＰＵをすぐに停止させるのではなく、まずは非運用ＣＰＵに切り替えるようにしてもよい。そして、所定時間内又は所定回数のバスアクセスを実行するまでの間に、そのＣＰＵが一定の回数以上連続して多数派グループに属するようになった場合には、そのまま非運用ＣＰＵとして動作を継続させてもよい。一方で、所定時間内又は所定回数のバスアクセスを実行するまでの間に、そのＣＰＵが多数派グループに属するようにならない場合には、そのＣＰＵを停止させてもよい。
【００８３】
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した情報処理装置１の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
【００８４】
また、上で説明した各テーブルの構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【００８５】
なお、上では複数のＣＰＵ１乃至ｎを利用する例を示したが、複数のＣＰＵコアであっても本実施の形態を適用することができる。
【００８６】
また、ハードウエアの制約上、運用ＣＰＵと非運用ＣＰＵとが同時並行で処理を実行するのが難しいような場合には、非運用ＣＰＵは運用ＣＰＵより時間αだけ遅れて同じ動作を行ってもよい。αは、１クロックに要する時間に０以上の整数を掛けた時間である。
【００８７】
なお、例えばデータ値が「ｇ」であるＣＰＵの数が２であり、データ値が「ｆ」であるＣＰＵの数が２であるというような場合には、多数決によって多数派及び少数派を決定することはできない。このような場合には、データ値の相違が検出されないものとして取り扱ってもよい。
【００８８】
なお、上で述べた例では、情報を取得する側が情報を提供する側から能動的に情報を取得しているが、情報を提供する側が情報を取得する側に対して所定のタイミングで情報を提供してもよい。すなわち、アドレス比較部１６３１、データ値比較部１６３２、選択制御部１６３３、及び運用管理部１６２が情報を取得するタイミングは任意であり、上で述べた例におけるタイミングに限られるわけではない。
【００８９】
なお、運用ＣＰＵを選択する際には、多数決判断についての過去の履歴に基づき、故障の実績がないＣＰＵを選択するようにしてもよい。
【００９０】
なお、運用ＣＰＵの切替が行われた場合には、情報処理装置１の管理者にその旨を通知するためのデータを出力してもよい。
【００９１】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【００９２】
本実施の形態に係る正常なプロセッサの抽出方法は、（Ａ）複数のプロセッサのそれぞれに対して同じ処理を実行させ、（Ｂ）複数のプロセッサのそれぞれの処理における動作情報の中に、プロセッサ間で一致しない動作情報が含まれる場合に、多数を占める動作情報が得られた１以上のプロセッサを正常なプロセッサとして抽出する処理を含む。
【００９３】
このようにすれば、複数のプロセッサの中から正常なプロセッサを抽出することができるようになる。また、複数のプロセッサのそれぞれが同じ処理を実行しており、等値化のための処理が不要になるので、プロセッサの切替を高速で行えるようになる。
【００９４】
また、上で述べた動作情報が、複数のプロセッサのそれぞれの処理における、データの書き込みアドレス、書き込まれるデータの値、データの読み込みアドレス、及び読み込まれたデータの値の少なくともいずれかを含んでもよい。
【００９５】
また、本抽出方法は、（Ｃ）動作情報を、複数のプロセッサのそれぞれに接続するバスを通過するデータをキャプチャして取得する処理をさらに含んでもよい。このようにすれば、動作情報を容易に取得できるようになる。
【００９６】
また、本抽出方法は、（Ｄ）複数のプロセッサのうち予め定められた１の第１プロセッサ（例えば、実施の形態における運用ＣＰＵ）が、多数を占める動作情報が得られた１以上のプロセッサに含まれない場合、多数を占める動作情報が得られた１以上のプロセッサの中から、新たな第１プロセッサを選択する処理をさらに含んでもよい。このようにすれば、第１プロセッサが故障している可能性がある場合に対処できるようになる。
【００９７】
また、複数のプロセッサのそれぞれに対して同じ処理を実行させる処理において、（ａ１）複数のプロセッサのうち第１プロセッサ以外のプロセッサの処理を、第１プロセッサの処理より所定時間遅らせて実行させてもよい。例えばハードウエアの制約から、第１プロセッサと第１プロセッサ以外のプロセッサとに同じ処理を同時に行わせることが難しい場合がある。そこで、上で述べたようにすれば、そのような場合にも対処できるようになる。
【００９８】
また、本抽出方法は、（Ｅ）多数を占める動作情報が得られた１以上のプロセッサ以外のプロセッサについて、所定時間以上又は所定回数以上多数を占める動作情報が得られない場合に、当該プロセッサを停止する処理をさらに含んでもよい。所定時間以上又は所定回数以上多数を占める動作情報が得られない場合には、プロセッサが故障している可能性がある。そこで、上で述べたようにすれば、故障している可能性があるプロセッサを処理の対象から外すことができるようになる。
【００９９】
また、本抽出方法は、（Ｆ）第１プロセッサを、元の第１プロセッサから新たな第１プロセッサに切り替えるためのバス接続を行う処理をさらに含んでもよい。このようにすれば、第１プロセッサが故障している状態が生じることを防げるようになる。
【０１００】
また、新たな第１プロセッサを選択する処理において、（ｄ１）多数を占める動作情報が得られた１以上のプロセッサの中から、優先順位に基づき新たな第１プロセッサを選択してもよい。このようにすれば、適切な第１プロセッサを選択できるようになる。
【０１０１】
なお、上記方法による処理をプロセッサに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【０１０２】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１０３】
（付記１）
コンピュータが、
複数のプロセッサのそれぞれに対して同じ処理を実行させ、
前記複数のプロセッサのそれぞれの前記処理における動作情報の中に、プロセッサ間で一致しない動作情報が含まれる場合に、多数を占める動作情報が得られた１以上のプロセッサを正常なプロセッサとして抽出する、
処理を実行する、正常なプロセッサの抽出方法。
【０１０４】
（付記２）
前記動作情報が、前記複数のプロセッサのそれぞれの前記処理における、データの書き込みアドレス、書き込まれるデータの値、データの読み込みアドレス、及び読み込まれたデータの値の少なくともいずれかを含む
付記１記載の正常なプロセッサの抽出方法。
【０１０５】
（付記３）
前記コンピュータが、
前記動作情報を、前記複数のプロセッサのそれぞれに接続するバスを通過するデータをキャプチャして取得する、
処理をさらに実行する付記１又は２記載の正常なプロセッサの抽出方法。
【０１０６】
（付記４）
前記コンピュータが、
前記複数のプロセッサのうち予め定められた１の第１プロセッサが、前記多数を占める動作情報が得られた１以上のプロセッサに含まれない場合、前記多数を占める動作情報が得られた１以上のプロセッサの中から、新たな前記第１プロセッサを選択する、
処理をさらに実行する付記１乃至３のいずれか１つ記載の正常なプロセッサの抽出方法。
【０１０７】
（付記５）
前記複数のプロセッサのそれぞれに対して同じ処理を実行させる処理において、
前記複数のプロセッサのうち前記第１プロセッサ以外のプロセッサの前記処理を、前記第１プロセッサの前記処理より所定時間遅らせて実行させる、
付記４記載の正常なプロセッサの抽出方法。
【０１０８】
（付記６）
前記コンピュータが、
前記多数を占める動作情報が得られた１以上のプロセッサ以外のプロセッサについて、所定時間以上又は所定回数以上前記多数を占める動作情報が得られない場合に、当該プロセッサを停止する
処理をさらに実行する付記１記載の正常なプロセッサの抽出方法。
【０１０９】
（付記７）
前記コンピュータが、
前記第１プロセッサを、元の前記第１プロセッサから新たな前記第１プロセッサに切り替えるためのバス接続を行う、
処理をさらに実行する付記４又は５記載の正常なプロセッサの抽出方法。
【０１１０】
（付記８）
新たな前記第１プロセッサを選択する処理において、
前記多数を占める動作情報が得られた１以上のプロセッサの中から、優先順位に基づき新たな前記第１プロセッサを選択する、
付記４乃至５のいずれか１つ記載の正常なプロセッサの抽出方法。
【０１１１】
（付記９）
コンピュータに、
複数のプロセッサのそれぞれに対して同じ処理を実行させ、
前記複数のプロセッサのそれぞれの前記処理における動作情報の中に、プロセッサ間で一致しない動作情報が含まれる場合に、多数を占める動作情報が得られた１以上のプロセッサを正常なプロセッサとして抽出する、
処理を実行させる、正常なプロセッサの抽出プログラム。
【０１１２】
（付記１０）
複数のプロセッサのそれぞれに対して同じ処理を実行させる実行制御部と、
前記複数のプロセッサのそれぞれの前記処理における動作情報の中に、プロセッサ間で一致しない動作情報が含まれる場合に、多数を占める動作情報が得られた１以上のプロセッサを正常なプロセッサとして抽出する抽出部と、
を有する情報処理装置。
【０１１３】
（付記１１）
前記多数を占める動作情報が得られた１以上のプロセッサは、同じ動作情報が得られたプロセッサが同じグループに属するように前記複数のプロセッサを分類した場合に最もプロセッサの数が多いグループに属する１以上のプロセッサである、
付記１記載の正常なプロセッサの抽出方法。
【符号の説明】
【０１１４】
１  情報処理装置    １０  制御部
１１  ワークデータ格納部    １２  センサデータ格納部
１３  操作データ格納部    １４  ＣＰＵ部
１５  セレクタ部    １６  管理部
１６１  同期制御部    １６２  運用管理部
１６３  決定部    １６３１  アドレス比較部
１６３２  データ値比較部    １６３３  選択制御部
ａ１，ａ２，ａｎ，ｂ１，ｂ２，ｂｎ，ｃ  記憶部
【図１】
2016170521.tif 000003
【図２】
2016170521.tif 000004
【図３】
2016170521.tif 000005
【図４】
2016170521.tif 000006
【図５】
2016170521.tif 000007
【図６】
2016170521.tif 000008
【図７】
2016170521.tif 000009
【図８】
2016170521.tif 000010
【図９】
2016170521.tif 000011
【図１０】
2016170521.tif 000012
【図１１】
2016170521.tif 000013
【図１２】
2016170521.tif 000014
【図１３】
2016170521.tif 000015
【図１４】
2016170521.tif 000016