(57)【要約】      （修正有）【課題】半導体装置固有の不可逆的なデータを利用して、コンピュータシステムの異常を検出する。【解決手段】半導体装置は、他の半導体装置に固有の不可逆的なデータを取得する取得部１５１と、直近に取得した他の半導体装置のデータを再取得し、再取得したデータが、直近に取得した他の半導体装置のデータと不一致であるか否かを検証し、検証結果に基づいてコンピュータシステムの異常を検出する検出部１５３と、を備える。【選択図】図１６
2020042416.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムに含まれる複数の半導体装置のうちの１つの半導体装置であって、
他の半導体装置に固有の不可逆的なデータを取得する取得部と、
直近に取得した他の半導体装置の前記データを再取得し、再取得した前記データが、直近に取得した当該他の半導体装置の前記データと不一致であるか否かを検証し、当該検証結果に基づいて前記コンピュータシステムの異常を検出する検出部と、
を備える、半導体装置。
【請求項２】
自身の半導体装置の前記データを算出する算出部をさらに備え、
前記取得部は、
他の半導体装置から当該他の半導体装置の前記データを取得し、
直近に取得した他の半導体装置の前記データをテーブルに書き込み、
前記検出部は、
直近に取得した他の半導体装置の前記データを再取得し、再取得した前記データが、前記テーブルに書き込まれている当該他の半導体装置の前記データと不一致であるか否かを検証し、当該検証結果に基づいて前記コンピュータシステムの異常を検出する、
請求項１に記載の半導体装置。
【請求項３】
前記取得部は、
自身の半導体装置の起動時又は一定間隔で、他の半導体装置との間で前記データを交換する、
請求項２に記載の半導体装置。
【請求項４】
前記検出部は、
前記データが不一致であった他の半導体装置の数が閾値以上である場合に、前記コンピュータシステムが異常であると判定する、
請求項２に記載の半導体装置。
【請求項５】
前記取得部は、
前記複数の半導体装置のいずれかが交換された場合、交換後の半導体装置から前記データを取得し、
前記検出部は、
交換後の半導体装置の前記データが、初期値でなく、かつ、前記テーブルに書き込まれている交換前の半導体装置の前記データでもない場合に、前記交換は不正な交換であると判定する、
請求項２に記載の半導体装置。
【請求項６】
メンテナンス装置から、前記複数の半導体装置のいずれかが正当に交換された旨の通知を受けると、前記メンテナンス装置の認証を行う認証部をさらに備え、
前記認証の完了後に、前記テーブルには、交換後の半導体装置を含む前記複数の半導体装置の各々の前記データが前記メンテナンス装置により書き込まれる、
請求項２に記載の半導体装置。
【請求項７】
前記半導体装置が、マスタである場合、
メンテナンス装置から、前記複数の半導体装置のいずれかが正当に交換された旨の通知を受けると、前記メンテナンス装置の認証を行う認証部をさらに備え、
前記取得部は、
前記認証の完了後に、交換後の半導体装置を含む前記複数の半導体装置の各々の前記データを取得し、前記複数の半導体装置の各々の前記データを、前記複数の半導体装置の各々の前記テーブルに書き込む、
請求項２に記載の半導体装置。
【請求項８】
前記算出部は、
実センサ値を補正係数で補正し、補正後のセンサ値を用いて前記データを算出するものであり、
前記取得部は、
前記複数の半導体装置のいずれかが交換された場合、交換後の半導体装置から前記補正係数を取得し、
前記検出部は、
交換後の半導体装置の前記補正係数で補正した補正後のセンサ値が許容範囲外にある場合に、交換後の半導体装置は不正な半導体装置であると判定する、
請求項２に記載の半導体装置。
【請求項９】
前記検出部は、
再取得した他の半導体装置の前記データのハッシュ値が、前記テーブルに書き込まれている他の半導体装置の前記データのハッシュ値と不一致であるか否かを検証し、当該検証結果に基づいて前記コンピュータシステムの異常を検出する、
請求項２に記載の半導体装置。
【請求項１０】
前記データは、半導体装置のストレス値を積算したストレスデータである、
請求項１に記載の半導体装置。
【請求項１１】
コンピュータシステムに含まれる複数の半導体装置のうちの１つの半導体装置であって、
前記複数の半導体装置の各々に固有の不可逆的なデータを取得する取得部と、
前記データに基づいて前記コンピュータシステムの異常を検出する検出部と、
を備える、半導体装置。
【請求項１２】
複数の半導体装置を含むコンピュータシステムであって、
前記複数の半導体装置の各々は、
他の半導体装置に固有の不可逆的なデータを取得する取得部と、
直近に取得した他の半導体装置の前記データを再取得し、再取得した前記データが、直近に取得した当該他の半導体装置の前記データと不一致であるか否かを検証し、当該検証結果に基づいて前記コンピュータシステムの異常を検出する検出部と、
を備える、コンピュータシステム。
【請求項１３】
前記複数の半導体装置の各々は、
自身の半導体装置の前記データを算出する算出部をさらに備え、
前記取得部は、
他の半導体装置から当該他の半導体装置の前記データを取得し、
直近に取得した他の半導体装置の前記データをテーブルに書き込み、
前記検出部は、
直近に取得した他の半導体装置の前記データを再取得し、再取得した前記データが、前記テーブルに書き込まれている当該他の半導体装置の前記データと不一致であるか否かを検証し、当該検証結果に基づいて前記コンピュータシステムの異常を検出する、
請求項１２に記載のコンピュータシステム。
【請求項１４】
前記取得部は、
自身の半導体装置の起動時又は一定間隔で、他の半導体装置との間で前記データを交換する、
請求項１３に記載のコンピュータシステム。
【請求項１５】
前記検出部は、
前記データが不一致であった他の半導体装置の数が閾値以上である場合に、前記コンピュータシステムが異常であると判定する、
請求項１３に記載のコンピュータシステム。
【請求項１６】
前記取得部は、
前記複数の半導体装置のいずれかが交換された場合、交換後の半導体装置から前記データを取得し、
前記検出部は、
交換後の半導体装置の前記データが、初期値でなく、かつ、前記テーブルに書き込まれている交換前の半導体装置の前記データでもない場合に、前記交換は不正な交換であると判定する、
請求項１３に記載のコンピュータシステム。
【請求項１７】
前記複数の半導体装置のいずれかが正当に交換された場合、その旨を前記複数の半導体装置の各々に通知するメンテナンス装置をさらに備え、
前記メンテナンス装置は、
交換後の半導体装置以外の半導体装置による前記メンテナンス装置の認証の完了後に、交換後の半導体装置を含む前記複数の半導体装置の各々の前記データを取得し、前記複数の半導体装置の各々の前記データを、前記複数の半導体装置の各々の前記テーブルに書き込む、
請求項１３に記載のコンピュータシステム。
【請求項１８】
前記複数の半導体装置のいずれかが正当に交換された場合、その旨をマスタとなる前記半導体装置に通知するメンテナンス装置をさらに備え、
マスタとなる前記半導体装置の前記取得部は、
前記メンテナンス装置の認証の完了後に、交換後の半導体装置を含む前記複数の半導体装置の各々の前記データを取得し、前記複数の半導体装置の各々の前記データを、前記複数の半導体装置の各々の前記テーブルに書き込む、
請求項１３に記載のコンピュータシステム。
【請求項１９】
前記算出部は、
実センサ値を補正係数で補正し、補正後のセンサ値を用いて前記データを算出するものであり、
前記取得部は、
前記複数の半導体装置のいずれかが交換された場合、交換後の半導体装置から前記補正係数を取得し、
前記検出部は、
交換後の半導体装置の前記補正係数で補正した補正後のセンサ値が許容範囲外にある場合に、交換後の半導体装置は不正な半導体装置であると判定する、
請求項１３に記載のコンピュータシステム。
【請求項２０】
前記検出部は、
再取得した他の半導体装置の前記データのハッシュ値が、前記テーブルに書き込まれている他の半導体装置の前記データのハッシュ値と不一致であるか否かを検証し、当該検証結果に基づいて前記コンピュータシステムの異常を検出する、
請求項１３に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置に関し、例えば、コンピュータシステムの異常の検出に好適に利用できるものである。
【背景技術】
【０００２】
近年、ＬＳＩ（Large Scale Integration）が受けるストレスを表すストレスデータを算出する技術が提案されている。例えば、特許文献１には、半導体装置（ＬＳＩ）内部のリングオシレータの寿命は、電圧や温度に依存することから、温度依存性及び電圧依存性に比例する周波数特性を有するリングオシレータの発振をカウントすることで、半導体装置のストレスデータを算出する技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１８−０９１８０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、ＬＳＩのストレスデータは、ＬＳＩ固有の不可逆的なデータである。
しかし、特許文献１の技術は、ＬＳＩのストレスデータをＬＳＩの摩耗故障の予測のために利用することに留まっており、ストレスデータのようなＬＳＩ固有の不可逆的なデータを有効に利用できていないという問題があった。
【０００５】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００６】
一実施の形態によれば、半導体装置は、コンピュータシステムに含まれる複数の半導体装置のうちの１つの半導体装置である。半導体装置は、他の半導体装置に固有の不可逆的なデータを取得する取得部と、直近に取得した他の半導体装置の前記データを再取得し、再取得した前記データが、直近に取得した当該他の半導体装置の前記データと不一致であるか否かを検証し、その検証結果に基づいて前記コンピュータシステムの異常を検出する検出部と、を備える。
【発明の効果】
【０００７】
上記一実施の形態によれば、上述した課題の解決に貢献することができる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１に係るコンピュータシステムの構成例を示す図である。
【図２】実施の形態１に係るコンピュータの構成例を示すブロック図である。
【図３】実施の形態１に係るストレスデータテーブルの例を示す図である。
【図４】実施の形態１に係るコンピュータシステムにおいて、コンピュータ間でストレスデータを交換する動作、及び、各コンピュータがストレスデータを算出する動作の例を示すシーケンス図である。
【図５】実施の形態１に係るコンピュータにおいて、ストレスデータを検証する動作の例を示す図である。
【図６】図５の処理フローの例を示すフロー図である。
【図７】実施の形態２の態様１に係るコンピュータシステムの動作例を示す図である。
【図８】図７の各コンピュータにおける処理フローの例を示すフロー図である。
【図９】実施の形態２の態様２に係るコンピュータシステムの構成例を示す図である。
【図１０】実施の形態２の態様２に係るコンピュータシステムにおいて、コンピュータの正当な交換が行われた場合の動作例を示すシーケンス図である。
【図１１】実施の形態２の態様３に係るコンピュータシステムの構成例を示す図である。
【図１２】実施の形態２の態様３に係るコンピュータシステムにおいて、コンピュータの正当な交換が行われた場合の動作例を示すシーケンス図である。
【図１３】センサ値の期待値及びその期待値の許容値の例を示す図である。
【図１４】実施の形態３に係るストレスデータテーブルの例を示す図である。
【図１５】実施の形態４に係るコンピュータシステムの構成例を示す図である。
【図１６】実施の形態１〜３に係るＬＳＩを概念的に示した半導体装置の構成例を示すブロック図である。
【図１７】実施の形態４に係るサーバを概念的に示したサーバの構成例を示すブロック図である。
【発明を実施するための形態】
【０００９】
＜実施の形態１＞
＜実施の形態１の構成＞
まず、図１を参照して、本実施の形態１に係るコンピュータシステムの構成について説明する。
図１に示されるように、本実施の形態１に係るコンピュータシステムは、相互に接続された複数のコンピュータ１０−１〜１０−Ｎ（Ｎは２以上の自然数）を含む。なお、以下の図面において、例えば、コンピュータ１０−Ｎはコンピュータ＃Ｎとも表記することがある。また、以下、どのコンピュータ１０−１〜１０−Ｎであるかを特定しない場合は、コンピュータ１０と称することがある。
【００１０】
複数のコンピュータ１０−１〜１０−Ｎの接続方法は、本実施の形態１の本質的な事項ではなく、いかなる方法でも良い。また、コンピュータシステムは、例えば、同じ車両に搭載された複数のコンピュータ１０−１〜１０−Ｎからなる車載システムであるが、これには限定されない。また、以下では、車載システムのように、コンピュータ１０−１〜１０−Ｎが同時に起動し、同時に停止するものとして説明するが、これには限定されない。システム管理者は、コンピュータ１０−１〜１０−Ｎが個別に起動し、個別に停止するよう任意に設定しても良い。
【００１１】
図１に示されるような、複数のコンピュータ１０を含むコンピュータシステムにおいては、悪意を持った攻撃者がコンピュータ１０のデータを改ざんしたり、コンピュータ１０そのものを悪意のある非正規のコンピュータ１０に交換したりすると、コンピュータシステム全体の完全性や信頼性が損なわれてしまう。
【００１２】
本実施の形態１は、コンピュータ１０が備えるＬＳＩ１００（後述の図２参照）に固有の不可逆的なデータであるストレスデータに着目し、このストレスデータを利用して、コンピュータシステムの異常を検出するものである。
【００１３】
続いて、図２を参照して、本実施の形態１に係るコンピュータ１０の構成について説明する。
図２に示されるように、本実施の形態１に係るコンピュータ１０は、半導体装置の一例であるＬＳＩ１００を含む。ＬＳＩ１００は、ＣＰＵ（Central Processing Unit）１０１と、カウンタ１０２と、センサ１０３と、不揮発性メモリ（ＮＶＭ：Non-volatile memory）１０４と、を含む。これら構成要素は、バスを介して互いに接続されている。なお、図２は、コンピュータ１０が備える構成要素として、本実施の形態１に関係するＬＳＩ１００のみを図示し、その他の構成要素は省略している。また、図２は、ＬＳＩ１００が備える構成要素として、一般的なＣＰＵ１０１及び不揮発性メモリ１０４等を図示しているが、実際に用いられるアプリケーションによっては、ＬＳＩ１００は様々なペリフェラル等を備える場合もある。
【００１４】
センサ１０３は、自身のコンピュータ１０の稼働時に、自身のＬＳＩ１００が受けるストレスの実ストレス値をモニターする。例えば、センサ１０３は、ＬＳＩ１００に供給される電圧（Ｖ）及び環境温度（Ｔ）を実ストレス値としてモニターする。また、センサ１０３は、電圧や環境温度に加え、ＬＳＩ１００そのものの温度（Ｔｊ）を実ストレス値としてモニターしても良い。また、センサ１０３によるモニターは、１秒以下の間隔であることが望ましいが、それ以上でも問題は無い。
【００１５】
カウンタ１０２は、センサ１０３がモニターした自身のＬＳＩ１００の実ストレス値を基に、実ストレス値を積算したデータであるストレスデータを算出する。なお、ストレスデータの算出方法は、任意の方法で良い。例えば、センサ１０３が電圧（Ｖ）及び環境温度（Ｔ）を実ストレス値としてモニターする場合、特許文献１に開示された以下の算出方法でストレスデータを算出できる。
ストレスデータ∝Ｖｎ  ×  ｅｘｐ（−Ｅａ／ｋＴ）
ここで、ｎ、Ｅａは係数、ｋはボルツマン定数である。
【００１６】
不揮発性メモリ１０４は、ストレスデータ（ＳＤ：Stress Data）１０５及びストレスデータテーブル（ＳＤＴ：Stress Data Table）１０６を格納する。
ストレスデータ１０５は、カウンタ１０２が算出した、自身のＬＳＩ１００のストレスデータである。
ストレスデータテーブル１０６は、コンピュータ１０−１〜１０−Ｎの各々のＬＳＩ１００のストレスデータ（自身のコンピュータ１０のＬＳＩ１００のストレスデータを含む）が書き込まれたテーブルである。
【００１７】
ここで、図３を参照して、本実施の形態１に係るストレスデータテーブル１０６について説明する。
図３に示されるように、本実施の形態１に係るストレスデータテーブル１０６は、コンピュータ１０のＩＤ、そのコンピュータ１０のストレスデータ、及び、そのストレスデータが算出された日付が書き込まれる。ただし、図３のストレスデータテーブル１０６は、一例であって、これには限定されない。ストレスデータテーブル１０６には、ストレスデータの代わりに、ストレスデータの算出に用いる実ストレス値を書き込んでおき、ストレスデータの算出は、必要に応じて任意のタイミングで算出しても良いし、外部で行っても良い。
【００１８】
ストレスデータテーブル１０６において、ストレスデータを更新する場合は、ＣＰＵ１０１は、例えば、自身のコンピュータ１０の起動時に、他のコンピュータ１０との間で、ストレスデータを交換する。すなわち、ＣＰＵ１０１は、自身のコンピュータ１０のＩＤ、その時点で不揮発性メモリ１０４にストレスデータ１０５として格納されているストレスデータ、及びそのストレスデータを算出した日付を、他のコンピュータ１０に送信する。また、ＣＰＵ１０１は、他のコンピュータ１０からも、他のコンピュータ１０における同様のデータを受信する。
【００１９】
そして、ＣＰＵ１０１は、他のコンピュータ１０のストレスデータについては、他のコンピュータ１０から受信したストレスデータを、ＩＤ及び日付と共に、ストレスデータテーブル１０６に書き込む。一方、ＣＰＵ１０１は、自身のコンピュータ１０のストレスデータについては、他のコンピュータ１０に送信したストレスデータを、ＩＤ及び日付と共に、ストレスデータテーブル１０６に書き込む。
【００２０】
なお、ここでは、ストレスデータテーブル１０６のストレスデータを更新するタイミングの例として、コンピュータ１０の起動時を挙げたが、これには限定されない。例えば、コンピュータシステムは、立ち上げ時間の制約等を受ける場合や、２４時間稼働するシステムである場合もある。そのため、ストレスデータテーブル１０６のストレスデータを更新するタイミングは、必ずしもコンピュータ１０の起動時である必要はなく、一定間隔で更新できれば良い。ストレスデータテーブル１０６のストレスデータは、概ね、１日に１回の更新が妥当であると考えられる。
【００２１】
＜実施の形態１の動作＞
以下、本実施の形態１に係るコンピュータシステムの動作について説明する。
まず、図４を参照して、コンピュータ１０間でストレスデータを交換する動作、及び、各コンピュータ１０がストレスデータを算出する動作について説明する。なお、図４は、複数のコンピュータ１０の起動時にストレスデータの交換を行う例となっている。また、コンピュータ１０は、起動時に、他の全てのコンピュータ１０との間で図４の動作を行うが、図４は、説明の簡略化のために、コンピュータ１０−１，１０−２間の１対１の動作を示している。
【００２２】
コンピュータ１０−１は、起動時に、コンピュータ１０−１の不揮発性メモリ１０４にストレスデータ１０５として格納されているコンピュータ１０−１のストレスデータを、コンピュータ１０−２に対し、ＩＤ及び日付と共に送信する（ステップＳ１０１）。
コンピュータ１０−２は、コンピュータ１０−１から受信したコンピュータ１０−１のストレスデータを、ＩＤ及び日付と共に、コンピュータ１０−２のストレスデータテーブル１０６に書き込む（ステップＳ１０２）。
【００２３】
続いて、コンピュータ１０−２は、コンピュータ１０−２の不揮発性メモリ１０４にストレスデータ１０５として格納されているコンピュータ１０−２のストレスデータを、コンピュータ１０−１に対し、ＩＤ及び日付と共に送信する（ステップＳ１０３）。
コンピュータ１０−１は、コンピュータ１０−２から受信したコンピュータ１０−２のストレスデータを、ＩＤ及び日付と共に、コンピュータ１０−１のストレスデータテーブル１０６に書き込む（ステップＳ１０４）。
【００２４】
なお、コンピュータ１０−１は、コンピュータ１０−１のストレスデータについては、ステップＳ１０１でコンピュータ１０−２に送信したストレスデータを、ＩＤ及び日付と共に、コンピュータ１０−１のストレスデータテーブル１０６に書き込む。
また、コンピュータ１０−２は、コンピュータ１０−２のストレスデータについては、ステップＳ１０３でコンピュータ１０−１に送信したストレスデータを、ＩＤ及び日付と共に、コンピュータ１０−２のストレスデータテーブル１０６に書き込む。
【００２５】
また、コンピュータ１０−１，１０−２は、通信時間と書き込み時間の関係から、ストレスデータの交換を双方で先に行い、その後に、ストレスデータを書き込む形態としても良い。すなわち、まず、ステップＳ１０１，Ｓ１０３を実行し、その後に、ステップＳ１０２，Ｓ１０４を実行しても良い。
【００２６】
以降の通常の稼働中は、コンピュータ１０−１は、常にストレスデータを算出し、算出したストレスデータを、コンピュータ１０−１の不揮発性メモリ１０４に、ストレスデータ１０５として書き込む（ステップＳ１０５）。また、コンピュータ１０−２は、常にストレスデータを算出し、算出したストレスデータを、コンピュータ１０−２の不揮発性メモリ１０４に、ストレスデータ１０５として書き込む（ステップＳ１０６）。
【００２７】
なお、図４は、コンピュータ１０−１〜１０−Ｎが同時に起動し、同時に停止する例であったが、コンピュータ１０−１〜１０−Ｎが個別に起動し、個別に停止する場合には、コンピュータ１０は、起動時に、稼働している他のコンピュータ１０との間でのみ、図４の動作を行えば良い。
【００２８】
次に、図５を参照して、ストレスデータを検証する動作について説明する。なお、ストレスデータの検証は、全てのコンピュータ１０で行われるが、図５は、コンピュータ１０−１がストレスデータを検証する動作を示している。また、図５は、コンピュータ１０−１以外の他のコンピュータ１０として、コンピュータ１０−２〜１０−７が存在する例を示している。
【００２９】
コンピュータ１０−１は、コンピュータ１０−１が直近にコンピュータ１０−２〜１０−７に送信したコンピュータ１０−１のストレスデータを、コンピュータ１０−２〜１０−７に再度送信する。この動作は、コンピュータ１０−２〜１０−７でも行われている。このとき、コンピュータ１０−１〜１０−７が動作を行う順番に制約は無い。ただし、コンピュータシステムによっては、マスタとなるコンピュータ１０が、最初に上記の動作を行っても良い。
【００３０】
そのため、図５に示されるように、コンピュータ１０−１は、コンピュータ１０−２〜１０−７から直近に受信したコンピュータ１０−２〜１０−７のストレスデータを、コンピュータ１０−２〜１０−７から再度受信する。
【００３１】
コンピュータ１０−１は、再度受信したコンピュータ１０−２〜１０−７のストレスデータが、コンピュータ１０−１のストレスデータテーブル１０６に書き込まれているコンピュータ１０−２〜１０−７のストレスデータと不一致であるか否かを検証する。このとき、例えば、対比するストレスデータの値が、±１％〜１０％の範囲内にあれば、ストレスデータは一致すると判定しても良い。コンピュータ１０−１は、この検証結果を、全てのコンピュータ１０−２〜１０−７に対し、送信する。
【００３２】
コンピュータ１０−１は、ストレスデータが不一致となったコンピュータ１０の数が閾値以上であれば、コンピュータシステムはシステム異常であると判定し、その旨をシステム管理者、ユーザ等に通知する。この通知方法としては、システム異常を通知する画面をコンピュータ１０−１の表示部（不図示）に表示すること等が考えられるが、これには限定されない。
【００３３】
システム異常の判定方法としては、閾値を１とし、ストレスデータが不一致となったコンピュータ１０が１つでも発生した場合に、システム異常と判定する方法や、多数決でシステム異常を判定する方法（すなわち、ストレスデータが不一致となったコンピュータ１０の数の方が多い場合にシステム異常と判定）など複数の方法が考えられる。例えば、コンピュータシステムが完全に閉じたシステムである場合や、セキュリティ要求が高いシステムである場合は、ストレスデータが不一致となったコンピュータ１０が１つでも発生した場合に、システム異常と判定することが望ましいと考えられる。一方、コンピュータシステムが巨大でかつオープンなシステムである場合は、システム異常の閾値として、１以外の別の閾値を用いても良い。
【００３４】
次に、図６を参照して、図５の処理フローについて説明する。なお、図６は、コンピュータ１０−１〜１０−７の各々で行われるフローであるが、以下では、コンピュータ１０−１が処理主体である場合のフローについて説明する。
【００３５】
図６に示されるように、コンピュータ１０−１は、コンピュータ１０−１が直近にコンピュータ１０−２〜１０−７から受信したコンピュータ１０−２〜１０−７のストレスデータを、コンピュータ１０−２〜１０−７から再度受信する。そして、コンピュータ１０−１は、再度受信したコンピュータ１０−２〜１０−７のストレスデータが、コンピュータ１０−１のストレスデータテーブル１０６に書き込まれているコンピュータ１０−２〜１０−７のストレスデータと不一致であるか否かを検証する（ステップＳ２０１）。コンピュータ１０−１は、この検証結果を、全てのコンピュータ１０−２〜１０−７に対し、送信する。
【００３６】
次に、コンピュータ１０−１は、ストレスデータが不一致となったコンピュータ１０の数を閾値と比較する（ステップＳ２０２）。コンピュータ１０−１は、閾値未満であれば、コンピュータシステムは正常と判定し（ステップＳ２０４）、そのまま動作を継続する。一方、コンピュータ１０−１は、閾値以上であれば、コンピュータシステムはシステム異常であると判定し（ステップＳ２０３）、その旨をシステム管理者、ユーザ等に通知する。
【００３７】
なお、図５及び図６においては、ストレスデータの検証は、複数のコンピュータ１０の全てで行われるものとして説明したが、これには限定されない。複数のコンピュータ１０のうち信頼性の高い、少なくとも１つのコンピュータ１０のみが、ストレスデータの検証を行い、その検証結果を他のコンピュータ１０に送信する構成であっても良い。
【００３８】
＜実施の形態１の効果＞
上述のように本実施の形態１によれば、複数のコンピュータ１０の各々は、自身のコンピュータ１０のストレスデータを算出し、他のコンピュータ１０から、他のコンピュータ１０のストレスデータを取得してストレスデータテーブル１０６に書き込む。このようにして、複数のコンピュータ１０でストレスデータを共有する。
【００３９】
また、複数のコンピュータ１０のうち少なくとも１つのコンピュータ１０は、他のコンピュータ１０から直近に取得した他のコンピュータ１０のストレスデータを再取得し、再取得したストレスデータが、ストレスデータテーブル１０６に書き込まれている他のコンピュータ１０のストレスデータと不一致であるかを検証し、その検証結果に基づいてコンピュータシステムのシステム異常を検出する。
【００４０】
これにより、悪意を持った攻撃者がコンピュータ１０のデータを改ざんしても、これに起因したコンピュータシステムのシステム異常を検出することができる。
したがって、ＬＳＩ１００に固有の不可逆的なストレスデータを有効利用して、コンピュータシステムのシステム異常を検出することができる。
【００４１】
＜実施の形態２＞
システムの一部のパーツが故障した場合、システムの全てを交換するのではなく、そのパーツを交換してシステムを維持することは、ごく当たり前のメンテナンスとなる。
例えば、実施の形態１のように、複数のコンピュータ１０を含むコンピュータシステムにおいては、コンピュータ１０が故障した場合、故障したコンピュータ１０を交換して、システムを維持するというメンテナンスを行う。
本実施の形態２は、複数のコンピュータ１０を含むコンピュータシステムにおいて、コンピュータ１０の交換に適した幾つかの態様を提供するものである。
【００４２】
＜実施の形態２の態様１＞
複数のコンピュータ１０を含むコンピュータシステムにおいて、コンピュータ１０の交換を行う場合、正規のコンピュータ１０に正当に交換されたのか、悪意を持った非正規のコンピュータ１０に不正に交換されたのかを見分ける手法が必要となる。
本実施の形態２の態様１は、非正規のコンピュータ１０への不正な交換であるか否かを見分けるものである。
【００４３】
図７を参照して、本実施の形態２の態様１に係るコンピュータシステムについて説明する。なお、図７は、コンピュータシステムは、複数のコンピュータ１０−１〜１０−３，１０−Ｚを含んでおり、コンピュータ１０−Ｚに故障が発生した例である。
【００４４】
図７に示されるように、コンピュータ１０−１〜１０−３は、コンピュータ１０−Ｚに故障が発生したことを認識する（ステップＳ３０１）。コンピュータ１０−Ｚの故障を認識する方法は、任意の方法で良い。例えば、図５及び図６に示した検証において、コンピュータ１０−Ｚのストレスデータが不一致であった場合に、故障と判断しても良いし、コンピュータ１０−Ｚとの通信が不能であった場合に、故障と判断しても良い。
【００４５】
以降に、コンピュータ１０−Ｚがコンピュータ１０−Ｙに交換されると、コンピュータ１０−１〜１０−３は、交換後のコンピュータ１０−Ｙから、コンピュータ１０−Ｙのストレスデータを読出す（ステップＳ３０２）。コンピュータ１０−Ｙのストレスデータを読出す方法は、任意の方法で良い。例えば、コンピュータ１０−Ｙの最初の起動時に、コンピュータ１０−Ｙとの間で図４に示した動作によりストレスデータを交換しても良い。
【００４６】
コンピュータ１０−１〜１０−３は、交換後のコンピュータ１０−Ｙのストレスデータが初期値であれば、コンピュータ１０−Ｙは、正規のコンピュータ１０であり、正当に交換されたものであると判断する。
【００４７】
コンピュータ１０−１〜１０−３は、コンピュータ１０−Ｙが正当に交換されたものであると判断した後に、ストレスデータテーブル１０６を更新する。このとき、ストレスデータテーブル１０６において、交換前のコンピュータ１０−Ｚのストレスデータを消去して上書きしても良いし、交換前のコンピュータ１０−Ｚとは別に交換後のコンピュータ１０−Ｙのエントリも生成し、そのエントリにコンピュータ１０−Ｙのストレスデータを書き込んでも良い。どちらの更新方法を選択するかは、コンピュータ１０のメモリ資源に応じて、任意に選択可能である。
【００４８】
次に、図８を参照して、図７の各コンピュータ１０における処理フローについて説明する。なお、図８は、コンピュータ１０−１〜１０−３の各々で行われるフローであるが、以下では、コンピュータ１０−１が処理主体である場合のフローについて説明する。
【００４９】
図８に示されるように、まず、コンピュータ１０−１は、コンピュータ１０−Ｚに故障が発生したことを認識する（ステップＳ４０１）。
すると、コンピュータ１０−１は、以降の任意のタイミングで、コンピュータ１０−Ｚが設置されていた場所にあるコンピュータ１０のストレスデータを読出す（ステップＳ４０２）。
【００５０】
次に、コンピュータ１０−１は、ステップＳ４０２で読出したストレスデータが初期値であるか否かを確認する（ステップＳ４０３）。コンピュータ１０−１は、初期値であれば、コンピュータ１０−Ｚは正規のコンピュータ１０（ここでは、コンピュータ１０−Ｙ）に正当に交換されたと判断する（ステップＳ４０５）。そして、コンピュータ１０−１は、ストレスデータテーブル１０６を更新する。
【００５１】
一方、コンピュータ１０−１は、初期値でなければ、続いて、ステップＳ４０２で読出したストレスデータが、コンピュータ１０−１のストレスデータテーブル１０６に書き込まれている交換前のコンピュータ１０−Ｚのストレスデータであるか否かを確認する（ステップＳ４０４）。コンピュータ１０−１は、交換前のコンピュータ１０−Ｚのストレスデータであれば、まだ交換は行われておらず、コンピュータシステムはシステム異常のままであると判断する（ステップＳ４０６）。
一方、コンピュータ１０−１は、交換前のコンピュータ１０−Ｚのストレスデータでなければ、交換後のコンピュータ１０は不正に交換された非正規のコンピュータ１０であると判断する（ステップＳ４０７）。
【００５２】
上述のように本実施の形態２の態様１によれば、複数のコンピュータ１０のいずれかが交換された場合、交換後のコンピュータ１０以外のコンピュータ１０は、交換後のコンピュータ１０のストレスデータを読出し、読出したストレスデータが初期値でなく、かつ、交換前のコンピュータ１０のストレスデータでもなければ、交換後のコンピュータ１０は、
非正規のコンピュータ１０であり、不正な交換であると判断する。
【００５３】
これにより、コンピュータ１０の交換が行われた場合に、悪意を持った非正規のコンピュータ１０への不正な交換であるか否かを見分けることができる。そのため、悪意を持った攻撃者がコンピュータ１０そのものを非正規のコンピュータ１０に交換しても、不正な交換であると判断することができる。また、コンピュータ１０を、新品と偽って中古品のコンピュータ１０に交換されるといった不正な交換も、見分けることができる。
【００５４】
＜実施の形態２の態様２＞
本実施の形態２の態様１においては、コンピュータ１０−Ｚを、中古であるが正規のコンピュータ１０−Ｙに正当に交換した場合、コンピュータ１０−Ｙのストレスデータは初期値ではないため、図８のステップＳ４０７で示したように、不正な交換であると判断されてしまう。
本実施の形態２の態様２は、中古であるが正規のコンピュータ１０への正当な交換を、不正な交換であると誤判断してしまうことを抑制するものである。ただし、本実施の形態２の態様２は、コンピュータ１０を、新品のコンピュータ１０に交換するときに適用しても良い。
【００５５】
図９を参照して、本実施の形態２の態様２に係るコンピュータシステムについて説明する。なお、図９は、図７と同様に、コンピュータシステムは、複数のコンピュータ１０−１〜１０−３，１０−Ｚを含んでおり、コンピュータ１０−Ｚに故障が発生し、コンピュータ１０−Ｚを正規のコンピュータ１０−Ｙに正当に交換する例である。
【００５６】
図９に示されるように、本実施の形態２の態様２に係るコンピュータシステムは、上述の態様１に係るコンピュータシステムと比較して、メンテナンスツール２０を追加した点が異なる。
【００５７】
メンテナンスツール２０は、コンピュータシステムのメンテナンスを行うためのメンテナンス装置の一例である。本態様２では、メンテナンスツール２０は、コンピュータ１０−Ｚが、正規のコンピュータ１０−Ｙに正当に交換された場合、その旨を他のコンピュータ１０−１〜１０−３の各々に通知する。
【００５８】
以下では、図１０を参照して、本実施の形態２の態様２に係るコンピュータシステムにおいて、コンピュータ１０の正当な交換が行われた場合の具体的な動作について説明する。なお、図１０は、メンテナンスツール２０が、コンピュータ１０−Ｚが正規のコンピュータ１０−Ｙに正当に交換された旨を、他のコンピュータ１０−１〜１０−３の各々に通知した後の動作を示している。
【００５９】
図１０に示されるように、まず、メンテナンスツール２０経由のＲｏｏｔ権限で、コンピュータ１０−１〜１０−３がメンテナンスツール２０の認証を行い、認証完了後に、コンピュータ１０−１〜１０−３，１０−Ｚでストレスデータの共有を行う。
【００６０】
具体的には、まず、コンピュータ１０−１〜１０−３は、チャレンジをメンテナンスツール２０に送信し（ステップＳ５０１）、メンテナンスツール２０は、レスポンスをコンピュータ１０−１〜１０−３に送信する（ステップＳ５０２）。そして、コンピュータ１０−１〜１０−３は、ステップＳ５０１で送信したチャレンジ及びステップＳ５０２で受信したレスポンスを用いて、メンテナンスツール２０の認証を行い、その認証結果をメンテナンスツール２０に送信する（ステップＳ５０３）。なお、図１０においては、認証方式として、一般的なチャレンジ＆レスポンスの認証方式を用いたが、その他の認証方式で認証を行っても良い。
【００６１】
次に、メンテナンスツール２０は、コンピュータ１０−１〜１０−３，１０−Ｙから、その時点で不揮発性メモリ１０４にストレスデータ１０５として格納されているストレスデータを、ＩＤ及び日付と共に読出し（ステップＳ５０４）、読出したストレスデータを、ＩＤ及び日付と共に、コンピュータ１０−１〜１０−３，１０−Ｙの各々のストレスデータテーブル１０６に書き込む（ステップＳ５０５）。なお、本態様３においては、ストレスデータの書き込みが正しく完了したかどうかを確認するプロトコル等は、本態様３の本質的な事項ではないため省略している。
【００６２】
上述のように本実施の形態２の態様２によれば、複数のコンピュータ１０のいずれかが、正規のコンピュータ１０に正当に交換された場合、メンテナンスツール２０は、認証完了後に、交換後のコンピュータ１０を含む複数のコンピュータ１０からストレスデータを読出し、読出したストレスデータを、複数のコンピュータ１０の各々のストレスデータテーブル１０６に書き込む。
【００６３】
これにより、中古であるが正規のコンピュータ１０に正当に交換された場合に、正規のコンピュータ１０への交換を、不正な交換であると誤判断してしまうことを抑制することができる。また、コンピュータシステムの内部において、コンピュータ１０の交換を安全に行うことができる。
【００６４】
＜実施の形態２の態様３＞
上述した態様２によれば、メンテナンスツール２０と複数のコンピュータ１０との間で認証及びストレスデータの書き込みを行っていた。
これに対して、本実施の形態２の態様３は、複数のコンピュータ１０のうちマスタとなるコンピュータ１０とメンテナンスツール２０との間で認証を行い、マスタとなるコンピュータ１０がスレーブとなるコンピュータ１０にストレスデータの書き込みを行うものである。
【００６５】
図１１を参照して、本実施の形態２の態様３に係るコンピュータシステムについて説明する。
図１１に示されるように、本実施の形態２の態様３に係るコンピュータシステムにおいては、複数のコンピュータ１０−１〜１０−３，１０−Ｚのうちコンピュータ１０−１がマスタであり、その他のコンピュータ１０−２，１０−３，１０−Ｚがスレーブとなっている。そのため、メンテナンスツール２０にコンピュータ１０−１のみが接続され、コンピュータ１０−１にコンピュータ１０−２，１０−３，１０−Ｚが接続されている。なお、図１１は、図７と同様に、コンピュータ１０−Ｚに故障が発生し、コンピュータ１０−Ｚを正規のコンピュータ１０−Ｙに正当に交換する例である。
【００６６】
以下では、図１２を参照して、本実施の形態２の態様３に係るコンピュータシステムにおいて、コンピュータ１０の正当な交換が行われた場合の具体的な動作について説明する。なお、図１２は、メンテナンスツール２０が、コンピュータ１０−Ｚが正規のコンピュータ１０−Ｙに正当に交換された旨を、マスタとなるコンピュータ１０−１に通知した後の動作を示している。
【００６７】
図１２に示されるように、まず、メンテナンスツール２０経由のＲｏｏｔ権限で、マスタとなるコンピュータ１０−１がメンテナンスツール２０の認証を行い、認証完了後に、コンピュータ１０−１〜１０−３，１０−Ｚでストレスデータの共有を行う。ただし、これには限定されず、マスタとなるコンピュータ１０−１は、メンテナンスツール２０と認証を行うと同時に、スレーブとなるコンピュータ１０−２，１０−３，１０−Ｚと認証を行っても良い。
【００６８】
具体的には、まず、マスタとなるコンピュータ１０−１は、チャレンジをメンテナンスツール２０に送信し（ステップＳ６０１）、メンテナンスツール２０は、レスポンスをコンピュータ１０−１に送信する（ステップＳ６０２）。そして、コンピュータ１０−１は、ステップＳ６０１で送信したチャレンジ及びステップＳ６０２で受信したレスポンスを用いて、メンテナンスツール２０の認証を行い、その認証結果をメンテナンスツール２０に送信する（ステップＳ６０３）。なお、本態様３においても、認証方式は、チャレンジ＆レスポンスの認証方式以外の認証方式で認証を行っても良い。
【００６９】
次に、マスタとなるコンピュータ１０−１は、スレーブとなるコンピュータ１０−２，１０−３，１０−Ｙから、その時点で不揮発性メモリ１０４にストレスデータ１０５として格納されているストレスデータを、ＩＤ及び日付と共に読出す（ステップＳ６０４）。そして、コンピュータ１０−１は、読出したストレスデータ及びコンピュータ１０−１のストレスデータを、ＩＤ及び日付と共に、コンピュータ１０−２，１０−３，１０−Ｙの各々のストレスデータテーブル１０６に書き込むと共に、コンピュータ１０−１のストレスデータテーブル１０６にも書き込む（ステップＳ６０５）。なお、本態様３においても、ストレスデータの書き込みが正しく完了したかどうかを確認するプロトコル等は、省略している。
【００７０】
上述のように本実施の形態２の態様３によれば、複数のコンピュータ１０のいずれかが、正規のコンピュータ１０に正当に交換された場合、マスタとなるコンピュータ１０は、認証完了後に、交換後のコンピュータ１０を含む、スレーブとなる複数のコンピュータ１０からストレスデータを読出し、読出したストレスデータ及び自身のストレスデータを、スレーブとなる複数のコンピュータ１０の各々のストレスデータテーブル１０６に書き込むと共に、自身のストレスデータテーブル１０６に書き込む。
【００７１】
これにより、中古であるが正規のコンピュータ１０に正当に交換された場合に、正規のコンピュータ１０への交換を、不正な交換であると誤判断してしまうことを抑制することができる。また、コンピュータシステムの内部において、コンピュータ１０の交換を安全に行うことができる。
【００７２】
＜実施の形態２の態様４＞
複数のコンピュータ１０を含むコンピュータシステムにおいては、メンテナンス作業者が悪意を持った攻撃者となった場合、例えば、中古のコンピュータ１０のストレスデータを改ざんし、新品と偽って交換する可能性がある。
本実施の形態２の態様４は、コンピュータ１０が交換された場合、その交換されたコンピュータ１０のストレスデータが初期値に改ざんされているかどうかを、キャリブレーション補正係数を用いて確認するものである。
【００７３】
なお、本実施の形態２の態様４に係るコンピュータシステムは、構成自体は上述の態様１〜３のいずれかと同様で良い。すなわち、本態様４において、メンテナンスツール２０は必須の構成要素ではなく、メンテナンスツール２０の有無は任意で良い。
【００７４】
ＬＳＩ１００のストレスは、ＬＳＩ１００の製造バラつきによる揺らぎが生じる。そのため、ＬＳＩ１００のストレスデータを、システム異常の検出等のために用いる場合には、ＬＳＩ１００固有の変動要因を除外するため、キャリブレーションを実施する必要がある。キャリブレーションの方法は、本態様４の本質的な事項ではないため、詳細な説明は割愛するが、以下に一例を示す。
【００７５】
ＬＳＩ１００の製造出荷時には、複数の測定を実施し、温度や電圧の絶対値とセンサ１０３から導かれる温度や電圧の実センサ値とを比較し、実センサ値の補正を行う。その補正に用いるキャリブレーション補正係数は、ＬＳＩ１００毎に異なり、また、実使用を重ねると変動する。
【００７６】
そこで、メンテナンス等でコンピュータ１０が交換された場合には、交換後のコンピュータ１０の初期のキャリブレーション補正係数をコンピュータシステム内の他のコンピュータ１０と共有する。この共有方法は、任意の方法で良い。例えば、メンテナンスツール２０がキャリブレーション補正係数を他のコンピュータ１０に通知しても良いし、また、交換後のコンピュータ１０の最初の起動時に、他のコンピュータ１０が、図４に示した動作の中で、キャリブレーション補正係数を取得しても良い。
【００７７】
他のコンピュータ１０は、通常の稼働中の実センサ値を、交換後のコンピュータ１０の初期のキャリブレーション補正係数で補正したセンサ値が、期待値又はその期待値の許容値の範囲から外れた場合、交換後のコンピュータ１０のストレスデータは初期値に改ざんされており、交換後のコンピュータ１０は非正規のコンピュータ１０であると判断する。図１３に、センサ値の期待値及びその期待値の許容値の例を示す。
【００７８】
上述のように本実施の形態２の態様４によれば、複数のコンピュータ１０のいずれかが交換された場合、他のコンピュータ１０は、交換後のコンピュータ１０の初期のキャリブレーション補正係数を用いて、交換後のコンピュータ１０のストレスデータは初期値に改ざんされているか否かを判断する。
これにより、交換後のコンピュータ１０が、ストレスデータが初期値に改ざんされ、非正規のコンピュータ１０である場合に、不正な交換であると判断することができる。
【００７９】
＜実施の形態３＞
本実施の形態３は、上述した実施の形態１で示したように、複数のコンピュータ１０が、ＬＳＩ１００に固有のストレスデータを、ブロックチェーンを用いて互いに共有かつ検証する仕組みを、ストレスデータのＨＡＳＨ（ハッシュ）値を用いて実現するものである。なお、ブロックチェーン技術そのものは、本実施の形態の本質ではないため、ここでは言及しない。
【００８０】
なお、本実施の形態３に係るコンピュータシステムは、構成自体は上述の実施の形態１と同様で良い。すなわち、本実施の形態３において、メンテナンスツール２０は必須の構成要素ではなく、メンテナンスツール２０の有無は任意で良い。
【００８１】
ここで、図１４を参照して、本実施の形態３に係るストレスデータテーブル１０６について説明する。
図１４に示されるように、本実施の形態３に係るストレスデータテーブル１０６は、ＩＤ、ストレスデータ、及び、日付に追加して、ＨＡＳＨ値が追加されている。このＨＡＳＨ値は、一般的には、ストレスデータと日付と暗号鍵から生成されるが、コンピュータシステムのセキュリティ強度や暗号演算性能等によっては、ストレスデータと日付のみから生成されても良い。ただし、図１４のストレスデータテーブル１０６は、一例であって、これには限定されない。ストレスデータテーブル１０６には、ストレスデータの代わりに、ストレスデータの算出に用いる実ストレス値を書き込んでおき、ストレスデータの算出は外部で行っても良い。
【００８２】
以下、本実施の形態３に係るコンピュータシステムの動作について説明する。本実施の形態３においては、以下の動作例１又は動作例２のいずれの動作も実現可能である。
＜実施の形態３の動作例１＞
本実施の形態３の動作例１においては、コンピュータ１０は、例えば、起動時には、他のコンピュータ１０との間で、ストレスデータ及びＨＡＳＨ値を、ＩＤ及び日付と共に交換する。そして、コンピュータ１０は、自身のコンピュータ１０及び他のコンピュータ１０のストレスデータ及びＨＡＳＨ値を、ＩＤ及び日付と共に、自身のコンピュータ１０のストレスデータテーブル１０６に書き込む（図１４を参照）。
【００８３】
また、コンピュータ１０は、ストレスデータの検証時には、他のコンピュータ１０から直近に受信した他のコンピュータ１０のストレスデータ及びＨＡＳＨ値を、他のコンピュータ１０から再度受信する。そして、コンピュータ１０は、再度受信した他のコンピュータ１０のＨＡＳＨ値が、自身のコンピュータ１０のストレスデータテーブル１０６に書き込まれている他のコンピュータ１０のＨＡＳＨ値と不一致であるか否かを検証する。又は、コンピュータ１０は、自身のコンピュータ１０のストレスデータテーブル１０６に書き込まれている他のコンピュータ１０のストレスデータからＨＡＳＨ値の期待値を生成し、再度受信した他のコンピュータ１０のＨＡＳＨ値が、生成したＨＡＳＨ値の期待値と不一致であるか否かを検証する。なお、ＨＡＳＨ値の期待値の生成は、他のコンピュータ１０からストレスデータ及びＨＡＳＨ値を再度受信する直前に行っても良いし、それよりも前に予め行っておいても良い。
【００８４】
＜実施の形態３の動作例２＞
本実施の形態３の動作例２においては、コンピュータ１０は、例えば、起動時には、上述した実施の形態１と同様に、他のコンピュータ１０との間で、ストレスデータを、ＩＤ及び日付と共に交換する。そして、コンピュータ１０は、上述した実施の形態１と同様に、自身のコンピュータ１０及び他のコンピュータ１０のストレスデータを、ＩＤ及び日付と共に、自身のコンピュータ１０のストレスデータテーブル１０６に書き込む（図３を参照）。
【００８５】
また、コンピュータ１０は、ストレスデータの検証時には、他のコンピュータ１０から直近に受信した他のコンピュータ１０のストレスデータを再度受信すると共に、ストレスデータのＨＡＳＨ値を受信する。そして、コンピュータ１０は、自身のコンピュータ１０のストレスデータテーブル１０６に書き込まれている他のコンピュータ１０のストレスデータからＨＡＳＨ値の期待値を生成し、受信した他のコンピュータ１０のＨＡＳＨ値が、生成したＨＡＳＨ値の期待値と不一致であるか否かを検証する。なお、ＨＡＳＨ値の期待値の生成は、他のコンピュータ１０からＨＡＳＨ値を受信する直前に行っても良いし、それよりも前に予め行っておいても良い。
【００８６】
上述のように本実施の形態３によれば、複数のコンピュータ１０の各々は、ストレスデータの検証時には、他のコンピュータ１０のストレスデータのＨＡＳＨ値を基に、ストレスデータの検証を行う。
これにより、上述した実施の形態１で示したように、複数のコンピュータ１０が、ＬＳＩ１００に固有のストレスデータを、ブロックチェーンを用いて互いに共有かつ検証する仕組みを、ストレスデータのＨＡＳＨ値を用いて実現することができる。
【００８７】
＜実施の形態４＞
本実施の形態４に係るコンピュータシステムは、上述した実施の形態１に係るコンピュータシステムに相当するサブシステムを複数設けたものである。
以下、図１５を参照して、本実施の形態４に係るコンピュータシステムの構成について説明する。なお、図１５は、上述した実施の形態１に係るコンピュータシステムに相当するサブシステムを２つ設けた例である。
【００８８】
図１５に示されるように、本実施の形態４に係るコンピュータシステムは、上述した実施の形態１に係るコンピュータシステムに相当する２つのサブシステム１１０Ａ，１１０Ｂと、サブシステム１１０Ａ，１１０Ｂに接続されるサーバ３０と、を備えている。
サブシステム１１０Ａは、相互に接続された複数のコンピュータ１０Ａ−１〜１０Ａ−Ｎ（Ｎは２以上の自然数）を含み、サブシステム１１０Ｂは、相互に接続された複数のコンピュータ１０Ｂ−１〜１０Ｂ−Ｍ（Ｍは２以上の自然数）を含む。以下、どのコンピュータ１０Ａ−１〜１０Ａ−Ｎであるかを特定しない場合は、コンピュータ１０Ａと称することがある。同様に、コンピュータ１０Ｂ−１〜１０Ｂ−Ｍは、コンピュータ１０Ｂと称することがある。
【００８９】
上述した実施の形態１においては、複数のコンピュータ１０の各々が、ストレスデータの検証を行っていた。
これに対して本実施の形態４においては、サーバ３０が、コンピュータ１０が備えていたストレスデータテーブル１０６と同様のストレスデータテーブルを備えており、コンピュータ１０が行っていたストレスデータの検証を行う。
【００９０】
具体的には、サーバ３０は、複数のコンピュータ１０Ａ及び複数のコンピュータ１０Ｂから、例えば、起動時に、ストレスデータを受信し、受信したストレスデータをストレスデータテーブルに書き込む。なお、ストレスデータの算出をコンピュータ１０Ａ及びコンピュータ１０Ｂの外部で行う場合は、その外部の外部装置からストレスデータを受信しても良い。
【００９１】
そして、サーバ３０は、ストレスデータの検証時に、複数のコンピュータ１０Ａ及び複数のコンピュータ１０Ｂの各々から直近に受信したストレスデータを再度受信し、再度受信したストレスデータが、ストレスデータテーブルに書き込まれているストレスデータと不一致であるか否かを検証する。
【００９２】
サーバ３０は、複数のコンピュータ１０Ａ及び複数のコンピュータ１０Ｂの各々のストレスデータの検証結果を、複数のコンピュータ１０Ａ及び複数のコンピュータ１０Ｂの全てに送信する。
【００９３】
また、サーバ３０は、サブシステム１１０Ａ内でストレスデータが不一致となったコンピュータ１０Ａの数が閾値以上であれば、サブシステム１１０Ａはシステム異常であると判定し、その旨をサブシステム１１０Ａ，１１０Ｂのシステム管理者、ユーザ等に通知する。また、サーバ３０は、サブシステム１１０Ｂ内でストレスデータが不一致となったコンピュータ１０Ｂの数が閾値以上であれば、サブシステム１１０Ｂはシステム異常であると判定し、その旨をサブシステム１１０Ａ，１１０Ｂのシステム管理者、ユーザ等に通知する。
【００９４】
そのため、本実施の形態４においては、コンピュータ１０Ａ，１０Ｂは、コンピュータ１０が備えていたストレスデータテーブル１０６と同様のストレスデータテーブルを備える必要はない。
【００９５】
上述のように本実施の形態４によれば、サーバ３０は、サブシステム１１０Ａ内の複数のコンピュータ１０Ａ及びサブシステム１１０Ｂ内の複数のコンピュータ１０Ｂの各々のストレスデータを基に、サブシステム１１０Ａ，１１０Ｂのシステム異常を検出する。
これにより、コンピュータシステムが複数のサブシステム１１０Ａ，１１０Ｂを備える場合にも、複数のサブシステム１１０Ａ，１１０Ｂのシステム異常を検出することができる。
【００９６】
＜実施の形態１〜３の概念＞
次に、図１６を参照して、上述した実施の形態１〜３に係るＬＳＩ１００を概念的に示した半導体装置のブロック図を示す。この半導体装置は、コンピュータシステムを構成する複数の半導体装置のうちの１つである。
図１６に示す半導体装置は、取得部１５１、記憶部１５２、及び、検出部１５３を備える。
【００９７】
取得部１５１は、他の半導体装置に固有の不可逆的なデータを取得する。このデータは、例えば、上述した実施の形態に係るストレスデータである。取得部１５１は、直近に取得した他の半導体装置のデータをテーブル１５４に書き込んでも良い。図１６に示す半導体装置は、自身の半導体装置のデータを算出する算出部を備えても良い。この場合、算出部は、例えば、カウンタ１０２及びセンサ１０３で実現される。又は、半導体装置のデータは、外部装置で算出しても良い。また、取得部１５１は、自身の半導体装置のデータを算出部又は外部装置から取得しても良いし、取得したデータをテーブル１５４に書き込んでも良い。また、取得部１５１は、他の半導体装置のデータを、他の半導体装置又は外部装置から取得しても良い。また、取得部１５１は、自身の半導体装置の起動時又は一定間隔で、他の半導体装置のとの間でデータを交換しても良い。取得部１５１は、例えば、ＣＰＵ１０１で実現される。
記憶部１５２は、自身の半導体装置のデータ、及び、テーブル１５４を格納する。記憶部１５２は、例えば、不揮発性メモリ１０４で実現される。
【００９８】
検出部１５３は、直近に取得した他の半導体装置のデータを再取得し、再取得したデータが、直近に取得した他の半導体装置のデータと不一致であるか否かを検証し、その検証結果に基づいてコンピュータシステムの異常を検出する。検出部１５３は、直近に取得した他の半導体装置のデータがテーブル１５４に書き込まれている場合、再取得したデータが、テーブル１５４に書き込まれている他の半導体装置のデータと不一致であるか否かを検証しても良い。また、検出部１５３は、データが不一致であった他の半導体装置の数が閾値以上である場合に、コンピュータシステムが異常であると判定しても良い。また、検出部１５３は、他の半導体装置のデータのハッシュ値を用いて、上述の検証を行っても良い。検出部１５３は、例えば、ＣＰＵ１０１で実現される。
【００９９】
なお、取得部１５１は、複数の半導体装置のいずれかが交換された場合、交換後の半導体装置からデータを取得しても良い。また、検出部１５３は、交換後の半導体装置のデータが、初期値でなく、かつ、テーブル１５４に書き込まれている交換前の半導体装置のデータでもない場合に、上述した交換は不正な交換であると判定しても良い。
【０１００】
また、図１６に示す半導体装置は、メンテナンス装置から、複数の半導体装置のいずれかが正当に交換された旨の通知を受けると、メンテナンス装置の認証を行う認証部（不図示）をさらに備えても良い。この場合、認証の完了後に、テーブル１５４には、交換後の半導体装置を含む複数の半導体装置の各々のデータがメンテナンス装置により書き込まれても良い。
【０１０１】
また、図１６に示す半導体装置は、マスタである場合、メンテナンス装置から、複数の半導体装置のいずれかが正当に交換された旨の通知を受けると、メンテナンス装置の認証を行う認証部（不図示）をさらに備えても良い。この場合、取得部１５１は、認証の完了後に、交換後の半導体装置を含む複数の半導体装置の各々のデータを取得し、複数の半導体装置の各々のデータを、複数の半導体装置の各々のテーブル１５４に書き込んでも良い。
【０１０２】
また、図１６に示す半導体装置が算出部を備える場合、算出部は、実センサ値を補正係数で補正し、補正後のセンサ値を用いてデータを算出しても良い。また、取得部１５１は、複数の半導体装置のいずれかが交換された場合、交換後の半導体装置から上述した補正係数を取得しても良い。また、検出部１５３は、交換後の半導体装置の補正係数で補正した補正後のセンサ値が許容範囲外にある場合に、交換後の半導体装置は非正規な半導体装置であると判定しても良い。
【０１０３】
＜実施の形態４の概念＞
次に、図１７を参照して、上述した実施の形態４に係るサーバ３０を概念的に示したサーバのブロック図を示す。このサーバは、各々が複数の半導体装置を含む複数のサブシステムに接続される。
図１７に示すサーバは、取得部３０１、記憶部３０２、及び、検出部３０３を備える。
【０１０４】
取得部３０１は、複数のサブシステムの各々の複数の半導体装置の各々に固有の不可逆的なデータを取得する。このデータは、例えば、上述した実施の形態に係るストレスデータである。取得部３０１は、直近に取得した複数のサブシステムの各々の複数の半導体装置の各々のデータをテーブル３０４に書き込んでも良い。また、取得部３０１は、複数のサブシステムの各々の複数の半導体装置の各々の起動時又は一定間隔で、データを取得しても良い。
記憶部３０２は、テーブル３０４を格納する。
【０１０５】
検出部３０３は、直近に取得した複数のサブシステムの各々の複数の半導体装置の各々のデータを再取得し、再取得したサブシステムの半導体装置のデータが、直近に取得した、その半導体装置のデータと不一致であるか否かを検証し、その検証結果に基づいて、そのサブシステムの異常を検出する。検出部３０３は、直近に取得した複数のサブシステムの各々の複数の半導体装置の各々のデータがテーブル３０４に書き込まれている場合、再取得したサブシステムの半導体装置のデータが、テーブル３０４に書き込まれている、その半導体装置のデータと不一致であるか否かを検証しても良い。また、検出部３０３は、サブシステムの複数の半導体装置のうちデータが不一致であった半導体装置の数が閾値以上である場合に、そのサブシステムが異常であると判定しても良い。
【０１０６】
なお、図１６及び図１７に記載される各要素は、ハードウェア的には、ＣＰＵ、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
【０１０７】
また、上述のプログラムは、様々なタイプの非一時的なコンピュータ可読媒体を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）、ＣＤ−Ｒ（CD-Recordable）、ＣＤ−Ｒ／Ｗ（CD-ReWritable）、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（Random Access Memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体によってコンピュータに供給されても良い。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【０１０８】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【０１０９】
例えば、上述の実施の形態では、半導体装置に固有の不可逆的なデータの例として、ストレスデータを挙げたが、これには限定されない。半導体装置に固有の不可逆的なデータは、例えば、半導体装置が備える不揮発性メモリの書き込み回数を積算したデータ等であっても良い。
【０１１０】
上記の実施の形態や実施例の一部または全部は、以下の付記のようにも記載され得るが、以下には限定されない。
（付記１）
コンピュータシステムに含まれる複数の半導体装置のうちの１つの半導体装置の制御方法であって、
他の半導体装置に固有の不可逆的なデータを取得し、
直近に取得した他の半導体装置の前記データを再取得し、再取得した他の半導体装置の前記データが、直近に取得した当該他の半導体装置の前記データと不一致であるか否かを検証し、当該検証結果に基づいて前記コンピュータシステムの異常を検出する、
半導体装置の制御方法。
（付記２）
各々が複数の半導体装置を含む複数のサブシステムに接続されるサーバであって、
前記複数のサブシステムの各々の前記複数の半導体装置の各々に固有の不可逆的なデータを取得する取得部と、
直近に取得した前記複数のサブシステムの各々の前記複数の半導体装置の各々の前記データを再取得し、再取得したサブシステムの半導体装置の前記データが、直近に取得した当該半導体装置の前記データと不一致であるか否かを検証し、当該検証結果に基づいて当該サブシステムの異常を検出する検出部と、
を備える、サーバ。
（付記３）
前記取得部は、
直近に取得した前記複数のサブシステムの各々の前記複数の半導体装置の各々の前記データをテーブルに書き込み、
前記検出部は、
直近に取得した前記複数のサブシステムの各々の前記複数の半導体装置の各々の前記データを再取得し、再取得したサブシステムの半導体装置の前記データが、前記テーブルに書き込まれている当該半導体装置の前記データと不一致であるか否かを検証し、当該検証結果に基づいて当該サブシステムの異常を検出する、
付記２に記載のサーバ。
（付記４）
前記取得部は、
前記複数のサブシステムの各々の前記複数の半導体装置の各々の起動時又は一定間隔で、前記データを取得する、
付記３に記載のサーバ。
（付記５）
前記検出部は、
前記サブシステムの前記複数の半導体装置のうち前記データが不一致であった半導体装置の数が閾値以上である場合に、当該サブシステムが異常であると判定する、
付記３に記載のサーバ。
（付記６）
各々が複数の半導体装置を含む複数のサブシステムと、前記複数のサブシステムに接続されるサーバと、を備えるコンピュータシステムであって、
前記サーバは、
前記複数のサブシステムの各々の前記複数の半導体装置の各々に固有の不可逆的なデータを取得する取得部と、
直近に取得した前記複数のサブシステムの各々の前記複数の半導体装置の各々の前記データを再取得し、再取得したサブシステムの半導体装置の前記データが、直近に取得した当該半導体装置の前記データと不一致であるか否かを検証し、当該検証結果に基づいて当該サブシステムの異常を検出する検出部と、
を備える、コンピュータシステム。
（付記７）
前記取得部は、
直近に取得した前記複数のサブシステムの各々の前記複数の半導体装置の各々の前記データをテーブルに書き込み、
前記検出部は、
直近に取得した前記複数のサブシステムの各々の前記複数の半導体装置の各々の前記データを再取得し、再取得したサブシステムの半導体装置の前記データが、前記テーブルに書き込まれている当該半導体装置の前記データと不一致であるか否かを検証し、当該検証結果に基づいて当該サブシステムの異常を検出する、
付記６に記載のコンピュータシステム。
（付記８）
前記取得部は、
前記複数のサブシステムの各々の前記複数の半導体装置の各々の起動時又は一定間隔で、前記データを取得する、
付記７に記載のコンピュータシステム。
（付記９）
前記検出部は、
前記サブシステムの前記複数の半導体装置のうち前記データが不一致であった半導体装置の数が閾値以上である場合に、当該サブシステムが異常であると判定する、
付記７に記載のコンピュータシステム。
（付記１０）
各々が複数の半導体装置を含む複数のサブシステムに接続されるサーバの制御方法であって、
前記複数のサブシステムの各々の前記複数の半導体装置の各々に固有の不可逆的なデータを取得し、
直近に取得した前記複数のサブシステムの各々の前記複数の半導体装置の各々の前記データを再取得し、再取得したサブシステムの半導体装置の前記データが、直近に取得した当該半導体装置の前記データと不一致であるか否かを検証し、当該検証結果に基づいて当該サブシステムの異常を検出する、
サーバの制御方法。
【符号の説明】
【０１１１】
１０−１〜１０−Ｎ  コンピュータ
１０Ａ−１〜１０Ａ−Ｎ  コンピュータ
１０Ｂ−１〜１０Ｂ−Ｍ  コンピュータ
１００  ＬＳＩ
１０１  ＣＰＵ
１０２  カウンタ
１０３  センサ
１０４  不揮発性メモリ
１０５  ストレスデータ
１０６  ストレスデータテーブル
１１０Ａ，１１０Ｂ  サブシステム
１５１  取得部
１５２  記憶部
１５３  検出部
１５４  テーブル
２０  メンテナンスツール
３０  サーバ
３０１  取得部
３０２  記憶部
３０３  検出部
３０４  テーブル
【図１】
2020042416.tif 000003
【図２】
2020042416.tif 000004
【図３】
2020042416.tif 000005
【図４】
2020042416.tif 000006
【図５】
2020042416.tif 000007
【図６】
2020042416.tif 000008
【図７】
2020042416.tif 000009
【図８】
2020042416.tif 000010
【図９】
2020042416.tif 000011
【図１０】
2020042416.tif 000012
【図１１】
2020042416.tif 000013
【図１２】
2020042416.tif 000014
【図１３】
2020042416.tif 000015
【図１４】
2020042416.tif 000016
【図１５】
2020042416.tif 000017
【図１６】
2020042416.tif 000018
【図１７】
2020042416.tif 000019