(57)【要約】【課題】特定のソフトウェアが全ての処理手段によって正常に動作できるか否かを検証することが可能な情報処理装置等を提供すること。【解決手段】複数の処理手段と、特定のソフトウェア及び前記特定のソフトウェア以外のソフトウェアを記憶した記憶手段と、前記特定のソフトウェア及び前記特定のソフトウェア以外のソフトウェアを前記複数の処理手段に配分して実行させる制御手段であって、前記特定のソフトウェアが正常に動作可能か否かを検証する１回の検証サイクルにおいて、前記複数の処理手段のそれぞれに少なくとも１回ずつ前記特定のソフトウェアを実行させる制御手段と、を備える情報処理装置。【選択図】図２
2013178713.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理手段と、
特定のソフトウェア及び前記特定のソフトウェア以外のソフトウェアを記憶した記憶手段と、
前記特定のソフトウェア及び前記特定のソフトウェア以外のソフトウェアを前記複数の処理手段に配分して実行させる制御手段であって、前記特定のソフトウェアが正常に動作可能か否かを検証する１回の検証サイクルにおいて、前記複数の処理手段のそれぞれに少なくとも１回ずつ前記特定のソフトウェアを実行させる制御手段と、
を備える情報処理装置。
【請求項２】
請求項１記載の情報処理装置であって、
前記制御手段は、
前記特定のソフトウェアを実行した処理手段に、前記特定のソフトウェア以外のソフトウェアを配分することにより処理負荷を上昇させ、
前記特定のソフトウェアを実行する処理手段を選択する際に、処理負荷が基準よりも低い処理手段を選択することにより、前記複数の処理手段のそれぞれに少なくとも１回ずつ前記特定のソフトウェアを実行させる手段である、
情報処理装置。
【請求項３】
請求項１記載の情報処理装置であって、
前記制御手段は、
前記１回の検証サイクルにおいて、各処理手段が未実行の前記特定のソフトウェアを示すデータを保持し、
該データを参照することにより、前記複数の処理手段のそれぞれに少なくとも１回ずつ前記特定のソフトウェアを実行させる手段である、
情報処理装置。
【請求項４】
請求項１ないし３のいずれか１項記載の情報処理装置であって、
前記記憶手段は、複数種類の前記特定のソフトウェアを記憶し、
前記制御手段は、前記１回の検証サイクルにおいて、前記複数種類の特定のソフトウェアのうち、いずれの処理手段でも実行されていない特定のソフトウェアが存在する場合に、該いずれの処理手段でも実行されていない特定のソフトウェアを優先的に実行させる手段である、
情報処理装置。
【請求項５】
請求項１ないし３のいずれか１項記載の情報処理装置であって、
前記記憶手段は、複数種類の前記特定のソフトウェアを記憶し、
前記制御手段は、前記１回の検証サイクルについてのデータであって、
各処理手段について、全種類の前記特定のソフトウェアを実行済みであるか否かを示す第１のデータと、
前記複数種類の特定のソフトウェアのうち、いずれの処理手段でも検証されていない特定のソフトウェアを示す第２のデータと、
各処理手段が未実行の特定のソフトウェアを示す第３のデータと、を保持し、
前記第３のデータに基づき前記第１のデータを更新し、前記第１のデータに基づき前記複数の処理手段のそれぞれに少なくとも１回ずつ前記特定のソフトウェアを実行させ、前記第２のデータにより示されるいずれの処理手段でも検証されていない特定のソフトウェアを優先的にいずれかの処理手段に実行させる手段である、
情報処理装置。
【請求項６】
請求項１ないし５のいずれか１項記載の情報処理装置であって、
前記特定のソフトウェアは、非周期的に動作するソフトウェアであり、
前記特定のソフトウェア以外のソフトウェアは、周期的に動作するソフトウェアと、非周期的に動作するソフトウェアとを含む、
情報処理装置。
【請求項７】
複数の処理手段と、特定のソフトウェア及び前記特定のソフトウェア以外のソフトウェアを記憶した記憶手段と、を備える情報処理装置の制御手段に、
処理負荷が基準よりも低い処理手段を選択して前記特定のソフトウェアを実行させる処理と、
前記特定のソフトウェアを実行した処理手段に、前記特定のソフトウェア以外のソフトウェアを実行させることにより処理負荷を上昇させる処理と、
を実行させることにより、前記特定のソフトウェアが正常に動作可能か否かを検証する１回の検証サイクルにおいて、前記複数の処理手段のそれぞれに少なくとも１回ずつ前記特定のソフトウェアを実行させるプログラム。
【請求項８】
複数の処理手段と、特定のソフトウェア及び前記特定のソフトウェア以外のソフトウェアを記憶した記憶手段と、を備える情報処理装置の制御手段が、
処理負荷が基準よりも低い処理手段を選択して前記特定のソフトウェアを実行させる処理と、
前記特定のソフトウェアを実行した処理手段に、前記特定のソフトウェア以外のソフトウェアを実行させることにより処理負荷を上昇させる処理と、
を実行することにより、前記特定のソフトウェアが正常に動作可能か否かを検証する１回の検証サイクルにおいて、前記複数の処理手段のそれぞれに少なくとも１回ずつ前記特定のソフトウェアを実行させる検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の処理手段を備える情報処理装置、そのプログラム並びに検証方法に関する。
【背景技術】
【０００２】
従来、例えば車両等の移動体、プラント、工作機器、各種電子装置等の制御装置として用いられる情報処理装置では、処理結果の正確さが要求されるため、ソフトウェアが正常に動作しているかどうかを自ら検証する処理が行われることがある。
【０００３】
また、近年、一パッケージ内に複数のプロセッサコア（ＣＰＵコア）を封入し、各プロセッサコアが並行・独立して処理を行うことが可能なマルチコア・プロセッサ、プログラムメモリやメインメモリをプロセッサ毎に備えたマルチプロセッサ装置等、複数の処理手段を備える情報処理装置が普及している。
【０００４】
特許文献１には、ＳＭＰ（Symmetric  Multi  Processing）モードからＡＭＰ（Asymmetric  Multi  Processing）モードに切り替え可能な複数のＣＰＵコアを搭載したマルチコアＣＰＵの故障診断システムについて記載されている。このシステムは、ＣＰＵコアの処理負荷を予測する負荷予測手段と、予測された処理負荷が閾値未満の場合にいずれかのＣＰＵコアをＡＭＰモードに切り替えるモード切り替え手段と、を備え、ＡＭＰモードに切り替えられたＣＰＵコアを故障診断する。故障診断は、外部メモリからテストデータと期待値を読み出し、標準処理を同じ命令をテストデータに対して実行した結果を期待値と比較し、一致する場合に故障でないと診断する手順で行われる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−１１５７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記従来の故障診断システムにおいては、正常に動作可能であるか否かを検証すべきソフトウェアと、検証を行う処理手段（ＣＰＵコア）との関係について考慮がされていない。この結果、ソフトウェアの動作検証が不十分となる可能性を排除できない。
【０００７】
本発明は、一側面によれば、特定のソフトウェアが全ての処理手段によって正常に動作できるか否かを検証することが可能な情報処理装置等を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するための本発明の第１の態様は、
複数の処理手段と、
特定のソフトウェア及び前記特定のソフトウェア以外のソフトウェアを記憶した記憶手段と、
前記特定のソフトウェア及び前記特定のソフトウェア以外のソフトウェアを前記複数の処理手段に配分して実行させる制御手段であって、前記特定のソフトウェアが正常に動作可能か否かを検証する１回の検証サイクルにおいて、前記複数の処理手段のそれぞれに少なくとも１回ずつ前記特定のソフトウェアを実行させる制御手段と、
を備える情報処理装置である。
【０００９】
この本発明の第１の態様によれば、特定のソフトウェアが正常に動作可能か否かを検証する１回の検証サイクルにおいて、複数の処理手段のそれぞれに少なくとも１回ずつ特定のソフトウェアを実行させるため、特定のソフトウェアが全ての処理手段によって正常に動作できるか否かを検証することができる。
【００１０】
上記目的を達成するための本発明の第２の態様は、
複数の処理手段と、特定のソフトウェア及び前記特定のソフトウェア以外のソフトウェアを記憶した記憶手段と、を備える情報処理装置の制御手段に、
処理負荷が基準よりも低い処理手段を選択して前記特定のソフトウェアを実行させる処理と、
前記特定のソフトウェアを実行した処理手段に、前記特定のソフトウェア以外のソフトウェアを実行させることにより処理負荷を上昇させる処理と、
を実行させることにより、前記特定のソフトウェアが正常に動作可能か否かを検証する１回の検証サイクルにおいて、前記複数の処理手段のそれぞれに少なくとも１回ずつ前記特定のソフトウェアを実行させるプログラムである。
【００１１】
この本発明の第２の態様によれば、特定のソフトウェアが正常に動作可能か否かを検証する１回の検証サイクルにおいて、複数の処理手段のそれぞれに少なくとも１回ずつ特定のソフトウェアを実行させるため、特定のソフトウェアが全ての処理手段によって正常に動作できるか否かを検証することができる。
【００１２】
上記目的を達成するための本発明の第３の態様は、
複数の処理手段と、特定のソフトウェア及び前記特定のソフトウェア以外のソフトウェアを記憶した記憶手段と、を備える情報処理装置の制御手段が、
処理負荷が基準よりも低い処理手段を選択して前記特定のソフトウェアを実行させる処理と、
前記特定のソフトウェアを実行した処理手段に、前記特定のソフトウェア以外のソフトウェアを実行させることにより処理負荷を上昇させる処理と、
を実行することにより、前記特定のソフトウェアが正常に動作可能か否かを検証する１回の検証サイクルにおいて、前記複数の処理手段のそれぞれに少なくとも１回ずつ前記特定のソフトウェアを実行させる検証方法である。
【発明の効果】
【００１３】
本発明は、一側面によれば、特定のソフトウェアが全ての処理手段によって正常に動作できるか否かを検証することが可能な情報処理装置等を提供することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１実施例に係る情報処理装置１のシステム構成例である。
【図２】本実施例のコア選択部３０及び負荷調整部３２により実行される処理の流れを示すフローチャートの一例である。
【図３】初期化されたテーブルＦ、Ｙ、Ｙｊを示す図である。
【図４】プロセッサコアＣ１が選択された様子を示す図である。
【図５】プロセッサコアＣ１がソフトウェアＳ１を検証実行した結果、テーブルＹ及びＹ１からソフトウェアＳ１が削除された状態を示す図である
【図６】図５に示す状態の後、プロセッサコアＣ１がソフトウェアＳ２を検証実行し、その結果、Ｓ１１８においてテーブルＹ１からソフトウェアＳ２が削除され、Ｓ１２４においてテーブルＦからプロセッサコアＣ１が削除された状態を示す図である。
【図７】第２実施例に係るコア選択部３０により実行される処理の流れを示すフローチャートの一例である。
【図８】コア選択部３０が検証実行を行うプロセッサコアを選択する際の処理の流れを示すフローチャートの一例である。
【発明を実施するための形態】
【００１５】
以下、本発明を実施するための形態について、添付図面を参照しながら実施例を挙げて説明する。
【実施例】
【００１６】
＜第１実施例＞
以下、図面を参照し、本発明の第１実施例に係る情報処理装置、プログラム、及び検証方法について説明する。
【００１７】
［構成］
図１は、本発明の第１実施例に係る情報処理装置１のシステム構成例である。情報処理装置１は、例えばマルチコア・プロセッサであり、プログラムメモリ１０と、プロセッサコア２０＃１〜２０＃ｎと、コア選択部３０と、通常メモリ４０と、検証用メモリ５０と、を備える。プロセッサコアの個数に特段の制限はなく、２以上の任意の個数であってよい。
【００１８】
プログラムメモリ１０は、例えば、ＲＯＭ（Read  Only  Memory）、フラッシュＲＯＭ、ＥＥＰＲＯＭ（Electrically  Erasable  and  Programmable  Read  Only  Memory）、ＨＤＤ（Hard  Disk  Drive）等の不揮発性メモリである。プログラムメモリ１０は、各プロセッサコアが実行するソフトウェアを格納している。プログラムメモリ１０には、各プロセッサコアが実行するソフトウェアとして、通常処理モジュール１０Ａと、特定処理モジュール１０Ｂと、が格納されている。
【００１９】
通常処理モジュール１０Ａ、及び異常処理モジュール１０Ｂは、例えば、それぞれが複数のソフトウェアの集合である。各プロセッサコアは、それぞれのモジュールに含まれるソフトウェアがコア選択部３０によって配分されると、配分されたソフトウェアを実行する。通常処理モジュール１０Ａ、及び異常処理モジュール１０Ｂは、プログラムメモリ１０から直接フェッチされて実行されてもよいし、通常メモリ４０に展開されてから実行されてもよい。
【００２０】
通常処理モジュール１０Ａは、例えば情報処理装置１が通常状態において実行するソフトウェアの集合である。情報処理装置１が車両の制御を行う車載制御装置である場合、通常処理モジュール１０Ａに含まれるソフトウェアには、例えば、クランク角信号等のセンサ出力値に基づいてエンジンの点火時期制御を行うための演算等を行うソフトウェアが該当する。通常処理モジュール１０Ａは、周期的に入力されるセンサ出力値に基づいて周期的な処理を行うソフトウェアと、通常のイベント発生時に起動される非周期的なソフトウェアが含まれる。通常のイベントとは、情報処理装置１が車載制御装置である場合、例えば電子キーからの信号に応じてドアロック、アンロックのための認証処理を行うイベント等が該当する。
【００２１】
特定処理モジュール１０Ｂは、例えば、情報処理装置１が通常状態である間は発生しない何らかの特定イベントが発生したときに起動される非周期的なソフトウェアの集合である。特定イベントとは、情報処理装置１が車載制御装置である場合、例えばエンジン制御のための信号の一部が何らかの原因で途絶したときに、簡易且つ安全を重視したエンジン制御を行うモードに移行するイベント等が該当する。この場合、特定処理モジュール１０Ｂは、簡易且つ安全を重視したエンジン制御のための演算を各プロセッサコアに実行させる。なお、このような処理は、フェールセーフ処理と称されることがある。
【００２２】
なお、上記説明した通常処理モジュール１０Ａ、特定処理モジュール１０Ｂの定義はあくまで一例であり、本発明の適用上、特定処理モジュール１０Ｂが非周期的に起動されるソフトウェアであれば、如何なる定義を行ってもよい。
【００２３】
各プロセッサコアは、例えば、命令フェッチユニット、ＡＬＵ（Arithmetic Logic Unit）、ＭＵＬ（乗算器）、ＤＩＶ（除算器）、ＬＳＵ（Load Store Unit）その他を含む演算ユニット、レジスタやキャッシュメモリ等の内部メモリ、プログラムカウンタ、ローカル割り込みコントローラ等を有する。各プロセッサコアが実行するソフトウェアは、コア選択部３０により指定される。
【００２４】
コア選択部３０は、例えばいずれかのプロセッサコアによって実現されるソフトウェア機能部としての負荷調整部３２を備える。また、テーブルデータであるテーブルＦ、Ｙ、Ｙ１〜Ｙｎを、例えばレジスタやキャッシュメモリ上に保持している。これらの内容については後述する。
【００２５】
通常メモリ４０は、例えばＲＡＭ（Random  Access  Memory）であり、通常処理モジュール１０Ａ及び特定処理モジュール１０Ｂが演算対象とするオペランドや処理結果等が格納される。
【００２６】
検証用メモリ５０は、例えばＲＡＭであり、特定処理モジュール１０Ｂが正常に動作可能か否かを検証する際のテストデータや期待値、処理結果等が格納される。これらのデータは、情報処理装置１の起動時に、例えばプログラムメモリ１０から検証用メモリ５０に展開されて用いられる。
【００２７】
［特定処理モジュールの動作検証］
コア選択部３０は、特定処理モジュール１０Ｂの動作検証を行わない期間においては、通常処理モジュール１０Ａを、予め設定された配分規則に従って各プロセッサコアに配分する。特定処理モジュール１０Ｂの動作検証を行わない期間における通常処理モジュール１０Ａの配分規則に関しては如何なる規則を定義してもよいため、説明を省略する。
【００２８】
また、コア選択部３０は、所望のタイミングで、特定処理モジュール１０Ｂが正常に動作可能か否かを検証するために、検証用メモリ５０に格納されたテストデータを用いて特定処理モジュール１０Ｂに含まれるソフトウェアを各プロセッサコアに実行させる。以下、係る検証のために特定処理モジュール１０Ｂに含まれるソフトウェアを実行することを、「検証実行」と称する。
【００２９】
コア選択部３０は、例えばＣＰＵ使用率等の指標値として現れる各プロセッサコアの負荷を監視し、負荷が基準値以下で且つ最も低いプロセッサコアに、「検証実行」を行わせる。
【００３０】
負荷調整部３２は、後述する１回の検証サイクルにおいて、各プロセッサコアが少なくとも１回ずつ、特定処理モジュール１０Ｂに含まれる各ソフトウェアを検証実行するように、各プロセッサコアの負荷を調整する。
【００３１】
ここで、コア選択部３０が保持する各テーブルデータについて説明する。
【００３２】
テーブルＦは、各プロセッサコアのうち、１回の検証サイクルにおいて、特定処理モジュール１０Ｂに含まれる全てのソフトウェアを検証実行済みであるものと、特定処理モジュール１０Ｂに含まれるいずれかのソフトウェアを未だ検証実行していないものとを判別するためのデータである。テーブルＦは、より具体的には、例えば特定処理モジュール１０Ｂに含まれるいずれかのソフトウェアを未だ検証実行していないプロセッサコアの識別情報を列挙した情報である。
【００３３】
テーブルＹは、特定処理モジュール１０Ｂに含まれるソフトウェアのうち、１回の検証サイクルにおいて、いずれのプロセッサコアによっても未だ検証実行されていないソフトウェアを列挙した情報である。
【００３４】
テーブルＹ１〜Ｙｎは、プロセッサコア２０＃１〜２０＃ｎに対応したデータであり、各プロセッサコアについて、１回の検証サイクルにおいて、未だ検証実行していない特定処理モジュール１０Ｂに含まれるソフトウェアを列挙した情報である。
【００３５】
以下、各プロセッサコアに検証実行を行わせる際の処理の流れについて説明する。図２は、本実施例のコア選択部３０及び負荷調整部３２により実行される処理の流れを示すフローチャートの一例である。
【００３６】
まず、コア選択部３０は、テーブルＦ、Ｙ、Ｙｊ（ｊ＝１〜ｎ）を初期化する（Ｓ１００）。
【００３７】
図３は、初期化されたテーブルＦ、Ｙ、Ｙｊを示す図である。以下、説明を簡略化するために、プロセッサコアの個数を３とし（ｊ＝１〜３）、プロセッサコア２０＃１の識別子をＣ１、Ｃ２、Ｃ３と表記し、特定処理モジュール１０Ｂに含まれるソフトウェアをＳ１、Ｓ２の２種類とする。
【００３８】
図３に示すように、１回の検証サイクルが開始した初期状態では、各プロセッサコアは、特定処理モジュール１０Ｂに含まれるいずれかの特定処理モジュール１０Ｂを未だ検証実行していないと定義されるため、テーブルＦには、全てのプロセッサコアの識別子Ｃ１、Ｃ２、Ｃ３が格納されている。
【００３９】
また、初期状態では、特定処理モジュール１０Ｂに含まれる全てのソフトウェアは、いずれのプロセッサコアによっても未だ検証実行されていないと定義されるため、テーブルＹには、ソフトウェアの識別子Ｓ１、Ｓ２が格納されている。
【００４０】
また、初期状態では、各プロセッサコアは、特定処理モジュール１０Ｂに含まれる全てのソフトウェアを未だ検証実行していないと定義されるため、テーブルＹｊ（ｊ＝１〜３）には、ソフトウェアの識別子Ｓ１、Ｓ２が格納されている。
【００４１】
次に、コア選択部３０は、負荷が基準値Ｒｅｆ未満であるプロセッサコアのうち、最も負荷の小さいプロセッサコアを選択する（Ｓ１０２）。以下、本ステップにおいて選択されたプロセッサコアをＣαと表記する。図４は、プロセッサコアＣ１が選択された様子を示す図である。
【００４２】
次に、コア選択部３０は、テーブルＹにデータが存在するか否かを判定する（Ｓ１０４）。
【００４３】
テーブルＹにデータが存在しない場合、コア選択部３０は、プロセッサコアＣαが検証実行するソフトウェアをテーブルＹαから選択する（Ｓ１０６）。一方、テーブルＹにデータが存在する場合、コア選択部３０は、プロセッサコアＣαが検証実行するソフトウェアをテーブルＹから選択する（Ｓ１０８）。これらのステップにおいて、テーブルＹαやテーブルＹに複数のソフトウェアが格納されている場合、いずれのソフトウェアを選択するかは任意に決定してよい。選択されたソフトウェアをＳβと表記する。
【００４４】
このように、テーブルＹにデータが存在する場合に、プロセッサコアＣαが実行するソフトウェアをテーブルＹから選択することによって、いずれのプロセッサコアでも検証実行されていないソフトウェアを優先的に検証実行させることができる。この結果、特定処理モジュール１０Ｂに含まれるソフトウェアのうち、検証実行されない状態で放置されるソフトウェアが生じるのを抑制することができる。
【００４５】
そして、コア選択部３０は、選択したプロセッサＣαにソフトウェアＳβを検証実行させ（Ｓ１１０）、処理結果が異常であるか否かを判定する（Ｓ１１２）。処理結果が異常である場合、コア選択部３０は、エラー処理を実行する（Ｓ１１４）。コア選択部３０は、エラー処理として、例えば、ワーニングランプを点灯させてユーザに報知したり、異常が生じた旨を記憶装置にダイアグ情報として格納したりする。
【００４６】
次に、コア選択部３０は、再度、テーブルＹにデータが存在するか否かを判定する（Ｓ１１６）。
【００４７】
テーブルＹにデータが存在しない場合、コア選択部３０は、テーブルＹαからソフトウェアＳβを削除する（Ｓ１１８）。一方、テーブルＹにデータが存在する場合、コア選択部３０は、テーブルＹ及びＹαからソフトウェアＳβを削除する（Ｓ１２０）。
【００４８】
図５は、プロセッサコアＣ１がソフトウェアＳ１を検証実行した結果、テーブルＹ及びＹ１からソフトウェアＳ１が削除された状態を示す図である。
【００４９】
次に、コア選択部３０は、テーブルＹαにデータが存在するか否かを判定する（Ｓ１２２）。テーブルＹαにデータが存在する場合、コア選択部３０は、Ｓ１０２に戻りプロセッサコアを選択する。
【００５０】
一方、テーブルＹαにデータが存在しない場合、すなわちプロセッサコアＣαが全てのソフトウェアについて検証実行を行った場合、コア選択部３０は、テーブルＦからプロセッサコアＣαを削除し、負荷調整部３２に、プロセッサコアＣαの負荷を基準値Ｒｅｆ以上に上昇させるように指示する（Ｓ１２４）。
【００５１】
図６は、図５に示す状態の後、プロセッサコアＣ１がソフトウェアＳ２を検証実行し、その結果、Ｓ１１８においてテーブルＹ１からソフトウェアＳ２が削除され、Ｓ１２４においてテーブルＦからプロセッサコアＣ１が削除された状態を示す図である。
【００５２】
負荷調整部３２は、通常処理モジュール１０Ａに含まれるソフトウェアをプロセッサコアＣαに配分することによって、プロセッサコアＣαの負荷を基準値Ｒｅｆ以上に上昇させる。より具体的には、プロセッサコアＣαが実行可能なソフトウェアのうち、想定される負荷の合計が基準値Ｒｅｆ以上であるソフトウェアの組み合わせのうち、最も負荷が高くなる組み合わせを探索し、プロセッサコアＣαに配分する。
【００５３】
なお、検証実行を行うプロセッサコアは、例えば通常処理モジュール１０Ａに含まれるソフトウェアと特定処理モジュール１０Ｂに含まれるソフトウェアを時分割で並行して実行するものとする。これに限らず、検証実行を行うプロセッサコアは、特定処理モジュール１０Ｂに含まれるソフトウェアのみを実行するものとしてもよい。
【００５４】
次に、コア選択部３０は、テーブルＦにデータが存在するか否かを判定する（Ｓ１２６）。
【００５５】
テーブルＦにデータが存在する場合、すなわち、全てのプロセッサコアが、特定処理モジュール１０Ｂに含まれる全てのソフトウェアを検証実行済みでない場合、コア選択部３０は、Ｓ１０２に戻り処理を実行する。
【００５６】
一方、テーブルＦにデータが存在しない場合、すなわち、全てのプロセッサコアが、特定処理モジュール１０Ｂに含まれる全てのソフトウェアを検証実行済みである場合、コア選択部３０は、次回の検証サイクルに移行するタイミングまで待機する（Ｓ１２８）。
【００５７】
ここで、検証サイクルの周期は、任意に定めることができる、例えば、１日毎、１週間毎、１月毎に１回の検証サイクルを実行するものとしてもよいし、１回の検証サイクルが終了すると直ちに次回の検証サイクルに移行するものとしてもよい。
【００５８】
このように、テーブルＦから全てのデータが削除されるまで、すなわち、全てのプロセッサコアが、特定処理モジュール１０Ｂに含まれる全てのソフトウェアを検証実行するまで、１回の検証サイクルが継続される。従って、１回の検証サイクルにおいて、全てのプロセッサコアが、特定処理モジュール１０Ｂに含まれる全てのソフトウェアを１回、検証実行することになる。この結果、特定処理モジュール１０Ｂに含まれる全てのソフトウェアが全てのプロセッサコアによって正常に動作できるか否かを検証することができる。
【００５９】
［まとめ］
以上説明した本発明の第１実施例に係る情報処理装置、プログラム、及び検証方法によれば、特定処理モジュール１０Ｂに含まれる全てのソフトウェアが全てのプロセッサコアによって正常に動作できるか否かを検証することができる。
【００６０】
係る検証を行うことは、例えば、プロセッサコアの性能が一律でない場合に、特定処理モジュール１０Ｂに含まれる全てのソフトウェアを正常に動作させることができるかを確認することができる点で有用である。また、特定処理モジュール１０Ｂに含まれるソフトウェアに特有の演算処理等が存在する場合に、あるプロセッサコアの当該演算処理を行う部分が故障していることを発見することもできる。このように、特定処理モジュール１０Ｂに含まれる全てのソフトウェアが全てのプロセッサコアによって正常に動作できるか否かを検証することにより、情報処理装置において想定される不都合をくまなく走査することができるため、情報処理装置の処理結果に対する信頼性を高めることができる。
【００６１】
＜第２実施例＞
以下、図面を参照し、本発明の第２実施例に係る情報処理装置、プログラム、及び検証方法について説明する。
【００６２】
以下、［構成］については、第１実施例と共通するため説明を省略し、［特定処理モジュールの動作検証］についてのみ説明する。
【００６３】
本実施例に係る負荷調整部３２は、第１実施例のような検証実行を行うための負荷調整は行わず、通常処理モジュール１０Ａに含まれるソフトウェアの実行、及び検証実行によって生じる負荷の調整のみ行う。より具体的には、検証実行を行うプロセッサコアとして選択されたプロセッサコアに対して、通常処理モジュール１０Ａに含まれるソフトウェアの配分を減少させて負荷を軽減する等の処理を行う。
【００６４】
図７は、第２実施例に係るコア選択部３０により実行される処理の流れを示すフローチャートの一例である。図２と比較すると分かるように、第２実施例に係るコア選択部３０は、Ｓ１０２に代えてＳ１０３の処理を実行し、Ｓ１２４の処理に代えてＳ１２５の処理を実行する点が第１実施例に係るコア選択部３０と異なる。
【００６５】
まず、コア選択部３０は、テーブルＦ、Ｙ、Ｙｊ（ｊ＝１〜ｎ）を初期化する（Ｓ１００）。
【００６６】
次に、コア選択部３０は、検証実行を行うプロセッサコアを選択する（Ｓ１０３）。以下、本ステップにおいて選択されたプロセッサコアをＣαと表記する。
【００６７】
図８は、コア選択部３０が検証実行を行うプロセッサコアを選択する際の処理の流れを示すフローチャートの一例である。図７のＳ１０４以下の処理の前に、これについて説明する。
【００６８】
まず、コア選択部３０は、テーブルＦに格納されている各プロセッサコアに対応するテーブルＹｊを走査し（Ｓ２００）、各テーブルＹｊに格納されているソフトウェアの数をそれぞれカウントする（Ｓ２０２）。
【００６９】
次に、コア選択部３０は、格納されているソフトウェアの数が最も多いテーブルＹｊに対応するプロセッサコアを選択する（Ｓ２０４）。なお、格納されているソフトウェアの数が最も多いテーブルＹｊが複数存在する場合は、例えば識別子ｊが最も小さいテーブルＹｊに対応するプロセッサコアを選択する。
【００７０】
次に、コア選択部３０は、テーブルＹにデータが存在するか否かを判定する（Ｓ１０４）。テーブルＹにデータが存在しない場合、コア選択部３０は、プロセッサコアＣαが検証実行するソフトウェアをテーブルＹαから選択する（Ｓ１０６）。一方、テーブルＹにデータが存在する場合、コア選択部３０は、プロセッサコアＣαが検証実行するソフトウェアをテーブルＹから選択する（Ｓ１０８）。これらのステップにおいて、テーブルＹαやテーブルＹに複数のソフトウェアが格納されている場合、いずれのソフトウェアを選択するかは任意に決定してよい。選択されたソフトウェアをＳβと表記する。
【００７１】
このように、テーブルＹにデータが存在する場合に、プロセッサコアＣαが実行するソフトウェアをテーブルＹから選択することによって、いずれのプロセッサコアでも検証実行されていないソフトウェアを優先的に検証実行させることができる。この結果、特定処理モジュール１０Ｂに含まれるソフトウェアのうち、検証実行されない状態で放置されるソフトウェアが生じるのを抑制することができる。
【００７２】
そして、コア選択部３０は、選択したプロセッサＣαにソフトウェアＳβを検証実行させ（Ｓ１１０）、処理結果が異常であるか否かを判定する（Ｓ１１２）。処理結果が異常である場合、コア選択部３０は、エラー処理を実行する（Ｓ１１４）。コア選択部３０は、エラー処理として、例えば、ワーニングランプを点灯させてユーザに報知したり、異常が生じた旨を記憶装置にダイアグ情報として格納したりする。
【００７３】
次に、コア選択部３０は、再度、テーブルＹにデータが存在するか否かを判定する（Ｓ１１６）。テーブルＹにデータが存在しない場合、コア選択部３０は、テーブルＹαからソフトウェアＳβを削除する（Ｓ１１８）。一方、テーブルＹにデータが存在する場合、コア選択部３０は、テーブルＹ及びＹαからソフトウェアＳβを削除する（Ｓ１２０）。
【００７４】
次に、コア選択部３０は、テーブルＹαにデータが存在するか否かを判定する（Ｓ１２２）。テーブルＹαにデータが存在する場合、コア選択部３０は、Ｓ１０２に戻りプロセッサコアを選択する。
【００７５】
一方、テーブルＹαにデータが存在しない場合、すなわちプロセッサコアＣαが全てのソフトウェアについて検証実行を行った場合、コア選択部３０は、テーブルＦからプロセッサコアＣαを削除する（Ｓ１２５）。
【００７６】
次に、コア選択部３０は、テーブルＦにデータが存在するか否かを判定する（Ｓ１２６）。テーブルＦにデータが存在する場合、すなわち、全てのプロセッサコアが、特定処理モジュール１０Ｂに含まれる全てのソフトウェアを検証実行済みでない場合、コア選択部３０は、Ｓ１０２に戻り処理を実行する。
【００７７】
一方、テーブルＦにデータが存在しない場合、すなわち、全てのプロセッサコアが、特定処理モジュール１０Ｂに含まれる全てのソフトウェアを検証実行済みである場合、コア選択部３０は、次回の検証サイクルに移行するタイミングまで待機する（Ｓ１２８）。検証サイクルの周期は、第１実施例と同様、任意に定めることができる、
このように、テーブルＦから全てのデータが削除されるまで、すなわち、全てのプロセッサコアが、特定処理モジュール１０Ｂに含まれる全てのソフトウェアを検証実行するまで、１回の検証サイクルが継続される。従って、１回の検証サイクルにおいて、全てのプロセッサコアが、特定処理モジュール１０Ｂに含まれる全てのソフトウェアを１回、検証実行することになる。この結果、特定処理モジュール１０Ｂに含まれる全てのソフトウェアが全てのプロセッサコアによって正常に動作できるか否かを検証することができる。
【００７８】
［まとめ］
以上説明した本発明の第２実施例に係る情報処理装置、プログラム、及び検証方法によれば、特定処理モジュール１０Ｂに含まれる全てのソフトウェアが全てのプロセッサコアによって正常に動作できるか否かを検証することができる。
【００７９】
係る検証を行うことは、例えば、プロセッサコアの性能が一律でない場合に、特定処理モジュール１０Ｂに含まれる全てのソフトウェアを正常に動作させることができるかを確認することができる点で有用である。また、特定処理モジュール１０Ｂに含まれるソフトウェアに特有の演算処理等が存在する場合に、あるプロセッサコアの当該演算処理を行う部分が故障していることを発見することもできる。このように、特定処理モジュール１０Ｂに含まれる全てのソフトウェアが全てのプロセッサコアによって正常に動作できるか否かを検証することにより、情報処理装置において想定される不都合をくまなく走査することができるため、情報処理装置の処理結果に対する信頼性を高めることができる。
【００８０】
＜変形等＞
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【００８１】
例えば、上記のようにテーブルを用いて、全てのプロセッサコアが、特定処理モジュール１０Ｂに含まれる全てのソフトウェアを検証実行するように制御を行うのは一例であり、他の手法によって制御を実現してもよい。
【符号の説明】
【００８２】
１      情報処理装置
１０    プログラムメモリ
１０Ａ  通常処理モジュール
１０Ｂ  特定処理モジュール
２０＃１〜２０＃ｎ  プロセッサコア
３０    コア選択部
３２    負荷調整部
４０    通常メモリ
５０    検証用メモリ
Ｆ、Ｙ、Ｙ１〜ｎ  テーブル
【図１】
2013178713.tif 000003
【図２】
2013178713.tif 000004
【図３】
2013178713.tif 000005
【図４】
2013178713.tif 000006
【図５】
2013178713.tif 000007
【図６】
2013178713.tif 000008
【図７】
2013178713.tif 000009
【図８】
2013178713.tif 000010