(57)【特許請求の範囲】
【請求項１】
実行対象のプログラムを格納し得るプログラム格納部と、
１以上の命令を実行できる２以上のプロセッサと、
前記２以上の各プロセッサが実行できる命令または実行できない命令を特定する情報である実行可否情報を前記２以上の各プロセッサごとに格納し得る実行可否情報格納部と、
前記プログラムを実行する際に、前記実行可否情報格納部に格納されている実行可否情報を参照し、前記２以上のプロセッサのうち、前記プログラムを実行するために必要な１以上の各命令を実行できるプロセッサを決定し、当該決定したプロセッサに命令を実行させる制御部とを具備する情報処理システム。
【請求項２】
前記２以上の各プロセッサが実行できる命令または実行できない命令を検査し、プロセッサごとに実行可否情報を取得し、前記実行可否情報格納部に蓄積する診断部をさらに具備する請求項１記載の情報処理システム。
【請求項３】
前記２以上の各プロセッサは、各プロセッサにおける命令の実行結果を保持するレジスタを具備し、
前記２以上の各プロセッサの２以上のレジスタが格納している前記実行結果は、前記２以上の各プロセッサにより共有される請求項１または請求項２記載の情報処理システム。
【請求項４】
前記１以上の各命令に対応する命令長に関する情報である命令長情報を格納し得る遅延マップ格納部と、
前記制御部が前記プロセッサに実行させている命令に対応する命令長情報を取得し、当該命令長情報に対応する時間だけウエイトする遅延カウンタ部とをさらに具備する請求項１から請求項３いずれか一項に記載の情報処理システム。
【請求項５】
前記２以上の各プロセッサに対応付いて、前記遅延マップ格納部および前記遅延カウンタ部が存在し、
前記遅延カウンタ部は、
前記制御部が命令を実行させているプロセッサに対応する遅延マップ格納部から、前記制御部が実行させている命令に対応する命令長情報を取得し、当該命令長情報に対応する時間だけウエイトする請求項４記載の情報処理システム。
【請求項６】
前記実行可否情報は、
１または２以上の命令を含む命令グループごとに、当該命令グループに含まれる命令が実行できるか否かを示す情報である請求項１から請求項５いずれか一項に記載の情報処理システム。
【請求項７】
前記実行可否情報格納部は、
１つのプロセッサに対応する実行可否情報を格納している記憶媒体である２以上の実行可否情報記憶手段を具備する請求項１から請求項６いずれか一項に記載の情報処理システム。
【請求項８】
前記実行可否情報格納部は、
２以上の各プロセッサに対応する２以上の実行可否情報を格納している１つの記憶媒体である請求項１から請求項６いずれか一項に記載の情報処理システム。
【請求項９】
前記実行可否情報格納部に格納されている１以上の実行可否情報を出力する実行可否情報出力部をさらに具備する請求項１から請求項８いずれか一項に記載の情報処理システム。
【請求項１０】
前記制御部は、
１つの命令を実行するプロセッサを決定する場合に、当該１つの命令の直前の命令を実行したプロセッサに対応する実行可否情報を参照し、前記プロセッサが前記１つの命令が実行可能である場合には、前記プロセッサを前記１つの命令を実行するプロセッサとして決定し、当該決定した前記プロセッサに命令を実行させる請求項１から請求項９いずれか一項に記載の情報処理システム。
【請求項１１】
記録媒体に、
実行対象のプログラムと、
２以上の各プロセッサが実行できる命令または実行できない命令を特定する情報である実行可否情報を前記２以上の各プロセッサごとに格納しており、
制御部により実現され得る情報処理方法であって、
前記制御部が、前記プログラムを実行する際に、前記実行可否情報を参照し、前記２以上のプロセッサのうち、前記プログラムを実行するために必要な１以上の各命令を実行できるプロセッサを決定し、当該決定したプロセッサに命令を実行させる制御ステップを具備する情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサの障害に頑強な情報処理システム等に関するものである。
【背景技術】
【０００２】
従来、複数の処理装置（プロセッサと言っても良い）と、システムコントローラと、障害発生時にログ情報の収集を行う機能を有するサービスプロセッサとを備えるデータ処理システムがあった。そして、データ処理システムを構成する複数の各処理装置は、障害発生時に、その障害が、他の全ての装置に影響を与える障害か、あるいは、障害を生じた装置のみが影響を受ける障害かを判定する手段を備える。また、システムコントローラは、この判定結果が障害を生じた装置のみに影響を与える障害であった場合に、当該装置の動作のみを停止させる手段を備える。さらに、サービスプロセッサは、障害に関連のない装置の動作を停止させることなく、停止した障害装置のみのログ情報の採取を行うことを特徴とする（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第２９５６８４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術においては、プロセッサが部分的に障害を負った場合には、プロセッサ全体を停止させる構成にしており、部分的にプロセッサを利用して、効率的にプログラムを実行できなかった。
【課題を解決するための手段】
【０００５】
本第一の発明の情報処理システムは、実行対象のプログラムを格納し得るプログラム格納部と、１以上の命令を実行できる２以上のプロセッサと、２以上の各プロセッサが実行できる命令または実行できない命令を特定する情報である実行可否情報を２以上の各プロセッサごとに格納し得る実行可否情報格納部と、プログラムを実行する際に、実行可否情報格納部に格納されている実行可否情報を参照し、２以上のプロセッサのうち、プログラムを実行するために必要な１以上の各命令を実行できるプロセッサを決定し、決定したプロセッサに命令を実行させる制御部とを具備する情報処理システムである。
【０００６】
かかる構成により、すべてのプロセッサが部分的に障害を負った場合でも、プログラムの実行を継続できる。
【０００７】
また、本第二の発明の情報処理システムは、第一の発明に対して、２以上の各プロセッサが実行できる命令または実行できない命令を検査し、プロセッサごとに実行可否情報を取得し、実行可否情報格納部に蓄積する診断部をさらに具備する情報処理システムである。
【０００８】
かかる構成により、プロセッサの障害状況を自動的に取得できる。
【０００９】
また、本第三の発明の情報処理システムは、第一または第二の発明に対して、２以上の各プロセッサは、各プロセッサにおける命令の実行結果を保持するレジスタを具備し、２以上の各プロセッサの２以上のレジスタが格納している実行結果は、２以上の各プロセッサにより共有される情報処理システムである。
【００１０】
かかる構成により、プロセッサが部分的に障害を負った場合でも、正常にプログラムの実行を継続できる。
【００１１】
また、本第四の発明の情報処理システムは、第一から第三いずれかの発明に対して、１以上の各命令に対応する命令長に関する情報である命令長情報を格納し得る遅延マップ格納部と、制御部が実行させている命令に対応する命令長情報を取得し、命令長情報に対応する時間だけウエイトする遅延カウンタ部とをさらに具備する情報処理システムである。
【００１２】
かかる構成により、プロセッサが部分的に障害を負った場合でも、正常にプログラムの実行を継続できる。
【００１３】
また、本第五の発明の情報処理システムは、第四の発明に対して、２以上の各プロセッサに対応付いて、遅延マップ格納部および遅延カウンタ部が存在し、遅延カウンタ部は、制御部が命令を実行させているプロセッサに対応する遅延マップ格納部から、制御部が実行させている命令に対応する命令長情報を取得し、命令長情報に対応する時間だけウエイトする情報処理システムである。
【００１４】
かかる構成により、プロセッサが部分的に障害を負った場合でも、正常にプログラムの実行を継続できる。
【００１５】
また、本第六の発明の情報処理システムは、第一から第五いずれかの発明に対して、実行可否情報は、１または２以上の命令を含む命令グループごとに、命令グループに含まれる命令が実行できるか否かを示す情報である情報処理システムである。
【００１６】
かかる構成により、命令実行可否の管理が簡易になる。
【００１７】
また、本第七の発明の情報処理システムは、第一から第六いずれかの発明に対して、実行可否情報格納部は、一のプロセッサに対応する実行可否情報を格納している記憶媒体である２以上の実行可否情報記憶手段を具備する情報処理システムである。
【００１８】
かかる構成により、プロセッサが部分的に障害を負った場合でも、正常にプログラムの実行を継続できる。
【００１９】
また、本第八の発明の情報処理システムは、第一から第六いずれかの発明に対して、実行可否情報格納部は、２以上の各プロセッサに対応する２以上の実行可否情報を格納している一の記憶媒体である情報処理システムである。
【００２０】
かかる構成により、プロセッサが部分的に障害を負った場合でも、正常にプログラムの実行を継続できる。
【００２１】
また、本第九の発明の情報処理システムは、第一から第八いずれかの発明に対して、実行可否情報格納部に格納されている１以上の実行可否情報を出力する実行可否情報出力部をさらに具備する情報処理システムである。
【００２２】
また、本第十の発明の情報処理システムは、第一から第九いずれかの発明に対して、制御部は、一の命令を実行するプロセッサを決定する場合に、当該一の命令の直前の命令を実行したプロセッサに対応する実行可否情報を参照し、前記プロセッサが前記一の命令が実行可能である場合には、前記プロセッサを前記一の命令を実行するプロセッサとして決定し、当該決定した前記プロセッサに命令を実行させる情報処理システムである。
【００２３】
かかる構成により、高速な処理が可能となる。
【発明の効果】
【００２４】
本発明による情報処理システムによれば、プロセッサが部分的に障害を負った場合でも、当該プロセッサを有効に利用して、プログラムの実行を継続できる。
【図面の簡単な説明】
【００２５】
【図１】実施の形態における情報処理システム１のブロック図
【図２】同情報処理システム１の動作について説明するフローチャート
【図３】同情報処理システム１の具体的な構成図
【図４】同情報処理システム１の具体的な構成図
【図５】同情報処理システム１の動作を説明する図
【図６】同情報処理システム１の他のブロック図
【発明を実施するための形態】
【００２６】
以下、情報処理システム等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
【００２７】
（実施の形態）
本実施の形態において、１または２以上の命令を実行できる２以上のプロセッサと、各プロセッサの命令の実行可否を示す実行可否情報を保持する記録媒体とを具備し、実行可能な命令を有するプロセッサを利用してプログラムの実行を遂行する情報処理システムについて説明する。なお、本実施の形態において、実行可否情報を保持する記録媒体は、プロセッサごとに存在しても良いし、複数のプロセッサに対して一つでも良い。なお、複数のプロセッサのうちの一部のプロセッサは、すべての命令を実行できなくなっても良い。
【００２８】
また、本実施の形態において、情報処理システムは、各プロセッサの命令の実行可否を診断する診断部を具備しても良い。
【００２９】
また、本実施の形態の情報処理システムにおいて、通常、レジスタ内の実行結果は、複数のプロセッサで共有される。
【００３０】
また、本実施の形態の情報処理システムにおいて、通常、後述する遅延マップ格納部と、遅延カウンタ部とを有する。
【００３１】
さらに、本実施の形態において、実行可否情報を出力する情報処理システムについて説明する。
【００３２】
図１は、本実施の形態における情報処理システム１のブロック図である。情報処理システム１は、プログラム格納部１１、実行可否情報格納部１２、１または２以上の遅延マップ格納部１３、２以上のプロセッサ１４、制御部１５、１または２以上の遅延カウンタ部１６、診断部１７、および実行可否情報出力部１８を備える。
【００３３】
また、実行可否情報格納部１２は、１または２以上の実行可否情報記憶手段１２１を備える。実行可否情報格納部１２は、例えば、プロセッサ１４ごとに、実行可否情報記憶手段１２１を備えても良いし、複数のプロセッサ１４に対して一の実行可否情報記憶手段１２１を備えても良い。さらに、各プロセッサ１４は、例えば、レジスタ１４１を備える。また、複数のプロセッサ１４に対して一のレジスタ１４１を備えても良い。
【００３４】
プログラム格納部１１は、実行対象のプログラムを格納し得る。また、プログラム格納部１１は、割込み処理ルーチン、後述する制御部１５を構成するソフトウェア、または後述する診断部１７を構成するソフトウェア等も格納されていても良い。なお、実行対象のプログラムとは、例えば、アプリケーションプログラムであるが、ＯＳ等の基本ソフトウェアでも良い。
【００３５】
プログラム格納部１１は、ＲＯＭ等の不揮発性の記録媒体が好適であるが、ＲＡＭ等の揮発性の記録媒体でも実現可能である。
【００３６】
プログラム格納部１１に実行対象のプログラム等が記憶される過程は問わない。例えば、記録媒体を介してプログラム等がプログラム格納部１１で記憶されるようになってもよく、通信回線等を介して送信されたプログラム等がプログラム格納部１１で記憶されるようになってもよく、あるいは、入力デバイスを介して入力されたプログラム等がプログラム格納部１１で記憶されるようになってもよい。
【００３７】
実行可否情報格納部１２は、２以上の実行可否情報を格納し得る。実行可否情報格納部１２は、通常、２以上の各プロセッサに対応する２以上の実行可否情報を格納している。実行可否情報は、プロセッサ１４が実行できる命令または実行できない命令を特定する情報である。つまり、実行可否情報は、例えば、実行できない命令の命令識別子の集合である。ただし、実行可否情報は、実行できる命令の命令識別子の集合等でも良い。また、実行可否情報は、例えば、実行できない命令の命令識別子と実行できる命令の命令識別子の集合等でも良い。さらに具体的には、実行可否情報は、例えば、実行できる命令のオペコード、または実行できない命令のオペコードの集合である。なお、命令は、通常、オペコードとオペランドを有する。例えば、命令「ＬＤＡ  ＃＄ＡＢ」の「ＬＤＡ」はオペコードであり、「＃＄ＡＢ」はオペランドである。
【００３８】
また、実行可否情報は、プロセッサ１４が実行できる命令グループ、または実行できない命令グループを特定する情報であっても良い。かかる場合、実行可否情報は、例えば、実行できない命令グループのグループ識別子の集合である。ただし、実行可否情報は、実行できる命令グループのグループ識別子の集合等でも良い。また、実行可否情報は、例えば、実行できないグループのグループ識別子と実行できるグループのグループ識別子の集合等でも良い。なお、命令グループは、１または２以上の命令の集合である。ただし、少なくとも一の命令グループは、２以上の命令の集合である。また、一の命令グループは、２以上の類似する命令が属することは好適である。
【００３９】
ここで、命令は、例えば、機械語命令である。命令は、例えば、アセンブラ命令、マシンコード、マクロ命令等でも良い。つまり、命令の種類等は問わない。命令は、例えば、６５０２プロセッサでは、ＪＭＰ、ＪＳＲ、ＲＴＳ、ＢＮＥ、ＬＤＡ、ＳＴＡ、ＡＳＬ、ＲＯＲ、ＡＤＣ等である。ＪＭＰはジャンプ命令、ＪＳＲはサブルーチンコールの命令、ＲＴＳはサブルーチンからのリターン命令である。また、ＢＮＥは比較およびジャンプを行なう命令、ＬＤＡとＳＴＡとはレジスタへの書き込みに関する命令、ＡＳＬとＲＯＲとはシフト関連の命令、ＡＤＣは算術加算命令、ＭＯＶＥはデータ移動命令である。
【００４０】
実行可否情報は、例えば、プロセッサを識別するプロセッサ識別子と対応付けて実行可否情報格納部１２に格納されている。また、実行可否情報は、例えば、プロセッサと直接、接続されている。
【００４１】
また、実行可否情報は、例えば、対応するプロセッサの命令ごとに１ビットを保持している。そして、例えば、処理対象の命令に対応するビットがオンであるプロセッサがアクティブになる。
【００４２】
実行可否情報記憶手段１２１は、一のプロセッサ１４に対応する実行可否情報を格納している記憶媒体である。実行可否情報記憶手段１２１は、通常、プロセッサに対応付けられて存在する。なお、実行可否情報は、通常、後述する診断部１７のより蓄積された情報である。
【００４３】
実行可否情報格納部１２、および実行可否情報記憶手段１２１は、通常、不揮発性の記録媒体で実現されるが、揮発性の記録媒体で実現されても良い。実行可否情報格納部１２等は、例えば、ＲＡＭ、フラッシュ等のＥＥＰＲＯＭ等である。
【００４４】
遅延マップ格納部１３は、１以上の各命令に対応する命令長に関する情報である命令長情報を格納し得る。命令長情報は、通常、クロック数であるが、他の情報でも良い。命令長情報は、通常、命令に対応付いて管理される。
【００４５】
遅延マップ格納部１３は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。遅延マップ格納部１３に命令長情報が記憶される過程は問わない。例えば、記録媒体を介して命令長情報が遅延マップ格納部１３で記憶されるようになってもよく、通信回線等を介して送信された命令長情報が遅延マップ格納部１３で記憶されるようになってもよく、あるいは、入力デバイスを介して入力された命令長情報が遅延マップ格納部１３で記憶されるようになってもよい。
【００４６】
プロセッサ１４は、１以上の命令を実行できる。また、プロセッサ１４は、ＣＰＵであることが好適であるが、ＭＰＵ、ＧＰＵ、ＦＰＵ、ＤＳＰ、ＰＰＵ、周辺装置用プロセッサ、またはデータ通信プロセッサ等でも良く、広く解する。また、一のプロセッサ１４が、ＣＰＵ、ＧＰＵ等の複数のプロセッサを含んでいても良い。
【００４７】
２以上の各プロセッサ１４は、例えば、各プロセッサにおける命令の実行結果を保持する１以上のレジスタ１４１を具備する。ただし、２以上の各プロセッサ１４は、１以上のすべてのレジスタを共有しても良い。なお、２以上の各プロセッサ１４は、同じプロセッサ１４であっても、異なるプロセッサ１４であっても良い。
【００４８】
また、プロセッサ１４が実行できる２以上の命令は、２以上の命令グループを構成していても良い。一の命令グループは、１または２以上の命令が属する。
【００４９】
また、２以上のプロセッサ１４は、並列処理が可能なプロセッサでも良い。
【００５０】
レジスタ１４１は、２以上の各プロセッサ１４における命令の実行結果を保持する。つまり、プロセッサ１４が処理を行なった結果を、プロセッサ１４はレジスタ１４１に書き込む。
【００５１】
制御部１５は、プログラムを実行する際に、実行可否情報格納部１２に格納されている実行可否情報を参照し、２以上のプロセッサ１４のうち、プログラムを実行するために必要な１以上の各命令を実行できるプロセッサ１４を決定し、決定したプロセッサ１４に命令を実行させる。
【００５２】
制御部１５は、プログラムを実行する際に、実行可否情報格納部１２に格納されている実行可否情報を参照し、実行対象の一の命令、または実行対象の一の命令グループの命令を実行できるプロセッサ１４を選択し、当該選択したプロセッサ１４に命令を実行させる。
【００５３】
制御部１５は、一の命令を実行するプロセッサ１４を決定する場合に、当該一の命令の直前の命令を実行したプロセッサ１４に対応する実行可否情報を参照し、前記プロセッサ１４が前記一の命令が実行可能である場合には、前記プロセッサ１４を前記一の命令を実行するプロセッサ１４として決定し、当該決定した前記プロセッサ１４に命令を実行させる。
【００５４】
なお、制御部１５は、後述する診断部１７の診断結果に基づいて、命令を実行する一のプロセッサ１４のみをアクティブにするなどしても良い。かかる場合、アクティブなプロセッサ１４が命令を実行する。また、診断部１７の診断結果に応じて、一のプロセッサ１４がアクティブになる場合、当該アクティブにする処理は、ここでは制御部１５が行う、とする。また、この処理は、診断部１７が行っても良い。
【００５５】
遅延カウンタ部１６は、制御部１５が実行させている命令に対応する命令長情報を取得し、命令長情報に対応する時間だけウエイトする。また、遅延カウンタ部１６は、制御部１５が命令を実行させているプロセッサ１４に対応する遅延マップ格納部１３から、制御部１５が実行させている命令に対応する命令長情報を取得し、命令長情報に対応する時間だけウエイトしても良い。なお、遅延カウンタ部１６は、遅延カウンタにより実現され得る。
【００５６】
診断部１７は、２以上の各プロセッサが実行できる命令または実行できない命令を検査し、プロセッサ１４ごとに実行可否情報を取得し、実行可否情報格納部１２に蓄積する。また、診断部１７は、２以上の各プロセッサが実行できる命令グループまたは実行できない命令グループを検査し、プロセッサ１４ごとに実行可否情報を取得し、実行可否情報格納部１２に蓄積しても良い。ここで、蓄積とは、例えば、出力ポートへの出力や、ラッチ、フラッシング、ＥＥＰＲＯＭへの書き込み等によって実現される。
【００５７】
診断部１７は、例えば、割込みルーチンにより、継続的に機能する。継続的とは、通常、定期的という意味であるが、不定期でも良い。定期的とは、通常、同一間隔である。診断部１７は、例えば、毎秒１０回実行される。
【００５８】
実行可否情報出力部１８は、実行可否情報格納部１２に格納されている１以上の実行可否情報を出力する。実行可否情報出力部１８が実行可否情報を出力するタイミングは問わない。実行可否情報出力部１８は、図示しない手段が出力指示を受け付けた場合に、実行可否情報を出力しても良いし、実行可否情報出力部１８が自発的に実行可否情報を出力しても良い。ここで、出力とは、例えば、表示デバイスへの出力である。また、実行可否情報出力部１８は、ディスプレイ等の出力デバイスを含むと考えても含まないと考えても良い。実行可否情報出力部１８は、出力デバイスのドライバーソフトまたは、出力デバイスのドライバーソフトと出力デバイス等で実現され得る。
【００５９】
次に、情報処理システム１の動作について、図２のフローチャートを用いて説明する。
【００６０】
（ステップＳ２０１）制御部１５は、プログラム格納部１１の実行対象のプログラムを読み込む。なお、プログラムの実行は、複数の命令を実行することにより実現される。
【００６１】
（ステップＳ２０２）制御部１５は、カウンタｉに１を代入する。
【００６２】
（ステップＳ２０３）制御部１５は、読み込んだプログラムの中に、ｉ番目の命令が存在するか否かを判断する。ｉ番目の命令が存在すればステップＳ２０４に行き、存在しなければ処理を終了する。
【００６３】
（ステップＳ２０４）制御部１５は、ｉ番目の命令を取得する。
【００６４】
（ステップＳ２０５）制御部１５は、カウンタｊに１を代入する。
【００６５】
（ステップＳ２０６）制御部１５は、情報処理システム１の中に、ｊ番目のプロセッサが存在するか否かを判断する。ｊ番目のプロセッサが存在すればステップＳ２０７に行き、存在しなければステップＳ２１４に行く。
【００６６】
（ステップＳ２０７）制御部１５は、実行可否情報格納部１２から、ｊ番目のプロセッサに対応する実行可否情報を取得する。ここで、制御部１５は、ｊ番目のプロセッサの、ｉ番目の命令に対応する実行可否情報のみを取得することは好適である。
【００６７】
（ステップＳ２０８）制御部１５は、ステップＳ２０７で取得した実行可否情報を用いて、ｊ番目のプロセッサにおいて、ｉ番目の命令が実行可能であるか否かを判断する。実行可能である場合はステップＳ２０９に行き、実行可能でない場合はステップＳ２１３に行く。
【００６８】
（ステップＳ２０９）制御部１５は、ｊ番目のプロセッサに、ｉ番目の命令の実行を指示する。なお、ここで、ｊ番目のプロセッサがｉ番目の命令を実行し、実行結果をレジスタ１４１に書き込む。なお、レジスタ１４１は、ｊ番目のプロセッサに対応するレジスタ１４１であることが好適であるが、複数のプロセッサ１４が共有しているレジスタ１４１でも良い。
【００６９】
（ステップＳ２１０）遅延カウンタ部１６は、ｊ番目のプロセッサのｉ番目の命令に対応する命令長情報を、遅延マップ格納部１３から取得する。なお、ｉ番目の命令に対応する命令長情報は、プロセッサごとに異なっても良いし、同じでも良い。
【００７０】
（ステップＳ２１１）遅延カウンタ部１６は、ステップＳ２１０で取得した命令長情報に対応する時間、ウエイトする。さらに具体的には、例えば、遅延カウンタ部１６は、命令の処理が完了するまでのクロックサイクルの総量だけウエイトする。
【００７１】
（ステップＳ２１２）制御部１５は、カウンタｉを１、インクリメントする。ステップＳ２０３に戻る。
【００７２】
（ステップＳ２１３）制御部１５は、カウンタｊを１、インクリメントする。ステップＳ２０６に戻る。
【００７３】
（ステップＳ２１４）制御部１５は、エラーメッセージを出力する。処理を終了する。
【００７４】
なお、図２のフローチャートにおいて、図示しないが、例えば、割り込みにより、継続的に、診断部１７が２以上の各プロセッサが実行できる命令または実行できない命令を検査し、プロセッサ１４ごとに実行可否情報を取得し、実行可否情報格納部１２に蓄積することは好適である。
【００７５】
また、図２のフローチャートのＳ２０６における１番目のプロセッサを、先の命令（（ｉ−１）番目の命令）を実行したプロセッサとすることは好適である。つまり、命令を実行したプロセッサをカレントのプロセッサとして、カレントのプロセッサを極力変えないように、命令を実行していくことは好適である。
【００７６】
また、図２のフローチャートにおいて、実行可否情報出力部１８は、実行可否情報格納部１２に格納されている１以上の実行可否情報を出力することは好適である。
【００７７】
また、図２のフローチャートにおいて、カウンタｉが存在した。しかし、情報処理システム１が１命令ずつ読み出し、当該読み出した１命令を処理するものである場合など、カウンタｉは不要である。
【００７８】
また、図２のフローチャートにおいて、カウンタｊが存在した。しかし、情報処理システム１が、命令の実行可能な一つのプロセッサ１４のみがアクティブになる構成である場合、カウンタｊは不要である。
【００７９】
さらに、図２のフローチャートにおいて、ステップＳ２０３において、ｉ番目の命令が存在しなければ処理が終了した。しかし、情報処理システム１は、処理を終了しなくても良い。つまり、例えば、情報処理システム１は、次の命令を受け付けるまで、ウエイトしても良い。
【００８０】
以下、本実施の形態における情報処理システム１の具体的な構成や動作等について説明する。
【００８１】
情報処理システム１の目的は、多重に設置されたＣＰＵコアを用いて、コンピュータ・システムの有用性およびハードウェア耐障害性を高めることである。通常、完全なＣＰＵは、ハードウェア障害が発生した場合には、使用不可能である。また、多くの障害が発生した場合、システムを実行するためのＣＰＵが存在しないことは問題である。しかし、本情報処理システム１は、この問題点において従来のシステムとは異なっている。つまり、情報処理システム１において、例えば、ＣＰＵは、小さく、独立した命令グループにスライスされている。なお、命令グループは、同様の命令の組み合わせである。また、情報処理システム１において、フォールト・マップにおける障害を追跡し、部分的に損傷したＣＰＵを使用して、データ処理を行なう。例えば、情報処理システム１が２つのＣＰＵを有する場合、本システムの利点は、両方のＣＰＵが部分的に障害を有する場合でも、処理を継続できることである。また、両方のＣＰＵから破損していない残りの命令に関して、フルスピードでプログラムの実行を継続できる。
【００８２】
なお、上記において、ＣＰＵとは、プロセッサ１４の一種である。フォールト・マップとは、実行可否情報の一例である。
【００８３】
以下、情報処理システム１の２つの具体例を説明する。
【００８４】
（具体例１）
具体例１において、情報処理システム１の構成図は図３である。具体例１において、情報処理システム１は、３つのプロセッサ１４を具備する。
【００８５】
図３のＲＯＭ（Ａ１）は、プログラム格納部１１に対応する。また、ＲＯＭ（Ａ１）は、診断部１７を実現するプログラムを含む。また、診断部１７のプログラムは、図３のＡ８の割り込みルーチンにより実現され得る。
【００８６】
また、図３において、メモリ（Ａ２）は、実行可否情報格納部１２、および遅延マップ格納部１３に対応する。図３の遅延カウンタ（Ａ３）は図１の遅延カウンタ部１６である。また、ＣＰＵ（Ａ４）プロセッサ１４に対応する。図３のＡ５はバスであり、レジスタの情報の共有のための仕組みである。図３のＡ６はデータバスである。また、Ａ７は割り込み信号を示す。Ａ８は診断部１７に対応する。また、上記の診断ルーチンは診断部１７に対応する。さらに、図１の実行可否情報出力部１８は、図３には図示されていない。また、上記の欠陥マップは、実行可否情報に対応する。
【００８７】
コンピュータシステムの有用性を向上させるために、複数のＣＰＵコアは一つのシステムバスにより接続されている。図３において、ＲＯＭ（Ａ１）には、アプリケーションソフトウェア、および割り込み処理ルーチン（Ａ８）が格納されている。また、揮発性または不揮発性メモリ（Ａ２）は、ＲＯＭ（Ａ１）から送付される各マシンコード命令をイネーブル信号に変換するために使用される。メモリのアドレスラインは、プロセッサのデータバスに接続されている。そして、イネーブル信号を受信した一のＣＰＵがアクティブになり、他のＣＰＵについて、アドレスラインとデータラインとが受動維持の状態（ノンアクティブ）となる。複数の各命令は異なる長さを有するので、メモリ（Ａ２）は、すべての命令のＣＰＵ（Ａ４）における実行に必要なクロック数の情報（上記の命令長情報）を有している。そして、クロック数を用いて、プログラムの処理を続行するために別のＣＰＵがアクティブになる前に、一のＣＰＵ上で、すべての命令が確実に実行される。つまり、このクロック数は、不揮発性メモリ（Ａ２）の遅延マップから遅延カウンタ（Ａ３）に渡される。そして、遅延カウンタ（Ａ３）は、すべてのＣＰＵの同じシステムクロックを受信している間、クロック数が０になるまでカウントダウンする。また、レジスタに格納されている実行の結果は、ＣＰＵ間（Ａ４）で共有される。実行結果の共有は、ＣＰＵ（Ａ４）をバス（Ａ５）で結合することにより可能である。また、単にレジスタを集中させるためにレジスタを接続する。あるいは、信頼性を向上させるために、様々な場所で存在するレジスタのデータ（プロセッサ6502の場合は、アキュムレータ、Ｘレジスタ、Ｙレジスタ、プログラムカウンタ、スタックポインタ，ステータスレジスタなど）を、少なくともすべてのマシン命令の実行後に同期させても良い。共有レジスタは、次のマシンコード命令が任意の利用可能なＣＰＵが実行するために必要である。
【００８８】
小さな障害が情報処理システム１内のさまざまな部分に発生した場合、唯一の機能的な命令ユニットがアクティブになる。また、診断ルーチンは、例えば、割り込みシステム（Ａ７）によって、毎秒１０回実行される。割り込みシステム（Ａ７）は、一ＣＰＵ上で一つの命令がまだ機能しているか否かを確認するための高速なテストを実行する。これは、すべてのＣＰＵコア上のすべての命令に対して、繰り返し実施される。例えば、１つのＣＰＵが１００命令を実行でき、情報処理システム１に３つのＣＰＵが存在する場合、それはすべてのＣＰＵコア内のすべての命令の機能を確認する３００のＮＭＩがかかる。これらのテスト結果は、各テストの後に、ＣＰＵによって示される出力ポートやラッチを経由して、マップメモリ（Ａ２）内に書き込まれる。図３において、矢印３１は、マップ更新や書き込みのオペレーションを簡略化したものである。また、図３において、Ｉ／０ポートは、図示しない。また、図３において、Ｏ１〜Ｏ３は、出力ラインを示す。
【００８９】
例えば、入力ポートを介して、欠陥マップを取得することは、障害の種類についての詳細な情報を得ることができる。これは、私たちは完全なＣＰＵシステムの障害を予測するのに役立つ。つまり、実行可否情報は、ユーザに警告するために使用することができる。また、実行可否情報は、システム再設計における部分ＣＰＵコア当たりの命令の量を最適化するために使用できる。また、障害が発生する可能性が低い命令は、スペースを節約するために、将来のＣＰＵコアから一部省略することができる。そして、さらに信頼性を高めるために、この確保されたスペースを用いて、多くのＣＰＵコアを追加できる。
【００９０】
（具体例２）
具体例２において、情報処理システム１の構成図は図４である。具体例２において、情報処理システム１は、２つのプロセッサ１４を具備する。
【００９１】
図４において、Ｂ１はＲＯＭであり、プログラム格納部１１、診断部１７に対応する。つまり、ＲＯＭ（Ｂ１）には、実行対象のプログラム、診断部１７を構成するソフトウェア等が格納されている。
【００９２】
また、Ｂ２はＲＡＭまたはＥＥＰＲＯＭ（例えば、フラッシュメモリ）であり、実行可否情報格納部１２、遅延マップ格納部１３に対応する。つまり、ＲＡＭ等（Ｂ２）には、実行可否情報、命令長情報が格納されている。
【００９３】
また、Ｂ３は遅延カウンタであり、遅延カウンタ部１６に対応する。遅延カウンタ（Ｂ３）は、ＲＡＭ等（Ｂ２）の命令長情報を用いて、必要なクロック数だけ、ウエイトする。
【００９４】
また、Ｂ４は、ここではＣＰＵであり、プロセッサ１４に対応する。さらに、Ｂ５は、インバータであり、ＣＰＵを切替える機能を有し、制御部１５に該当する。なお、ＣＰＵ１が実行不可である場合、ＣＰＵ２は実行可能である。
【００９５】
また、Ｂ６は、例えば、１６ビットのアドレスバスであり、Ｂ７は、例えば、８ビットのデータバスである。さらに、Ｂ８は、ＣＰＵのレジスタに格納される各ＣＰＵの実行結果を同期させるためのバスである。
【００９６】
本具体例に示すように、２つだけのコア（プロセッサ１４）が使用される場合、このシステムの安価なバージョンが可能である。本具体例では、唯一のマップメモリが実装されている。
【００９７】
図４の情報処理システムにおいて、一のＣＰＵコア（Ｂ４）が一の命令を実行できない場合は、診断ルーチン（Ｂ１１）は、マップメモリ（Ｂ２内）の欠陥フラグ（実行可否情報）を、当該一のＣＰＵコアが一の命令または当該一の命令を含む命令グループを実行できない旨の情報に書き換える。そして、同時に、インバータ（Ｂ５）を用いて、他方のＣＰＵコアにおいて当該一の命令、または当該一の命令を含む命令グループをアクティブにする。
【００９８】
なお、両方のＣＰＵコアにおいて、同一の命令または命令グループが実行できない障害を有する場合、システムは動作せず、回復不可能である。
【００９９】
そして、かかる場合、設計を効率的に行なうには、その単一の命令を他の命令に対して独立のグループとする。このような設計により、物理的は破損（オープン、ショート）により、一命令に対する障害が発生した場合でも、他の命令の実行に影響を与えにくくなることを意味する。
【０１００】
また、例えば、図４の情報処理システム１において、２つの各ＣＰＵコア（ｃｏｒｅ１，ｃｏｒｅ２）のうち、ｃｏｒｅ１が「ＪＭＰ」「ＪＳＲ」命令が実行不可であり、ｃｏｒｅ２が「ＬＤＡ」「ＳＴＡ」命令が実行不可であることを示す実行可否情報が、ＲＡＭ等（Ｂ２）に格納されていた、とする（図５参照）。
【０１０１】
かかる場合、図５に示すように、情報処理システム１は、ｃｏｒｅ１、またはｃｏｒｅ２を用いて、すべての命令を実行できる。つまり、例えば、「ＪＭＰ」命令を実行する場合は、ｃｏｒｅ２が使用され、「ＬＤＡ」命令を実行する場合は、ｃｏｒｅ１が使用される。
【０１０２】
以上、本実施の形態によれば、すべてのプロセッサが部分的に障害を負った場合でも、プログラムの実行を継続でき得る。
【０１０３】
なお、本実施の形態において、情報処理システム１は、プログラム格納部１１、実行可否情報格納部１２、２以上のプロセッサ１４、制御部１５だけでも良い。かかる場合、情報処理システム１において、一のプロセッサで命令実行中に、他のプロセッサにおいて、十分な長さのクロック数だけウエイトするようにすれば良い。また、かかる場合、実行可否情報は外部から与えられる。かかる場合の情報処理システム１のブロック図を図６に示す。
【０１０４】
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【産業上の利用可能性】
【０１０５】
以上のように、本発明にかかる情報処理システムは、プロセッサが部分的に障害を負った場合でも、プログラムの実行を継続できるという効果を有し、情報処理システム等として有用である。
【符号の説明】
【０１０６】
１  情報処理システム
１１  プログラム格納部
１２  実行可否情報格納部
１３  遅延マップ格納部
１４  プロセッサ
１５  制御部
１６  遅延カウンタ部
１７  診断部
１８  実行可否情報出力部
１２１  実行可否情報格納手段
１４１  レジスタ
【要約】
【課題】プロセッサが部分的にでも障害を負った場合、当該プロセッサを有効に利用して、プログラムの実行ができなかった。
【解決手段】１以上の命令を実行できる２以上のプロセッサと、２以上の各プロセッサが実行できる命令または実行できない命令を特定する情報である実行可否情報を２以上の各プロセッサごとに格納し得る実行可否情報格納部と、プログラムを実行する際に、実行可否情報を参照し、２以上のプロセッサのうち、プログラムを実行するために必要な１以上の各命令を実行できるプロセッサを決定し、決定したプロセッサに命令を実行させる制御部とを具備する情報処理システムにより、プロセッサが部分的に障害を負った場合でも、当該プロセッサを有効に利用して、プログラムの実行を継続できる。
【選択図】図１【図１】
0005467172.tif 000002
【図２】
0005467172.tif 000003
【図３】
0005467172.tif 000004
【図４】
0005467172.tif 000005
【図５】
0005467172.tif 000006
【図６】
0005467172.tif 000007