(57)【要約】  ＯＳ及び実行環境が動作する複数の演算装置と、複数の演算装置で共有される共有周辺装置とを有する情報処理装置に、演算装置で発生した故障を隠蔽する故障隠蔽装置を備える。故障隠蔽装置は、故障が発生した演算装置に代わって該演算装置で動作していたＯＳ及び実行環境で動作する代替演算装置を決定し、故障が発生した演算装置で動作していたＯＳ及び実行環境を代替演算装置による動作へ切り替えると共に、故障が発生した演算装置で使用している共有資源を代替演算装置で使用可能に切り替える。
2008044423.tif 000002
【特許請求の範囲】
【請求項１】
ＯＳ及びアプリケーションを実行するための実行環境が動作する複数の演算装置と、
前記複数の演算装置で共有される共有周辺装置と、
を有する情報処理装置であって、
前記複数の演算装置のいずれかで故障が発生すると、該故障が発生した演算装置に代わって該演算装置で動作していたＯＳ及び実行環境で動作する代替演算装置を決定し、前記故障が発生した演算装置で動作していたＯＳ及び実行環境を前記代替演算装置による動作へ切り替えると共に、前記故障が発生した演算装置で使用している共有資源を前記代替演算装置で使用可能に切り替える、前記演算装置で発生した故障を隠蔽するための故障隠蔽装置を有する情報処理装置。
【請求項２】
前記故障隠蔽装置は、
所定時間の経過、ＯＳや実行環境の優先度、ユーザからの切り替え指示、イベントの発生のようなトリガー条件に基づき、前記故障が発生した演算装置で動作するＯＳ及び実行環境を他の演算装置で動作するように切り替える請求項１記載の情報処理装置。
【請求項３】
前記故障隠蔽装置は、
前記演算装置の故障を検出すると、該演算装置が備えるキャッシュメモリで保持しているデータをメインメモリへ退避させる請求項２記載の情報処理装装置。
【請求項４】
前記故障隠蔽装置が、
前記ＯＳに含まれるプログラムにしたがって前記演算装置が処理を実行することで実現される請求項１から３のいずれか１項記載の情報処理装置。
【請求項５】
前記演算装置は、
少なくとも２つの動作モードを備え、
前記故障隠蔽装置が、
前記２つのＣＰＵモードのうちの一方の動作モードにより、前記ＯＳに含まれるプログラムにしたがって前記演算装置が処理を実行することで実現される請求項１から３のいずれか１項記載の情報処理装置。
【請求項６】
ＯＳ及びアプリケーションを実行するための実行環境が動作する複数の演算装置のいずれかで発生した故障を隠蔽するための故障隠蔽装置であって、
前記故障が発生した演算装置を検出する故障検出部と、
前記故障検出部から故障が発生した演算装置を示す情報を受け取ると、該故障が発生した演算装置に代わって該演算装置で動作していたＯＳ及び実行環境で動作する代替演算装置を決定し、前記代替演算装置による前記ＯＳ及び前記実行環境の動作スケジュールを管理するスケジュール部と、
前記故障が発生した演算装置の動作を停止させる故障ＣＰＵ停止部と、
前記複数の演算装置で共有される共有周辺装置のうち、前記故障が発生した演算装置で使用していた共有周辺装置を前記代替演算装置で使用可能にする共有資源制御部と、
を有する故障隠蔽装置。
【請求項７】
前記スケジュール部は、
所定時間の経過、ＯＳや実行環境の優先度、ユーザからの切り替え指示、イベントの発生のようなトリガー条件に基づき、前記故障が発生した演算装置で動作するＯＳ及び実行環境が前記代替演算装置で動作するように、前記故障ＣＰＵ停止部及び前記共有資源制御部へ指示する請求項６記載の故障隠蔽装置。
【請求項８】
前記故障ＣＰＵ停止部は、
前記故障が発生した演算装置が備えるキャッシュメモリで保持しているデータをメインメモリへ退避させる請求項７記載の故障隠蔽装置。
【請求項９】
前記ＯＳに含まれるプログラムにしたがって前記演算装置が処理を実行することで実現される請求項６から８のいずれか１項記載の故障隠蔽装置。
【請求項１０】
ＯＳ及びアプリケーションを実行するための実行環境が動作する複数の演算装置と、
前記複数の演算装置で共有される共有周辺装置と、
を有し、前記演算装置で発生した故障を隠蔽するための情報処理装置の故障隠蔽方法であって、
前記複数の演算装置のいずれかで故障が発生すると、該故障が発生した演算装置に代わって該演算装置で動作していたＯＳ及び実行環境で動作する代替演算装置を決定し、
前記故障が発生した演算装置で動作していたＯＳ及び実行環境を前記代替演算装置による動作へ切り替えると共に、前記故障が発生した演算装置で使用している共有資源を前記代替演算装置で使用可能に切り替える故障隠蔽方法。
【請求項１１】
所定時間の経過、ＯＳや実行環境の優先度、ユーザからの切り替え指示、イベントの発生のようなトリガー条件に基づき、前記故障が発生した演算装置で動作するＯＳ及び実行環境を前記代替演算装置で動作するように切り替える請求項１０記載の故障隠蔽方法。
【請求項１２】
前記演算装置の故障を検出すると、該演算装置が備えるキャッシュメモリで保持しているデータをメインメモリへ退避させる請求項１１記載の故障隠蔽方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプロセッサで発生した故障をシステムソフトウェアから隠蔽する情報処理装置及びその故障隠蔽方法に関する。
【背景技術】
【０００２】
半導体集積回路装置は、その微細化の進展に伴って新たな故障モードに対するテスト技術や高集積度に対応した高速なテスト技術によって信頼性を保持してきた。しかしながら、近年はテストのコストが増大していることから、テスト技術の向上だけでなく、半導体集積回路装置を含むシステム側の工夫によってその信頼性を向上させることが望まれている。【０００３】
図１は第１関連技術の故障隠蔽化方法を模式的に示すブロック図である。【０００４】
第１関連技術の故障隠蔽化方法は、故障が発生したチップを交換することで故障を隠蔽する例である。【０００５】
図１に示す情報処理装置は、複数のＣＰＵ１０Ｐ１−Ｐｎ（ｎは正数）を備え、該ＣＰＵ１０Ｐ１−ＰｎがＯＳ２０Ｐ１−Ｐｎ及び所望のアプリケーション（ＡＰ）４０Ｐ１−Ｐｍ（ｍは正数）の実行環境３０Ｐ１−Ｐｎで動作する構成である。実行環境とは、アプリケーション４０Ｐ１−Ｐｍを実行するめに必要なＯＳとは異なるソフトウェア（プログラム）を指す。【０００６】
第１関連技術の故障隠蔽化方法では、例えばＣＰＵ１０Ｐ２で故障が発生したことが検出されると、ＣＰＵ１０Ｐ２を正常なＣＰＵ１００１０に交換し、該ＣＰＵ１００１０によりＯＳ２０Ｐ２及び実行環境３０Ｐ２下でアプリケーション４０Ｐ３を実行することで、ＣＰＵ１０Ｐ２で発生した故障をシステムソフトウェアから隠蔽する。【０００７】
図２は第２関連技術の故障隠蔽化方法を模式的に示すブロック図である。【０００８】
第２関連技術の故障隠蔽化方法は、対称型マルチプロセッシング（ＳＭＰ：Symmetric  Multiprocessing）を実現するＯＳ（ＳＭＰ  ＯＳと呼ばれる）により故障を隠蔽する例である。【０００９】
図２に示す情報処理装置は、複数のＣＰＵ１０Ｐ１−Ｐｎを備え、該ＣＰＵ１０Ｐ１−ＰｎがＳＭＰ  ＯＳ１００２０及び所望のアプリケーション４０Ｐ１−Ｐｍの実行環境３０Ｐ１−Ｐｎで動作する構成である。【００１０】
第２関連技術の故障隠蔽化方法では、例えばＣＰＵ１０Ｐ２で故障が発生したことが検出されると、ＳＭＰ  ＯＳ１００２０の処理によりＣＰＵ１０Ｐ２の実行キューをマスキングすることで、故障を検出したＣＰＵによるアプリケーションの実行を防止する。【００１１】
図３は第３関連技術の故障隠蔽化方法を模式的に示すブロック図である。【００１２】
図３に示す情報処理装置は、複数のプロセッシングエレメント（図３ではプロセッシングエレメント＃０、＃１のみ表示）と、プロセッシングエレメント＃０、＃１をシステムから切り離すノードスイッチ２００００Ａ、２００００Ｂとを有する構成である。プロセッシングエレメント＃０、＃１は、処理を実行するためのプログラムが格納されるメモリと、プログラムとそれを実行するプロセッシングエレメントの対応関係を保持する論理・物理ＩＤ変換テーブルとを備えている。図３に示す構成としては、例えば特開平２−１２３４５５号公報に記載されたマルチプロセッサシステムがある。【００１３】
第３関連技術の故障隠蔽化方法では、例えばプロセッシングエレメント＃１で故障が発生すると、該プロセッシングエレメント＃１で実行していたプログラムがプロセッシングエレメント＃０に転送され、ノードスイッチ２００００Ｂによりプロセッシングエレメント＃１がシステムから切り離される。【００１４】
そして、全てのプロセッシングエレメントが備える論理・物理ＩＤ変換テーブルに、プロセッシングエレメント＃１（論理ＩＤ）用のプログラムがプロセッシングエレメント＃０（物理ＩＤ）で実行されることが登録される。その後、各プロセッシングエレメントは、プロセッシングエレメント＃１へデータを送信する場合、論理・物理ＩＤ変換テーブル２００３０を参照して該データをプロセッシングエレメント＃０へ転送する。【００１５】
しかしながら上述した故障隠蔽方法のうち、第１関連技術の故障隠蔽方法は、故障の隠蔽に人の操作を必要とするため、隠蔽操作時にシステムの動作を停止する必要がある。また、半導体集積回路装置内に複数のＣＰＵが組み込まれた構成の場合、故障していないＣＰＵを含むチップ全体を交換する必要がある。【００１６】
一方、第２関連技術の故障隠蔽化方法は、ＳＭＰ  ＯＳによって全てのＣＰＵが動作する構成であるため、複数のＯＳが動作するシステムに適用できない。【００１７】
また、第３関連技術の故障隠蔽化方法は、各ＣＰＵ（プロセッシングエレメント）がそれぞれ独立した資源を備えているため、タイマ、ＣＰＵ  ＩＤ、割り込み処理等を実現するハードウェアやソフトウェアから成る共有資源（共有周辺装置）を備えているシステムには適用できない。さらに、第３関連技術の故障隠蔽化方法では、各ＣＰＵにキャッシュメモリを備えている場合、そのキャッシュメモリで一時的に保持されたデータが失われる可能性がある。【００１８】
したがって、複数のＣＰＵと共有資源とを有する情報処理装置に上述した関連技術の故障隠蔽方法を適用しても、いずれかのＣＰＵで故障が発生すると、そのチップを交換しない限り複数のＯＳを継続して動作させることが不可能であった。
【発明の開示】
【００１９】
そこで、本発明は、複数のＣＰＵと共有資源を有する情報処理装置において、チップを交換することなく、故障が発生した場合でも複数のＯＳを継続して動作させることができる情報処理装置及びその故障隠蔽方法を提供することを目的とする。
【００２０】
上記目的を達成するため本発明では、ＯＳ及び実行環境が動作する複数の演算装置と複数の演算装置で共有される共有周辺装置とを有する情報処理装置に、演算装置で発生した故障を隠蔽する故障隠蔽装置を備える。故障隠蔽装置は、故障が発生した演算装置に代わって動作する代替演算装置を決定し、故障が発生した演算装置で動作していたＯＳ及び実行環境を代替演算装置による動作へ切り替えると共に、該演算装置で使用している共有資源を代替演算装置で使用可能に切り替える。
【図面の簡単な説明】
【００２１】
【図１】図１は第１関連技術の故障隠蔽化方法を模式的に示すブロック図である。
【図２】図２は第２関連技術の故障隠蔽化方法を模式的に示したブロック図である。
【図３】図３は第３関連技術の故障隠蔽化方法を模式的に示したブロック図である。
【図４】図４は本発明の故障隠蔽方法を模式的に示すブロック図である。
【図５】図５は本発明の情報処理装置の一構成例を示すブロック図である。
【図６】図６は図５に示したＲＯＭ及びＲＡＭの一構成例を示す模式図である。
【図７】図７は図５に示した割込み制御装置の一構成例を示すブロック図である。
【図８】図８は図７に示した割込み制御装置による故障隠蔽処理を模式的に示すブロック図である。
【図９】図９は図５に示したタイマ装置の一構成例を示すブロック図である。
【図１０】図１０は図９に示したタイマ装置による故障隠蔽処理を模式的に示すブロック図である。
【図１１】図１１は図５に示したＣＰＵ  ＩＤ装置の一構成例を示すブロック図である。
【図１２】図１２は図１１に示したＣＰＵ  ＩＤ装置による故障隠蔽処理を模式的に示すブロック図である。
【図１３】図１３は図５に示したキャッシュメモリによる故障隠蔽処理を模式的に示すブロック図である。
【図１４】図１４は図５に示したキャッシュメモリによる故障隠蔽処理の他の例を模式的に示すブロック図である。
【図１５】図１５は図５に示した情報処理装置による故障隠蔽処理を模式的に示すブロック図である。
【図１６】図１６は図５に示した情報処理装置によるＯＳ及び実行環境の切替手順を模式的に示すブロック図である。
【図１７】図１７は故障隠蔽処理後におけるＯＳ及び実行環境の実行例を模式的に示すブロック図である。
【図１８】図１８は本発明の故障隠蔽方法によるＯＳ及び実行環境の実行例の時間推移を模式的に示すブロック図である。
【図１９】図１９は本発明の故障隠蔽方法によるＯＳ及び実行環境の実行例の時間推移を模式的に示すブロック図である。
【図２０】図２０は図５に示した故障隠蔽装置の一構成例を示すブロック図である。
【図２１】図２１は図２０に示した故障隠蔽装置による故障隠蔽処理を模式的に示すブロック図である。
【図２２】図２２は図２０に示した故障隠蔽装置による故障隠蔽処理の他の例を模式的に示すブロック図である。
【図２３】図２３は図５に示した故障隠蔽装置をプログラムで実現する場合の構成例を示すブロック図である。
【図２４】図２４は図５に示した故障隠蔽装置をプログラムで実現する場合の他の構成例を示すブロック図である。
【発明を実施するための最良の形態】
【００２２】
次に本発明について図面を参照して説明する。【００２３】
図４は本発明の故障隠蔽方法を模式的に示すブロック図である。【００２４】
図４に示すように、本発明の故障隠蔽方法は、情報処理装置に、ＣＰＵ（演算装置）１０Ｐ１−Ｐｎと故障隠蔽装置１０００とを備え、故障隠蔽装置１０００によりＣＰＵ１０Ｐ１−Ｐｎのいずれかで発生した故障をシステムソフトウェアから隠蔽する方法である。ＣＰＵ１０Ｐ１−Ｐｎは、関連技術の情報処理装置と同様にＯＳ２０Ｐ１−Ｐｎ及び所望のアプリケーション４０Ｐ１−Ｐｍの実行環境３０Ｐ１−Ｐｎで動作する。【００２５】
故障隠蔽装置１０００は、ＣＰＵ１０Ｐ１−Ｐｎのいずれかで故障が発生すると、該故障が発生したＣＰＵに代わって該ＣＰＵで動作していたＯＳ及び実行環境で動作する代替用のＣＰＵ（代替演算装置）を決定し、故障が発生したＣＰＵで動作していたＯＳ及び実行環境を代替用のＣＰＵによる動作へ切り替える。また、故障隠蔽装置１０００は、故障が発生した演算装置で使用している共有資源を代替用のＣＰＵで使用できるようにする。【００２６】
図４ではＣＰＵ１０Ｐ１−ＰｎとＯＳ２０Ｐ１−Ｐｎとが１対１で対応している例を示しているが、ＣＰＵとＯＳとは１対１で対応している必要はなく、例えば複数のＣＰＵ１０Ｐ１−ＰｎがＳＭＰ  ＯＳで動作する構成であってもよい。また、各ＣＰＵ１０Ｐ１−Ｐｎで動作するＯＳは、同一であってもよく、異なっていてもよい。また、ＣＰＵ１０Ｐ１−Ｐｎは、プログラム（ＯＳやアプリケーション）にしたがって動作する構成であれば、ＶＬＩＷ（Very  Long  Instruction  Word）タイプ、スレッドタイプ、ＳＩＭＤ（Single  Instruction/Multiple  Data）タイプ、ＤＳＰ（Digital  Signal  Processor）等、どのような種類であってもよい。さらに、図４に示すＣＰＵ１０Ｐ１−Ｐｎは、それぞれが個別のパッケージで構成される必要はなく、例えばＳｏＣ（System−on-Chip）に組み込まれた構成、個別のチップとしてＳｉＰ（System-in-Package）に組み込まれた構成、あるいは個別のパッケージとＳｏＣやＳｉＰとを組み合わせた構成であってもよい。故障隠蔽装置１０００は、論理回路やメモリ等から成るハードウェア、あるいはＣＰＵ等がプログラムにしたがって所定の処理を実行することで、その機能を実現できる。【００２７】
図５は本発明の情報処理装置の一構成例を示すブロック図である。【００２８】
図５は、情報処理装置の例として、携帯端末装置の機能を実現するプラットフォームの構成例を示している。情報処理装置が携帯端末装置でない場合、図５に示す構成要素のうち、その装置で不要な構成要素は無くてもよい。【００２９】
図５を示すように、情報処理装置は、複数のＣＰＵ１０Ｐ１−Ｐｎ、キャッシュメモリ７０Ｐ１−Ｐｎ、アクセラレータ５０、ＲＯＭ５１、ＲＡＭ５２、入出力装置インタフェース（Ｉ／Ｏ）５３、割込み制御装置５４、タイマ装置５５及びＣＰＵ  ＩＤ装置５６を備え、それらがシステムバス６０によって接続された構成である。【００３０】
ＣＰＵ１０Ｐ１−Ｐｎ、キャッシュメモリ７０Ｐ１−Ｐｎ、アクセラレータ５０、ＲＯＭ５１、ＲＡＭ５２、入出力装置インタフェース５３、割込み制御装置５４、タイマ５５、ＣＰＵ  ＩＤ装置５６は、それぞれが個別のパッケージで構成されている必要はなく、例えばＳｏＣに組み込まれた構成、個別のチップとしてＳｉＰに組み込まれた構成、あるいは個別のパッケージとＳｏＣやＳｉＰとを組み合わせた構成であってもよい。【００３１】
ＲＯＭ５１及びＲＡＭ５２は、情報処理装置が備える機能に応じてＣＰＵ１０Ｐ１−Ｐｎで共通に使用される。ＲＯＭ５１及びＲＡＭ５２は、どのような構成でもよく、コストの問題が発生しなければマルチチップ構成やマルチバンク構成であってもよい。【００３２】
図６は図５に示したＲＯＭ及びＲＡＭの一構成例を示す模式図である。【００３３】
図６に示すように、ＲＯＭ５１は、始点アドレスを０ｘ００００００００とし、終点アドレスを０ｘ０１ＦＦＦＦＦＦとする、例えば４つの実行環境向け領域（８ＭＢ）から成る３２ＭＢの記憶領域を備えている。【００３４】
ＲＡＭ５２は、始点アドレスを０ｘ３０００００００とし、終点アドレスを０ｘ３３ＦＦＦＦＦＦとする、例えば４つの実行環境向け領域（１６ＭＢ）から成る６４ＭＢの記憶領域を備えている。【００３５】
実行環境３で利用するＲＡＭ領域は、例えば０ｘ３２００００００から０ｘ３３ＦＦＦＦＦＦまでの１６ＭＢであり、ＲＯＭ領域は０ｘ０１００００００から０ｘ０１ＦＦＦＦＦＦまでの８ＭＢである。【００３６】
ＲＯＭ５１及びＲＡＭ５２に割り当てる最大メモリ容量や配置アドレス、実行環境向け領域に割り当てる最大メモリ容量や配置アドレスは上記値に限定されるものではなく、情報処理装置の仕様や機能に応じて最適な値に設定することは言うまでもない。【００３７】
図７は図５に示した割込み制御装置の一構成例を示すブロック図である。【００３８】
図７に示すように、割込み制御装置５４は、割込み信号群が入力される、割込み発生要因を保持する割込み保持部５４Ａと、割込み信号の送信先のＣＰＵを決定する割込み配送部５４Ｂと、割込み信号をＣＰＵに実際に通知するか否かを決定する割込みマスク部５４Ｐ１−Ｐｎとを備えている。【００３９】
割込み保持部５４Ａ、割込み配送部５４Ｂ及び割込みマスク部５４Ｐ１−Ｐｎは、システムバス６０と接続され、ＣＰＵ１０Ｐ１−Ｐｎによりそれぞれ設定変更可能である。【００４０】
これら割込み保持部５４Ａ、割込み配送部５４Ｂ及び割込みマスク部５４Ｐ１−Ｐｎは、割込み保持、割込み配送、割込みマスクの機能が実現できれば、図７に示した構成に限定されるものではなく、どのような構成であってもよい。【００４１】
図８は図７に示した割込み制御装置による故障隠蔽処理を模式的に示すブロック図である。図８に示すＳ１〜Ｓ４は割込み制御装置による故障隠蔽処理の工程番号を表している。【００４２】
ここでは、ＣＰＵ１０Ｐ２で故障が発生し、該ＣＰＵ１０Ｐ２で実行しているＯＳ２０Ｐ２及び実行環境３０Ｐ２をＣＰＵ１０Ｐｎに移動して故障を隠蔽する場合を例にして説明する。【００４３】
ＣＰＵ１０Ｐ２で故障が発生した場合、ＣＰＵ１０Ｐｎは、まず割込みマスク部５４Ｐ２によりＣＰＵ１０Ｐ２宛に発行される全ての割込み信号をマスクする（ステップＳ１）。【００４４】
次に、ＣＰＵ１０Ｐｎは、割込み保持部５４Ａで保持しているＣＰＵ１０Ｐ２宛の割込み信号の発生要因をクリアする（ステップＳ２）。【００４５】
続いて、ＣＰＵ１０Ｐｎは、ＣＰＵ１０Ｐ２宛の割込み信号がＣＰＵ１０Ｐｎに配送されるように割込み配送部５４Ｂの設定を変更する（ステップＳ３）。【００４６】
最後に、ＣＰＵ１０Ｐｎは、ＣＰＵ１０Ｐ２宛の割込み信号がＣＰＵ１０Ｐｎに配送されるように割り込みマスク部５４Ｐｎによるマスクを外す（ステップＳ４）。【００４７】
図９は図５に示したタイマ装置の一構成例を示すブロック図である。【００４８】
図９に示すように、タイマ装置５５は、システムバス６０に接続された複数のタイマカウント部５５Ｐ１−Ｐｎを備えた構成である。【００４９】
タイマカウント部５５Ｐ１−Ｐｎは、所定の一定間隔毎に割込み信号を送出する。タイマカウント部５５Ｐ１−Ｐｎは、例えばＣＰＵによってタイマ値が設定されると、該タイマ値をカウントダウンし、その値が０になった時点で割込み信号を送出する。【００５０】
タイマカウント部５５Ｐ１−Ｐｎは、ＣＰＵＰ１−Ｐｎがそれぞれ利用するものとして用意されている。タイマカウント部５５Ｐ１−Ｐｎは複数のＣＰＵＰ１−Ｐｎで共有することも可能である。タイマカウント部５５Ｐ１−Ｐｎを複数のＣＰＵＰ１−Ｐｎで共有する場合、タイマカウント部の数を減らすことができる。【００５１】
図１０は図９に示したタイマ装置による故障隠蔽処理を模式的に示すブロック図である。図１０に示すＳ１１〜Ｓ１２はタイマ装置による故障隠蔽処理の工程番号を表している。【００５２】
ここでは、ＣＰＵ１０Ｐ２で故障が発生し、該ＣＰＵ１０Ｐ２で実行しているＯＳ２０Ｐ２及び実行環境３０Ｐ２をＣＰＵ１０Ｐｎに移動して故障を隠蔽する場合を例にして説明する。ＣＰＵ１０ＰｎはＯＳ２０Ｐｎ及び実行環境３０Ｐｎを実行しているものとする。その場合、ＣＰＵ１０Ｐｎは、元々実行しているＯＳ２０Ｐｎ及び実行環境３０ＰｎとＣＰＵ１０Ｐ２から移行したＯＳ２０Ｐ２及び実行環境３０Ｐ２とを時分割で実行することになる。また、ＣＰＵ１０Ｐｎは、タイマカウント部５５Ｐｎを利用して所定の時間毎にＯＳ２０Ｐｎ及び実行環境３０ＰｎとＯＳ２０Ｐ２及び実行環境３０Ｐ２とをそれぞれ実行する。【００５３】
ＣＰＵ１０Ｐ２で故障が発生した場合、ＣＰＵ１０Ｐｎは、まずタイマカウント部５５Ｐ２の動作を停止する（ステップＳ１１）。【００５４】
次に、ＣＰＵ１０Ｐｎは、ＯＳ２０Ｐ２及び実行環境３０Ｐ２を実行する前にタイマカウント部５５Ｐｎに対してタイマカウント部５５Ｐ２と同一のタイマ値を設定する（ステップＳ１２）。【００５５】
ＣＰＵ１０Ｐｎは、ＯＳ２０Ｐ２及び実行環境３０Ｐ２を実行して所定の時間が経過すると、タイマカウント部５５Ｐｎのタイマ値を、次に実行するＯＳ及び実行環境（例えばＯＳ２０Ｐｎ及び実行環境３０Ｐｎ）に対応して変更する（ステップＳ１３）。【００５６】
図１１は図５に示したＣＰＵ  ＩＤ装置の一構成例を示すブロック図である。【００５７】
図１１に示すように、ＣＰＵ  ＩＤ装置５６は、システムバス６０に接続された複数のＣＰＵ  ＩＤ部５６Ｐ１−Ｐｎを備えた構成である。【００５８】
本発明の情報処理装置が備えるＣＰＵ  ＩＤ部５６Ｐ１−Ｐｎは、各ＣＰＵのＣＰＵ  ＩＤを提供すると共に、システムソフトウェアによってＣＰＵ  ＩＤを変更できるものとする。【００５９】
一般のシステムが備えるＣＰＵ  ＩＤ装置は、予め設定された固定値しか読み出せない場合が多い。そのようなシステムでは、例えば（１）システムソフトウェアでＣＰＵ  ＩＤ用の変数をメモリ上で直接変更する、（２）システムソフトウェアをＣＰＵ  ＩＤ部に依存しないものにしておく、（３）ＣＰＵ  ＩＤを参照するための命令によって命令トラップが発生するようにしておき、故障隠蔽装置１０００によってエミュレーションする、等の処理を行うことでも本発明と同様の処理を行うことが可能である。図１１は、そのようなＣＰＵ  ＩＤの読み出し処理全般を模式的に示したものである。【００６０】
図１２は図１１に示したＣＰＵ  ＩＤ装置による故障隠蔽処理を模式的に示すブロック図である。図１２に示すＳ２１〜Ｓ２２はＣＰＵ  ＩＤ装置５６による故障隠蔽処理の工程番号を表している。【００６１】
ここでは、ＣＰＵ１０Ｐ２で故障が発生し、該ＣＰＵ１０Ｐ２で実行しているＯＳ２０Ｐ２及びその実行環境３０Ｐ２をＣＰＵ１０Ｐｎに移動して故障を隠蔽する場合を例に説明する。ＣＰＵ１０ＰｎはＯＳ２０Ｐｎ及び実行環境３０Ｐｎを実行しているものとする。その場合、ＣＰＵ１０Ｐｎは、元々実行しているＯＳ２０Ｐｎ及び実行環境３０ＰｎとＣＰＵ１０Ｐ２から移行したＯＳ２０Ｐ２及び実行環境３０Ｐ２とを時分割で実行することになる。【００６２】
ＣＰＵ１０Ｐ２で故障が発生した場合、ＣＰＵ１０Ｐｎは、まずＣＰＵ１０Ｐ２のＯＳ２０Ｐ２及び実行環境３０Ｐ２を実行する前に、ＣＰＵ  ＩＤ部５６Ｐｎの値をＣＰＵ  ＩＤ部５６Ｐ２で保持している値（ＣＰＵ  ＩＤ）に設定する（ステップＳ２１）。【００６３】
次に、ＣＰＵ１０Ｐｎは、ＯＳ２０Ｐ２及び実行環境３０Ｐ２を実行し、所定の時間が経過すると、ＣＰＵ  ＩＤ部５６Ｐｎの値を次に実行するＯＳ及び実行環境（例えばＯＳ２０Ｐｎ及び実行環境３０Ｐｎ）に対応して変更する（ステップＳ２２）。【００６４】
図１３は図５に示したキャッシュメモリによる故障隠蔽処理を模式的に示すブロック図である。図１３に示すＳ３１〜Ｓ３３はキャッシュメモリによる故障隠蔽処理の工程番号を表している。【００６５】
ここでは、ＣＰＵ１０Ｐ２で故障が発生し、該ＣＰＵ１０Ｐ２で実行しているＯＳ２０Ｐ２及びその実行環境３０Ｐ２をＣＰＵ１０Ｐｎに移動して故障を隠蔽する場合を例に説明する。【００６６】
ＣＰＵ１０Ｐ２で故障が発生した場合、ＣＰＵ１０Ｐｎは、まずキャッシュフラッシュ（保持しているデータの出力）を指示するＣＰＵ間割り込み信号をＣＰＵ１０Ｐ２へ送出する（ステップＳ３１）。【００６７】
ＣＰＵ１０Ｐ２は、受け取ったＣＰＵ間割り込み信号の割込み発生要因から自ＣＰＵのキャッシュメモリ７０Ｐ２のフラッシュ要求であることを認知すると、キャッシュメモリ７０Ｐ２で保持しているデータをメインメモリ（例えばＲＡＭ５２）へ退避させる（ステップＳ３２）。データをメインメモリに退避させるとは、該データをメインメモリで一時的に保持しておく処理を指す。【００６８】
ＣＰＵ１０Ｐ２は、キャッシュフラッシュが完了すると、ＣＰＵ１０Ｐｎにキャッシュフラッシュの完了を通知するためのＣＰＵ間割り込み信号を送出する（ステップＳ３３）。ＣＰＵどうしで情報を通知できればＣＰＵ間割込み信号の代わりにどのような信号を用いてもよい。【００６９】
図１４は図５に示したキャッシュメモリによる故障隠蔽処理の他の例を模式的に示すブロック図である。図１４に示すＳ４１はＣＰＵの故障隠蔽処理の工程番号を表している。【００７０】
図１４に示す故障隠蔽処理は、図１３に示した例と異なりＣＰＵ１０Ｐ２で修復不能な故障が発生し、図１３に示したようにＣＰＵ１０Ｐ２による処理が実行できない場合に適用する例である。【００７１】
ここでは、ＣＰＵ１０Ｐ２で故障が発生し、該ＣＰＵ１０Ｐ２で実行しているＯＳ２０Ｐ２及びその実行環境３０Ｐ２をＣＰＵ１０Ｐｎに移動して故障を隠蔽する場合を例に説明する。図５に示したキャッシュメモリ７０Ｐ１〜７０Ｐｎは、ＣＰＵ１０Ｐ１〜１０Ｐｎによってキャッシュフラッシュが制御できるものとする。【００７２】
このような場合、ＣＰＵ１０Ｐｎは、ＣＰＵ１０Ｐ２で故障が発生すると、システムバス６０を経由してキャッシュメモリ７０Ｐ２で保持しているデータをメインメモリ（例えばＲＡＭ５２）へ退避させる（ステップＳ４１）。【００７３】
図１５は図５に示した情報処理装置による故障隠蔽処理を模式的に示すブロック図である。図１５に示すＳ５１−Ｓ５６は情報処理装置による故障隠蔽処理の工程番号を表している。【００７４】
ここでは、ＣＰＵ１０Ｐ２で故障が発生し、該ＣＰＵ１０Ｐ２で実行しているＯＳ２０Ｐ２及びその実行環境３０Ｐ２をＣＰＵ１０Ｐｎに移動して故障を隠蔽する場合を例に説明する。【００７５】
故障隠蔽装置１０００は、ＣＰＵ１０Ｐ２の故障発生を検出すると、ＣＰＵ１０Ｐｎへ実行環境３０Ｐ２の移動を通知する（ステップＳ５１）。【００７６】
ＣＰＵ１０Ｐｎは、故障隠蔽装置１０００からの通知を受け取ると、図１３または図１４に示した手順にしたがってＣＰＵ１０Ｐ２のキャッシュメモリ７０Ｐ２で保持しているデータをメインメモリ（例えばＲＡＭ５２）へ退避させる（ステップＳ５２）。【００７７】
次に、ＣＰＵ１０Ｐｎは、ＣＰＵ１０Ｐ２で使用している入出力装置のうち、継続して使用可能な装置はそのまま使用し、継続して使用できない装置は必要に応じて初期化する（ステップＳ５３）。【００７８】
続いて、ＣＰＵ１０Ｐｎは、図１２に示した手順にしたがってＣＰＵ  ＩＤ装置５６によるＣＰＵ１０Ｐ２の故障隠蔽処理を行う（ステップＳ５４）。【００７９】
次に、ＣＰＵ１０Ｐｎは、図１０に示した手順にしたがってタイマ装置５５によるＣＰＵ１０Ｐ２の故障隠蔽処理を行う（ステップＳ５５）。【００８０】
最後に、ＣＰＵ１０Ｐｎは、図８に示した手順にしたがって割込み制御装置５４によるＣＰＵ１０Ｐ２の故障隠蔽処理を行う（ステップＳ５６）。【００８１】
図１６は図５に示した情報処理装置によるＯＳ及び実行環境の切替手順を模式的に示すブロック図である。図１６に示すＳ６１−Ｓ６４は情報処理装置によるＯＳ及び実行環境の切替処理の工程番号を表している。【００８２】
ここでは、ＣＰＵ１０Ｐ２で故障が発生し、該ＣＰＵ１０Ｐ２で実行しているＯＳ２０Ｐ２及びその実行環境３０Ｐ２をＣＰＵ１０Ｐｎに移動して故障を隠蔽する場合を例に説明する。ＣＰＵ１０Ｐｎは、通常、ＯＳ２０Ｐｎ及び実行環境３０Ｐｎを実行しているものとする。【００８３】
故障隠蔽装置１０００は、ＣＰＵ１０Ｐ２の故障発生を検出すると、所定時間の経過、ＯＳや実行環境の優先度、ユーザからの切り替え指示、あるいはイベントの発生等の様々なトリガー条件に基づき、実行環境３０Ｐ２及びＯＳ２０Ｐ２により動作することをＣＰＵ１０Ｐｎへ通知する（ステップＳ６１）。【００８４】
ＣＰＵ１０Ｐｎは、故障隠蔽装置１０００からの通知を受け取ると、図１２に示した手順にしたがってＣＰＵ  ＩＤ装置５６のＣＰＵ  ＩＤ部５６Ｐｎの値（ＣＰＵ  ＩＤ）の切替動作を行う（ステップＳ６２）。【００８５】
続いて、ＣＰＵ１０Ｐｎは、図１０に示した手順にしたがってタイマ装置５５のタイマカウント部５５Ｐｎのタイマ値の切替動作を行う（ステップＳ６３）。【００８６】
最後に、ＣＰＵ１０Ｐｎは、図８に示した手順にしたがって割込み制御装置５４による割込み信号の切替動作を行う（ステップＳ６４）。ここでの切替動作とはＣＰＵ１０Ｐ２で使用している資源の解放を除く故障隠蔽処理を指す。【００８７】
図１７は故障隠蔽処理後におけるＯＳ及び実行環境の実行例を模式的に示すブロック図である。【００８８】
ここでは、ＣＰＵ１０Ｐ２で故障が発生し、該ＣＰＵ１０Ｐ２で実行しているＯＳ２０Ｐ２及びその実行環境３０Ｐ２をＣＰＵ１０Ｐ３で継続動作する場合を例にして説明する。その場合、ＣＰＵ１０Ｐ３は、実行環境３０Ｐ３及びＯＳ２０Ｐ３を実行するだけでなく、実行環境３０Ｐ２及びＯＳ２０Ｐ２を実行することになる。【００８９】
ＣＰＵ１０Ｐｎは、通常、実行環境３０Ｐｎ及びＯＳ２０Ｐｎを実行しているものとする。故障隠蔽装置１０００は、ＣＰＵ１０Ｐ３で実行するＯＳ２０Ｐ２とＯＳ２０Ｐ３の切り替え、及び実行環境３０Ｐ３と実行環境３０Ｐ２の切り替えをそれぞれ制御する。【００９０】
図１８は本発明の故障隠蔽方法によるＯＳ及び実行環境の実行例の時間推移を模式的に示すブロック図である。【００９１】
ここでは、ＣＰＵ１０Ｐ２で故障が発生し、ＣＰＵ１０Ｐ２に代わってＣＰＵ１０Ｐ３がＯＳ２０Ｐ２及び実行環境３０Ｐ２を実行するものとする。【００９２】
図１８では、ＣＰＵ１０Ｐ３が故障隠蔽装置１０００の制御によりＯＳ２０Ｐ２及び実行環境３０Ｐ２を実行している状態を示している。ＣＰＵ１０Ｐ３による実行環境３０Ｐ２の割当実行時間（時間割当）は３００ｍｓとする。また、ＣＰＵ１０Ｐｎは、故障隠蔽装置１０００の制御により実行環境３０Ｐｎ及びＯＳ２０Ｐｎを実行しているものとする。ＣＰＵ１０Ｐｎによる実行環境３０Ｐｎの割当実行時間（時間割当）は１０００ｍｓとする。【００９３】
故障隠蔽装置１０００は、ＣＰＵ１０Ｐ３に対する実行環境３０Ｐ２の時間割当の残りが０ｍｓになった時、次に実行するＯＳ及び実行環境を決定し、例えば図１６に示した手順にしたがってＯＳ及び実行環境を切り替える。ＯＳ及び実行環境の切り替えは、時間割当だけでなく、ＯＳや実行環境の優先度、ユーザからの切り替え指示、あるいはイベントの発生等の様々なトリガー条件に基づいてＯＳ及び実行環境を切り替えてもよい。【００９４】
図１９は本発明の故障隠蔽方法によるＯＳ及び実行環境の実行例の時間推移を模式的に示すブロック図である。図１９は図１８に示した状態から約３００ｍｓの時間が経過した状態を示している。図１９では、ＣＰＵ１０Ｐ３が故障隠蔽装置１０００の制御によりＯＳ２０Ｐ３及び実行環境３０Ｐ３を実行している状態を示している。ＣＰＵ１０Ｐ３による実行環境３０Ｐ３の割当実行時間（時間割当）は２００ｍｓとする。【００９５】
故障隠蔽装置１０００は、ＣＰＵ１０Ｐ３で次に実行するＯＳ２０Ｐ３及び実行環境３０Ｐ３を決定すると、図１６に示した手順したがってＯＳ及び実行環境を切り替える。この結果、ＯＳ２０Ｐ２及び実行環境３０Ｐ２はＣＰＵ１０Ｐ２が存在しているように動作する。【００９６】
図２０は図５に示した故障隠蔽装置の一構成例を示すブロック図である。【００９７】
図２０に示すように、故障隠蔽装置１０００は、ＣＰＵ１０Ｐ１−Ｐｎで発生した故障を検出する故障検出部１１００と、故障が発生したＣＰＵに代わって動作するＣＰＵによるＯＳ及び実行環境の動作スケジュールを管理するスケジュール部１２００と、故障を検出したＣＰＵの動作を停止させる故障ＣＰＵ停止部１３００と、ＣＰＵ１０Ｐ１−Ｐｎ上で動作する共有資源を制御するための共有資源制御部１４００Ｐ１−Ｐｎとを有する構成である。【００９８】
故障検出部１１００は、情報処理装置が備える複数のＣＰＵ１０Ｐ１−Ｐｎで故障が発生したか否かを検出する。ＣＰＵの故障の発生有無は、定期的に実行する診断用プログラム、ハードウェアから故障検出時に送出される異常通知等を用いて判断すればよい。故障検出方法は、これらの方法に限らず、ＣＰＵの故障を検出できれば、周知のどのような手法を用いてもよい。【００９９】
スケジュール部１２００は、図１５に示した故障が発生したＣＰＵのＯＳ及び実行環境の移動先となるＣＰＵを決定する機能、並びに図１６、図１８及び図１９に示したＯＳ及び実行環境を時分割で動作させるための制御機能を備えている。スケジュール部１２００は故障検出部１１００から受信した故障を検出したＣＰＵを示す故障ＣＰＵ情報に基づきＯＳ及び実行環境の移動先となるＣＰＵを決定し、ＯＳ及び実行環境を時分割で動作させるための制御機能の処理結果により故障ＣＰＵ停止部１３００及び共有資源制御部１４００Ｐ１−Ｐｎへ必要な指示を与える。【０１００】
故障ＣＰＵ停止部１３００は、スケジュール部１２００からの指示にしたがって図１３または図１４に示したキャッシュメモリによる故障隠蔽処理を実行すると共に、故障を検出したＣＰＵの停止処理を行う。【０１０１】
共有資源制御部１４００Ｐ１−Ｐｎは、複数のＣＰＵ１０Ｐ１−Ｐｎに対して共通に動作する。共有資源制御部１４００Ｐ１−Ｐｎは、スケジュール部１２００からの通知にしたがって、図８、図１０及び図１２で示したように故障したＣＰＵで使用していた共有資源の解放、及びＯＳ及び実行環境を移動するＣＰＵで使用している共有資源と故障が発生したＣＰＵで使用していた共有資源を時分割で使用可能にするための制御を行う。【０１０２】
図２１は図２０に示した故障隠蔽装置による故障隠蔽処理を模式的に示すブロック図である。図２１に示すＳ７１−Ｓ７４は故障隠蔽装置による故障隠蔽処理の工程番号を表している。【０１０３】
ここでは、ＣＰＵ１０Ｐ２で故障が発生し、該ＣＰＵ１０Ｐ２で実行しているＯＳ２０Ｐ２及び実行環境３０Ｐ２をＣＰＵ１０Ｐｎに移動して故障を隠蔽する場合を例に説明する。ＣＰＵ１０Ｐｎは実行環境３０Ｐｎ及びＯＳ２０Ｐｎを実行しているものとする。図２１に示す動作は図１５に示した情報処理装置による故障隠蔽処理に対応している。【０１０４】
故障隠蔽装置１０００は、故障検出部１１００によってＣＰＵ１０Ｐ２で故障が発生したことを検出すると、該故障発生をスケジュール部１２００へ通知する（ステップＳ７１）。【０１０５】
スケジュール部１２００は、故障が発生したＣＰＵ１０Ｐ２で実行しているＯＳ２０Ｐ２及び実行環境３０Ｐ２をＣＰＵ１０Ｐｎに移動することを決定し、ＣＰＵ１０Ｐ２の動作停止を故障ＣＰＵ停止部１３００に通知する（ステップＳ７２）。【０１０６】
故障ＣＰＵ停止部１３００は、スケジュール部１２００からの通知にしたがって故障が発生したＣＰＵ１０Ｐ２のキャッシュメモリ７０Ｐ２で保持されたデータをフラッシュし、ＣＰＵ１０Ｐ２の動作を停止させる（ステップＳ７３）。【０１０７】
次に、スケジュール部１２００は、故障が発生したＣＰＵ１０Ｐ２に代わってＣＰＵ１０Ｐｎが動作することを共有資源制御部１４００Ｐｎに通知する。【０１０８】
共有資源制御部１４００Ｐｎは、ＣＰＵ１０Ｐ２による共有資源の使用を停止させると共に、ＣＰＵ１０ＰｎがＯＳ２０Ｐ２及び実行環境３０Ｐ２とＯＳ２０Ｐｎ及び実行環境３０Ｐｎとを時分割で実行する際に使用する共有資源の切り替えを制御する（ステップＳ７４）。【０１０９】
図２２は図２０に示した故障隠蔽装置による故障隠蔽処理の他の例を模式的に示すブロック図である。図２２に示すＳ８１は故障隠蔽装置による故障隠蔽処理の工程番号を表している。【０１１０】
ここでは、ＣＰＵ１０Ｐ２で故障が発生し、該ＣＰＵ１０Ｐ２で実行しているＯＳ２０Ｐ２及びその実行環境３０Ｐ２をＣＰＵ１０Ｐｎに移動して故障を隠蔽する場合を例に説明する。ＣＰＵ１０Ｐｎは実行環境３０Ｐｎ及びＯＳ２０Ｐｎを実行しているものとする。図２２に示す動作は図１６に示した情報処理装置による故障隠蔽処理に対応している。【０１１１】
故障隠蔽装置１０００は、故障検出部１１００によりＣＰＵ１０Ｐ２で故障が発生したことを検出すると、該故障発生をスケジュール部１２００へ通知する（ステップＳ８１）。【０１１２】
スケジュール部１２００は、所定時間の経過や割り込み信号等によるトリガー条件にしたがって、故障が発生したＣＰＵ１０Ｐ２で実行しているＯＳ２０Ｐ２及び実行環境３０Ｐ２をＣＰＵ１０Ｐｎに移動することを共有資源制御部１４００Ｐｎに通知する。【０１１３】
共有資源制御部１４００Ｐｎは、ＣＰＵ１０Ｐｎで実行しているＯＳ２０Ｐｎ及び実行環境３０Ｐｎで使用する共有資源を、ＯＳ２０Ｐ２及び実行環境３０Ｐ２で使用する共有資源に切替える。共有資源の切り替えが完了すると、ＣＰＵ１０ＰｎはＯＳ２０Ｐ２及び実行環境３０Ｐ２を実行する。【０１１４】
図２３は図５に示した故障隠蔽装置をプログラムで実現する場合の構成例を示すブロック図である。【０１１５】
図２３はＯＳに含まれるプログラムにしたがってＣＰＵで処理を実行することで上述した故障隠蔽装置１０００の機能を実現する例である。図２３に示す故障隠蔽装置１０００は、モジュールやサブシステム等を含むどのような構成とすることも可能である。図２３に示すような構成では、ＯＳに故障隠蔽装置１０００の機能を組み込むことができるため、修正が容易であるという利点がある。【０１１６】
図２４は図５に示した故障隠蔽装置をプログラムで実現する場合の他の構成例を示すブロック図である。【０１１７】
図２４に示すＣＰＵ１０は、ユーザ・スーパバイザモードだけでなく、ハイパーバイザモードで動作し、それらの動作モードで共有されるメモリ管理ユニット１３を備えている。このとき、ＯＳ２０Ａ及び実行環境３０Ａ並びにＯＳ２０Ｂ及び実行環境３０Ｂは、ユーザ・スーパバイザモードで実行される。一方、故障隠蔽装置１０００の機能を実現するプログラムはハイパーバイザモードで動作する。【０１１８】
このような構成では、ＯＳや実行環境と故障隠蔽処理とが異なる動作モードで実行されるため、ＯＳ及び実行環境のソフトウェア互換性を保ちつつ、故障を隠蔽できる。【０１１９】
本発明によれば、故障隠蔽装置１０００により故障が発生したＣＰＵに代わって動作する代替用の演算装置を決定し、故障が発生した演算装置で動作していたＯＳ及び実行環境を決定した演算装置による動作へ切り替えると共に、故障が発生したＣＰＵで使用している共有資源を代替用の演算装置で使用可能に切り替えるため、複数のＣＰＵと共有資源を有する情報処理装置において、いずれかの演算装置で故障が発生しても、チップを交換することなく各ＯＳを継続して動作させることができる。したがって、半導体集積回路装置で発生した故障がそれを使用するシステムである情報処理装置によって隠蔽されるため、半導体集積回路装置のテストコストを低減できる。【０１２０】
本発明は、半導体集積回路装置の耐用寿命を延長できるため、保守が困難な環境で動作する情報処理装置に好適である。【０１２１】
この出願は、２００６年１０月１３日に出願された特願２００６−２７９９５６号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
2008044423.tif 000003
【図２】
2008044423.tif 000004
【図３】
2008044423.tif 000005
【図４】
2008044423.tif 000006
【図５】
2008044423.tif 000007
【図６】
2008044423.tif 000008
【図７】
2008044423.tif 000009
【図８】
2008044423.tif 000010
【図９】
2008044423.tif 000011
【図１０】
2008044423.tif 000012
【図１１】
2008044423.tif 000013
【図１２】
2008044423.tif 000014
【図１３】
2008044423.tif 000015
【図１４】
2008044423.tif 000016
【図１５】
2008044423.tif 000017
【図１６】
2008044423.tif 000018
【図１７】
2008044423.tif 000019
【図１８】
2008044423.tif 000020
【図１９】
2008044423.tif 000021
【図２０】
2008044423.tif 000022
【図２１】
2008044423.tif 000023
【図２２】
2008044423.tif 000024
【図２３】
2008044423.tif 000025
【図２４】
2008044423.tif 000026
【国際調査報告】
2008044423.tif 000027
2008044423.tif 000028