(57)【特許請求の範囲】
【請求項１】
複数のバス制御モジュールを接続できるバスシステムにおいて使用されるバス制御モジュールであって、
情報の書換え可能な不揮発性メモリと、
自モジュール内で障害を検出したとき、エラー要因を保持する保持部と、
バスから切り離すことを指示する状態遷移命令を他のバス制御モジュールから受けると、自モジュールをバスから切り離し状態に遷移させ、エラーログフラグを設定する状態制御部と、
前記エラーログフラグが設定されていることを検出すると、前記保持部に保持されているエラー要因を読み出して前記不揮発性メモリにエラーログ情報として書き込むエラーログ制御部と、
を有することを特徴とするバス制御モジュール。
【請求項２】
請求項１に記載のバス制御モジュールを備えるバスシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、バス制御モジュールが故障したときにエラーログをフラッシュメモリやＥＥＰＲＯＭなどの不揮発性書換え可能なメモリに格納するエラーログ装置に関する。
【０００２】
【従来の技術】
バス制御システムにおいては、１つのシステムバスに複数のバス制御モジュールが接続され、システムバスを制御することによりバス制御モジュール間でデータ処理を実行する。このようなバス制御モジュールにおいて、他のバス制御モジュールに障害を与えるような重大な故障が発生することがある。
【０００３】
また、近年の半導体技術の発展に伴い、バス制御モジュールの種類や数が増加してきた。このため、バス制御モジュールが故障した場合にエラー情報を収集して記録するエラーログも複雑でかつ大規模化してきた。
【０００４】
この場合、あるバス制御モジュールが故障すると、そのバス制御モジュールはＨＡＬＴまたはＯＦＦＬＩＮＥ状態で停止する。その後、システムバス上の別のバス制御モジュールからの指示で発行されるＩＰＬリセットによって障害バス制御モジュール上でファームウェアが再起動される。
【０００５】
そして、そのファームウェアによって障害バス制御モジュール内各部から収集されたエラー要因をシステムバスを介して外部記憶装置に格納していた。その後に、障害バス制御モジュールは、再び別のバス制御モジュールの指示によってディスコネクト状態（切り離し状態）とされ、活性抜き出し／挿入により代替品と交換される。
【０００６】
さらに、外部記憶装置に格納されたエラーログを別途回収した後、交換された障害バス制御モジュールの障害調査を行っていた。
【０００７】
【発明が解決しようとする課題】
しかしながら、バス制御モジュールの種類が多くなると、外部記憶装置に格納されるエラーログが複雑／大量となる。このため、障害調査を行うために外部記憶装置からエラーログを回収すると、システムの負荷が増大する。また、回収されたエラーログと障害バス制御モジュールとを対応付けるテーブルを別途用意する必要があった。
【０００８】
さらに、システムバス、またはシステムバスを介して他のバス制御モジュールに対して悪影響を与えるような重大な障害が発生した場合等、外部記憶装置にエラー情報をロギングする前に障害モジュールがディスコネクトされた場合には、どこにもエラーログが残らない。
【０００９】
一方、この種の公知技術として、特開平１−２３７７３９がある。特開平１−２３７７３９の技術は、被診断回路にエラーが発生したとき、格納制御手段が被診断回路内のエラー情報をスキャンアウトして収集し外部に設けられたＥＥＰＲＯＭに格納されるものである。
【００１０】
しかし、この公知技術にあっては、ＥＥＰＲＯＭが外部にあるため、ＥＥＰＲＯＭからのエラーログの回収作業により、システムの負荷が増大する等の問題があった。
【００１１】
本発明の目的はエラーログを確実に保存し、かつ、外部記憶装置に格納されたエラーログ回収作業をなくすことのできるエラーログ装置を提供する。
【００１２】
【課題を解決するための手段】
本発明のエラーログ装置は、前記課題を解決するため、以下の手段を採用した。
【００１３】
＜本発明のエラーログ装置の要旨＞
本発明のエラーログ装置は図１に示したように１つのバスに接続されるとともにバスを介して相互間でデータ処理を行う複数のバス制御モジュールを備える。
【００１４】
前記各々のバス制御モジュールは、情報を書換え可能な不揮発性メモリと、障害が発生した自己のバス制御モジュールをバスから切り離すための状態遷移命令を他のバス制御モジュールから入力したとき自己のバス制御モジュールを切り離し状態に遷移させ自己の制御モジュールのエラー要因を不揮発性メモリに記録させることを示すエラーログフラグを設定する状態制御部と、前記障害を検出したとき障害が発生した自己のバス制御モジュールのエラー要因を保持する保持部と、前記エラーログフラグを検出した場合に前記保持部に保持されたエラー要因を読み出して前記不揮発性メモリにエラーログ情報として書き込むエラーログ制御部とを備える（請求項１に対応）。
【００１５】
この発明によれば、自己のバス制御モジュールに障害が発生すると、他のバス制御モジュールはその障害を検出し状態遷移命令を障害バス制御モジュールに出す。状態制御部が、状態遷移命令を他のバス制御モジュールから入力すると、自己の障害バス制御モジュールを切り離し状態に遷移させる。状態制御部は自己の制御モジュールのエラー要因を不揮発性メモリにエラーログフラグを設定する。
【００１６】
次に、保持部が障害を検出したとき障害バス制御モジュールのエラー要因を保持し、エラーログ制御部はエラーログフラグを検出した場合に保持部に保持されたエラー要因を読み出して不揮発性メモリにエラーログ情報として書き込む。その結果、エラーログをバス制御モジュール内の不揮発性メモリに格納することになる。
【００１７】
ここで、不揮発性メモリは、フラッシュメモリ、ＥＥＰＲＯＭなどである。状態制御部は、例えば、中央処理装置（ＣＰＵ）がメモリに格納されたプログラムやシステムバス経由で他のバス制御モジュールの発行するコマンドによって制御される機能部である。保持部は、半導体メモリ、レジスタなどの記憶媒体である。エラーログ制御部は、後述するように、例えばファームウェアなどである。なお、エラーログフラグはエラーログ未完了フラグとして設定されてもよい。
【００１８】
また、本発明は以下の付加的構成要素を付加することによっても成立する。
その付加的構成要素とは、前記不揮発性メモリは、エラーログ情報と中央処理部によって実行されるファームウェアとを格納し、前記エラーログ制御部は、前記ファームウェアからなる。前記状態制御部は、バスからの状態遷移命令を解析してバス制御モジュールを切り離し状態に遷移させる状態遷移部と、前記状態遷移部による切り離し状態と同時に中央処理部を初期化するためのリセットを発行するリセット発行部と、前記リセットを発行した後にモジュールが切り離し状態である場合にエラーログフラグを設定するフラグセット部とを備える。
【００１９】
前記ファームウェアは、前記障害を発生したバス制御モジュールが切り離し状態であってかつエラーログフラグが設定されている場合に前記リセット発行後のバス制御モジュール内の初期化処理から分岐し前記保持部に保持されたエラー要因を読み出して不揮発性メモリへ書き込みエラーログフラグをリセットした後に停止する（請求項２に対応）。
【００２０】
この付加的構成要素によれば、状態遷移部が、バスからの状態遷移命令を解析してバス制御モジュールを切り離し状態に遷移させると、リセット発行部が前記切り離し状態と同時に中央処理部を初期化するためのリセットを発行する。フラグセット部が、リセットを発行した後にモジュールが切り離し状態である場合にエラーログフラグを設定する。そして、ファームウェアは、障害バス制御モジュールが切り離し状態でかつエラーログフラグが設定されている場合にバス制御モジュールの初期化処理から分岐し保持されたエラー要因を読み出して不揮発性メモリへ書き込みエラーログフラグをリセットした後に停止する。その結果、ディスコネクト状態でエラーログ情報を不揮発性メモリへの書き込みが完了することになる。
【００２１】
その他の付加的構成要素とは、前記不揮発性メモリに格納されているエラーロギングファームウエアのコピーを格納するメモリで構成された一時退避部を備え、前記状態遷移部による切り離し状態を検出した後に発行されるリセット後、前記不揮発性メモリ内のエラーロギングファームウエアを前記一時退避部へコピーし、コピーの完了時に不揮発性メモリに記述されているファームウエアから一時退避部に記述されているファームウエアへプログラムをブランチさせ、不揮発性メモリへエラーログを書き込む（請求項３に対応）。
【００２２】
この発明によれば、例えば、複数のコマンドシーケンスによってエラーログを書き込む場合、一旦、エラーログ情報を全て一時退避部に書き込み、その後に、コピーファームウェアによってそのエラーログ情報を不揮発性メモリに書き込む。その結果、一連のコマンドシーケンスを命令フェッチなどによって中断されることなく実行できる。
【００２３】
その他の付加的構成要素とは、前記不揮発性メモリに格納されているエラーロギングファームウエアを格納しておく第１の不揮発性メモリと、エラーログを格納する第２の不揮発性メモリとを備え、前記状態遷移部による切り離し状態を検出した後に発行されるリセット後、前記第１の不揮発性メモリ内のエラーロギングファームウエアを走行させて、前記保持部に格納されているエラーログを第２の不揮発性メモリに書き込みエラーログフラグをクリアして停止する（請求項４に対応）。
【００２４】
この発明によれば、ファームウェアと、エラーログとを別々の第１の不揮発性メモリと第２の不揮発性メモリに格納し、ファームウェアは第１の不揮発性メモリで動作する。例えば、一連のコマンドによってエラーログを第２の不揮発性メモリに書き込む。その結果、一連のコマンドが命令フェッチなどにより壊れることがなくなる。
【００２５】
その他の付加的構成要素とは、前記不揮発性メモリへのエラーログの書き込み及び読み出しを制御するメモリ制御部を備え、前記メモリ制御部は、不揮発性メモリへのエラーログの書き込みに必要な一連のコマンド、書き込みアドレス及び書き込みデータを順次発行するための書き込みシーケンサと、書き込みアドレス及び書き込みデータを記憶する記憶部と、ファームウェアから書き込みシーケンサを起動するための起動部と、ファームウェアから起動部への書き込みアクセスを起動した後に書き込みシーケンサの発行が完了するまで不揮発性メモリへの次のアクセスを待ち合わせる待合せ部とを備える（請求項５に対応）。
【００２６】
この発明によれば、ファームウェアが書き込みアドレス及び書き込みデータのセット命令を発行すると、記憶部はそのアドレス及びデータを記憶する。次に、ファームウェアが起動部に対して書き込み開始命令を発行すると、起動部が書き込みシーケンサを起動する。
【００２７】
書き込みシーケンサは起動されると、予め決められた一連のコマンドと、記憶部に格納されている書き込みアドレスと、書き込みデータとを、順次不揮発性メモリに対して発行する。
【００２８】
そして、待合せ部はファームウェアから起動部への書き込みアクセスを起動した後に書き込みシーケンサの発行が完了するまで次の不揮発性メモリへのアクセスを待ち合わせる。その結果、コマンドシーケンスを崩すような不揮発性メモリへのアクセスの抑止を保障できる。
【００２９】
本発明は上記のバス制御モジュールを備えるバスシステムとしても特定できる。
【００３２】
その他の付加的構成要素とは、エラーログ装置が、前記バス制御モジュールに接続され障害バス制御モジュールがバスから切り離し状態にある場合に前記エラーログフラグを外部に出力するバスインターフェイスを備えることである（請求項７に対応）。
【００３３】
この発明によれば、障害バス制御モジュールがバスから切り離し状態でも、バスインターフェイスは障害バス制御モジュールに接続され、エラーログフラグを障害バス制御モジュールから外部に読み出す。その結果、エラーログフラグのセット、クリアによってエラーログの格納が完了したか否かがわかる。
【００３４】
【発明の実施の形態】
以下、本発明のエラーログ装置の実施例を図面を参照して説明する。
＜発明の実施の形態１＞
図２は本発明の実施の形態１のエラーログ装置を示す構成ブロック図である。図２において、１つのシステムバス３には、障害対象のバス制御モジュール１ａ−１と、他のバス制御モジュール１ｂ−１が接続されている。この場合、バス制御モジュール１ａ−１，１ｂ−１は図示しないバックパネルコネクタを介してシステムバス３に接続され、活性挿入／抜き出し可能になっている。システムバス３を介してバス制御モジュール１ａ−１，１ｂ−１の相互間でデータ処理が行えるようになっている。
【００３５】
バス制御モジュール１ａ−１は、チップバス１０に接続される中央処理部ＰＵ１１、不揮発性メモリＦＭ１２、ＰＵ１１及びＦＭ１２に接続されるメモリ制御部ＭＵ１３、チップバス１０に接続される一時退避部ＬＳ１４、チップバス１０に接続される状態制御部ＳＵ１５、複数の保持部ＣＵ１６とを備える。
【００３６】
不揮発性メモリＦＭ１２はエラーログ制御部としてのファームウェアＦＷ２１、エラーログ２２を格納するフラッシュメモリ、あるいはＥＥＰＲＯＭなどの不揮発性書換え可能なメモリである。
【００３７】
前記中央処理部ＰＵ１１は前記不揮発性メモリＦＭ１２に格納されたファームウェアＦＷ２１を実行する。メモリ制御部ＭＵ１３は、ファームウェアＦＷ２１からの指示によって不揮発性メモリＦＭ１２に対する書き込み／読み出しを実行する。
【００３８】
一時退避部ＬＳ１４は一時退避エラーログ４１を記憶する図示しない主記憶メモリと、主記憶メモリを制御する図示しない記憶制御部とを備える。状態制御部ＳＵ１５はシステムバス３からの状態遷移命令を解析して動作する。
【００３９】
状態制御部ＳＵ１５は、状態遷移部５１、リセット発行部５２、フラグセット部５３、読み出し部５４とを備える。
状態遷移部５１は、システムバス３からの命令を解析してバス制御モジュールの状態をディスコネクト状態に遷移させる。リセット発行部５２は、前記状態遷移部５１によるディスコネクト状態と同時にバス制御モジュール全体に対してエラー要因を保持し中央処理部ＰＵ１１を初期化するためのＩＰＬリセットを発行する。
【００４０】
フラグセット部５３は、ディスコネクト状態への遷移に伴うＩＰＬリセット後にモジュールがディスコネクト状態である場合に中央処理部ＰＵ１１に対して割り込み要求を発行するか、またはエラーロギング未完了フラグを図示しないレジスタにセットする。読み出し部５４は、ファームウェアＦＷ２１の指示により自己のバス制御モジュールのディスコネクト状態の読み出し、エラーロギング未完了フラグの読み出し／クリアを行う。
【００４１】
前記ファームウェアＦＷ２１は、状態制御部ＳＵ１５から発行されるディスコネクト状態遷移に伴うＩＰＬリセット後のエラーロギング割り込み、またはディスコネクト状態におけるエラーログ未完了フラグのセットを認識した場合にモジュール内の初期化処理から分岐してモジュール内の各機能部に保持されているエラー要因を読み出し、不揮発性メモリＦＭ１２へ書き込む。
【００４２】
複数の保持部ＣＵ１６ａ−１６ｎは、内部チップバスや制御線を介して中央処理部ＰＵ１１、状態制御部ＳＵ１５に接続され、異常を検出した際にその内部にエラー要因を保持する。
【００４３】
なお、エラー要因は前記一時退避部１４に格納するようにしてもよい。
なお、バス制御モジュール１ｂもバス制御モジュール１ａの構成と同一構成となっているが、ここでは、その詳細は図示していない。
【００４４】
次に、エラーログ装置の動作を説明する。まず、バス制御モジュールＢＭ１ａ−１において、システムバス３及びシステムバス３を介して他のバス制御モジュールＢＭ１ｂ−１に悪影響を与えるような重大な障害が発生したとする。
【００４５】
このとき、システムバス３上の他のバス制御モジュール１ｂ−１が、前記障害を検出すると、他のバス制御モジュール１ｂ−１はその障害バス制御モジュール１ａ−１に対してシステムバス３から障害バス制御モジュール１ａ−１をディスコネクトするための状態遷移命令を発行する。
【００４６】
すると、障害バス制御モジュール１ａ−１内の状態制御部ＳＵ１５において、状態遷移部５１は、システムバス３からディスコネクトするための状態遷移命令を取り込み、ファームウェアＦＷの介在なしにモジュールの状態をディスコネクト状態に遷移させてシステムバス３に対する全ての信号線のドライバをクローズさせる。
【００４７】
さらに、リセット発行部５２は、前記状態遷移部５１の動作と同時に、モジュール内保持部ＣＵ１６ａ〜１６ｎ内に存在するエラー要因レジスタ（図示しない）の内容を消去せずにモジュールの状態をディスコネクトに保持しつつ、中央処理部ＰＵ１１を初期化するめたのＩＰＬリセットをファームウェアＦＷの介在なしに発行する。
【００４８】
このとき、フラグセット部５３は、エラーロギング未完了を示すフラグをセットする。また、前記ＩＰＬリセット後に、フラグセット部５３は、状態制御部ＳＵから再起動されたファームウェアＦＷに対して、エラーロギングを開始させるための割り込み要求を発行するか、または、アドレスマップされたレジスタとして読み出させることによって通知する。
【００４９】
ファームウェアＦＷは、図３に示すフローチャートに従って処理が行われる。ファームウェアＦＷは、モジュール内のハードウェア資源の初期化を行う（ステップ１０１）。このとき、バス制御モジュール内の図示しない制御レジスタのセット、ＬＳのＭＭＵテーブルのマッピング、割り込み要因レジスタのクリアを行う。
【００５０】
次に、ファームウェアは各ＣＵ内に存在するエラー要因を収集して一時退避部ＬＳ１４内の主記憶部へ格納する（ステップ１０２）。そして、ファームウェアは、自己のモジュールのディスコネクト状態とエラーロギング未完了フラグを監視してディスコネクト状態とエラーロギング未完了フラグがどうようになっているのかを判定する（ステップ１０３）。
【００５１】
ここで、障害バス制御モジュールがディスコネクト状態であって、かつエラーロギング未完了フラグがセットされている場合には、後述する通常のファームウェア処理から分岐し、ファームウェアは不揮発性メモリ１２に一時退避部１４に格納されたエラーログを書き込む（ステップ１０４）。
【００５２】
さらに、エラーロギング未完了フラグをクリアし（ステップ１０５）、ＳＥＬＦ  ＨＡＬＴによってファームウェアは停止する（ステップ１０６）。以上の処理によりファームウェアの処理が終了すると、障害バス制御モジュールを図示しないコネクタから活性抜き出して、そのモジュールを工場に持ち返って調査、修理を行う。
【００５３】
一方、障害バス制御モジュールがコネクト状態か、またはエラーロギング未完了フラグがセットされていない場合には、通常のファームウェアプロセスに進む。すなわち、リセット要因の判定が行われ（ステップ１０７）、ハードウェア初期診断を行い（ステップ１０８）、あるいは、ハードウェア初期診断を行わずに、ソフトウェアローディングを行う（ステップ１０９）。
【００５４】
このように、外部記憶装置に対してエラーログを格納できないような重大障害が発生しても、バス制御モジュール内の不揮発性メモリ内にエラーログを保持することができる。この不揮発性メモリはバス制御モジュールとともに持ち運びできるので、従来のように外部記憶装置に格納されたエラーログを改めて回収したり、あるいは、エラーログを障害バス制御モジュールに対応付けるテーブルを設ける必要もなくなり、容易に障害解析を行うことができる。
＜発明の実施の形態２＞
次に、本発明の実施の形態２を説明する。不揮発性メモリ１２がフラッシュメモリである場合には、複数の連続したコマンドシーケンスによって１つのデータをフラッシッメモリに書き込む。この一連のコマンドシーケンスは、例えば、アドレスセット、入力データ、書き込み開始などのシーケンスである。
【００５５】
ここでは、保持部１６ａ〜１６ｎに記憶されたエラー要因をフラッシュメモリに書き込むために、フラッシュメモリに一連のコマンドを順番に送る。この場合、エラー要因をフラッシュメモリに書き込む命令を実行するためには、その命令をフラッシュメモリから中央処理部１１にフェッチする必要がある。
【００５６】
しかし、フラッシュメモリの場合、一連のコマンドの間にメモリフェッチがはいると、一連のコマンドがくずれてしまい、エラー要因の書き込みができなくなる。
【００５７】
このため、実施の形態２では、ファームウェア２１の内容をコピーしたコピーファームウェア４２を一時退避部１４に設ける。記憶媒体が主記憶メモリであるため、フラッシュメモリなどのように一連のコマンドはファームウェアの書き込みに必要でない。
【００５８】
コピーファームウェア４２は、動作して一時退避部１４に格納された一時退避エラーログ４１をフラッシュメモリである不揮発性メモリ１２に対して一連のコマンドシーケンスを命令フェッチなどによって中断することなく実行してエラーログ２２として書き込む。
【００５９】
なお、その他の構成は実施の形態１と同一構成であるので、その詳細は省略する。  まず、他のバス制御モジュール１ｂ−２が、障害を検出すると、障害バス制御モジュール１ａ−２内の状態遷移部５１は、システムバス３からディスコネクトするための状態遷移命令を取り込み、モジュールの状態をディスコネクト状態に遷移させる。
【００６０】
さらに、リセット発行部５２は、中央処理部ＰＵ１１を初期化するＩＰＬリセットを発行する。このとき、フラグセット部５３は、エラーロギング未完了を示すフラグをセットする。
【００６１】
ファームウェアＦＷは、図５に示すフローチャートに従って処理が行われる。ファームウェアＦＷは、モジュール内のハードウェア資源の初期化を行う（ステップ２０１）。このとき、バス制御モジュール内の図示しない制御レジスタのセット、ＬＳのＭＭＵテーブルのマッピング、割り込み要因レジスタのクリアを行う。
【００６２】
次に、ファームウェアは各ＣＵ内に存在するエラー要因を収集して一時退避部ＬＳ１４内の主記憶部へ格納する（ステップ２０２）。そして、ファームウェアは、自己のモジュールのディスコネクト状態とエラーロギング未完了フラグを監視してディスコネクト状態とエラーロギング未完了フラグがどうようになっているのかを判定する（ステップ２０３）。
【００６３】
ここで、障害バス制御モジュールがディスコネクト状態であって、かつエラーロギング未完了フラグがセットされている場合には、コピーファームウェア４２は動作してファームウェア２１の処理とはブランチする（ステップ２０４）。そして、このコピーファームウェア４２は一時退避部１４に格納された一時退避エラーログ４１をフラッシュメモリ１２に対して一連のコマンドシーケンスを命令フェッチなどによって中断することなく実行してエラーログ２２として書き込む（ステップ２０５）。
【００６４】
このとき、図６を参照してコピーファームウェア４２のＦＭへのエラーログ情報書き込みを詳細に説明する。まず、一時退避部１４からの一時退避エラーログ４１を読み出す（ステップ２１１）。この場合、エラーログの読み出しは例えば、４バイト単位とする。
【００６５】
次に、読み出されたデータから１バイト単位で書き込みデータの切り出しを行う（ステップ２１２）。図７に示すように、ＦＭに対するコマンドシーケンス＃１相当のストア命令を発行する（ステップ２１３）。
【００６６】
図７において、コマンドシーケンスは入力アドレスが１９ビット、入力データが８ビット、制御線が−チップイネーブルＣＥ、−ライトイネーブルＷＥ、−アウトイネーブルＯＥで構成される。コマンドシーケンス＃１は、入力アドレスがｘ’０５５５５’、入力データがｘ’ａａ’、−ＣＥ及び−ＷＥが０、−ＯＥが１である。
【００６７】
次に、図７に示すＦＭに対するコマンドシーケンス＃２相当のストア命令を発行する（ステップ２１４）。ＦＭに対するコマンドシーケンス＃３相当のストア命令を発行する（ステップ２１５）。
【００６８】
さらに、ＦＭに対する書き込みアドレスと切り出した書き込みデータを用いたＦＭに対するコマンドシーケンス＃４相当のストア命令を発行する（ステップ２１６）。
【００６９】
判定回数が、１個のエラーログデータにおけるバイト数分の繰り返し回数に一致したかを判定する（ステップ２１７）。判定回数が、繰り返し回数に一致しない場合には、ステップ２１２に戻り、ステップ２１２以降の処理を繰り返し行うことになる。
【００７０】
判定回数が、繰り返し回数に一致した場合に、次に、判定回数が、エラーログデータ個数分の繰り返し回数に一致したかを判定する（ステップ２１８）。判定回数が、繰り返し回数に一致しない場合には、ステップ２１１に戻り、ステップ２１１以降の処理を繰り返し行うことになる。
【００７１】
判定回数が、繰り返し回数に一致した場合には、エラーロギングを完了する。
さらに、エラーロギング未完了フラグをクリアし（ステップ２０６）、ＳＥＬＦ  ＨＡＬＴによってファームウェアは停止する（ステップ２０７）。以上の処理によりファームウェアの処理が終了すると、障害バス制御モジュールを図示しないコネクタから活性抜き出して、そのモジュールを工場に持ち返って調査、修理を行う。
【００７２】
一方、障害バス制御モジュールがコネクト状態か、またはエラーロギング未完了フラグがセットされていない場合には、通常のファームウェアプロセスに進む。すなわち、リセット要因の判定が行われ（ステップ２０８）、ハードウェア初期診断を行い（ステップ２０９）、あるいは、ハードウェア初期診断を行わずに、ソフトウェアローディングを行う（ステップ２１０）。
【００７３】
このように、実施の形態１と同様な効果が得られる。また、不揮発性メモリ１２がフラッシュメモリであり、複数のコマンドシーケンスによってエラーログを書き込む場合であっても、一旦、エラー要因を全て一時退避部１４の主記憶メモリに書き込み、その後に、コピーファームウェア４２によってそのエラー要因をフラッシュメモリに書き込むので、一連のコマンドシーケンスを命令フェッチなどによって中断されることなく実行できる。
＜発明の実施の形態３＞
次に、本発明の実施の形態３を説明する。不揮発性メモリがフラッシュメモリである場合、そのフラッシュメモリに１つのデータを書き込むとき複数の連続したコマンドシーケンスが必要である。
【００７４】
実施の形態３はファームウェアＦＷ２１を格納する不揮発性メモリ１２ａと、エラーログ２２を格納する不揮発性メモリ１２ｂとを設ける。ファームウェアＦＷ２１は不揮発性メモリ１２ａで動作させたまま、中央処理部１１は不揮発性メモリ１２ａからメモリ制御部１３を介してメモリフェッチをもってくる。
【００７５】
また、ファームウェアＦＷ２１は、一連のコマンドシーケンスを中断することなく実行することによりモジュール各部から収集され一時退避部１４に格納されている一時退避エラーログを不揮発性メモリ１２ｂに書き込み、エラーロギング未完了フラグをクリアした上でＳＥＬＦ  ＨＡＬＴによって停止する。
【００７６】
このように、ファームウェアＦＷ２１と、エラーログ２２とを別々の不揮発性メモリに格納し、ファームウェア２１に対して１つのバスで命令フェッチし、もう１つのバスで一連のコマンドによってエラーログを書き込む。その結果、一連のコマンドが命令フェッチにより壊れることがなくなり、確実にエラーログがフラッシュメモリに書き込まれる。
＜発明の実施の形態４＞
本発明の実施の形態４を説明する。不揮発性メモリ１２がフラッシュメモリである場合には、そのフラッシュメモリに１つのデータを書き込むとき、複数の連続したコマンドシーケンスが必要である。
【００７７】
実施の形態４はメモリ制御部ＭＵ１３−４の構成が他の実施の形態と異なる。メモリ制御部ＭＵ１３−４は、フラッシュメモリ１２へのエラーログ２２の書き込みに必要な一連のコマンドＣＤ、書き込みアドレスＷＡ及び書き込みデータＷＤを順次発行するためのＦＭ書き込みシーケンサＳＱと、ファームウェア２１から予めセットされた書き込みアドレスＷＡ及び書き込みデータＷＤをエラーログ２２の書き込み完了まで保持するアドレスレジスタ３１及びデータレジスタ３２と、ファームウェア２１からＦＭ書き込みシーケンサＳＱを起動するためのＳＱ起動レジスタ３３とを備える。
【００７８】
メモリ制御部はファームウェア２１からＳＱ起動レジスタ３３への書き込みアクセスをＦＭ書き込みシーケンサＳＱの発行が完了までインターロックする。または、メモリ制御部はファームウェア２１からＳＱ起動レジスタ３３への書き込みアクセスを起動した後にＦＭ書き込みシーケンサＳＱの発行が完了するまで次のフラッシュメモリ１２へのアクセスを待ち合わせる待合せ部３５を設ける。
【００７９】
これによって、コマンドシーケンスを崩すようなフラッシュメモリ１２へのアクセスの抑止を保障する。
メモリ制御部１３−４は、ディスコネクト状態でＩＰＬリセット後にエラーロギング未完了フラグがセットされている場合に、ファームウェアの指示によってモジュール各部から収集され一時退避部１４に格納されているエラー要因をデータレジスタ３２（ＷＤバッファ）へストアする命令と、フラッシュメモリのロギング対象アドレスをアドレスレジスタ３１（ＷＡバッファ）へストアする命令と、フラッシュメモリへの書き込みを起動するＳＱ起動レジスタ３３へのストア命令と、を連続して実行することによって、ファームウェア２１をフラッシュメモリ１２で動作させたまま、書き込みに必要な一連のコマンドシーケンスを中断することなく実行し、エラーログ２２をフラッシュメモリ１２に書き込む。
【００８０】
なお、その他の構成は実施の形態１の構成と同一であるので、その詳細は省略する。
次に、図１０を参照してメモリ制御部１３−４のフラッシュメモリ１２へのエラーログ情報書き込みを詳細に説明する。まず、一時退避部１４からの一時退避エラーログ４１を図示しない汎用レジスタに読み出す（ステップ４１１）。この場合、エラーログの読み出しは例えば、４バイト単位とする。
【００８１】
次に、ファームウェアはエラーログ４１によりフラッシュメモリ１２への書き込みアドレスＷＡをセット、すなわち、アドレスレジスタ３１（ＷＡバッファ）にストアする（ステップ４１２）。
【００８２】
次に、ファームウェアはエラーログ４１により書き込みデータＷＤのセット、すなわち、データレジスタ３２（ＷＤバッファ）にストアする（ステップ４１３）。
【００８３】
次に、ファームウェアはエラーログ４１によりＳＱ起動レジスタ３３のセットを行う（ステップ４１４）。この場合、ＭＵ内のＣＲレジスタにストアする。次に、待合せ部３５はハードウェア処理待ち時間を設定する（ステップ４１５）。すなわち、待合せ部３５は、ファームウェア２１からＳＱ起動レジスタ３３への書き込みアクセスを起動した後にＦＭ書き込みシーケンサＳＱの発行が完了するまで次のフラッシュメモリ１２へのアクセスを待ち合わせる。
【００８４】
さらに、判定回数が、エラーログデータ個数分の繰り返し回数に一致したかを判定する（ステップ４１６）。判定回数が、繰り返し回数に一致しない場合には、ステップ４１１に戻り、ステップ４１１以降の処理を繰り返し行うことになる。
【００８５】
判定回数が、繰り返し回数に一致した場合には、エラーロギングを完了する。
このように、待合せ部３５はファームウェア２１からＳＱ起動レジスタ３３への書き込みアクセスを起動した後にＦＭ書き込みシーケンサＳＱの発行が完了するまで次のフラッシュメモリ１２へのアクセスを待ち合わせるので、コマンドシーケンスを崩すようなフラッシュメモリ１２へのアクセスの抑止を保障できる。
【００８６】
また、メモリ制御部１３−４は、各ストア命令を連続して実行することによって、ファームウェア２１をフラッシュメモリ１２で動作させたまま、書き込みに必要な一連のコマンドシーケンスを中断することなく実行し、エラーログ２２をフラッシュメモリ１２に書き込むことができる。
＜発明の実施の形態５＞
次に、本発明の実施の形態５を説明する。実施の形態５においては、状態制御部１５は、障害バス制御モジュールをディスコネクト状態に遷移させると同時にＩＰＬリセットを発行した後に、セットされたエラーロギング未完了フラグによって中央処理部１１に対して割り込み要求線を介してエラーロギング割り込み要求を発行する割り込み発行部５５と、割り込み発行部５５で発行された割り込み要求をマスクする割り込みマスク部５６とを設ける。
【００８７】
この割り込みレベルを中央処理部１１にとってマスク可能な最優先レベルに割当てる。
再起動されたファームウェア２１はエラー要因の収集完了後にエラーロギング割り込みのマスクを解除してエラーロギング割り込みを認識した場合に、一時退避部１４に格納されているエラー要因をフラッシュメモリ１２に書き込む。
【００８８】
ファームウェア２１はエラーロギング未完了フラグをクリアすることによってエラーロギング割り込み要求を解除した後にＳＥＬＦ  ＨＡＬＴによって停止する。なお、その他の構成は実施の形態１の構成と同一であるので、その詳細は省略する。
【００８９】
次に、実施の形態５の動作を説明する。まず、他のバス制御モジュール１ｂ−５が、障害を検出すると、障害バス制御モジュール１ａ−５内の状態遷移部５１は、システムバス３からディスコネクトするための状態遷移命令を取り込み、モジュールの状態をディスコネクト状態に遷移させる。
【００９０】
さらに、リセット発行部５２は、中央処理部ＰＵ１１を初期化するＩＰＬリセットを発行する。このとき、フラグセット部５３は、エラーロギング未完了を示すフラグをセットする。
【００９１】
なお、このとき、割り込みマスク部５６によって、状態制御部１５から中央処理部１１へのエラーロギング割り込み要求がマスクされている。
次に、ファームウェアＦＷは、図１２に示すフローチャートに従って処理が行われる。ファームウェアＦＷは、モジュール内のハードウェア資源の初期化を行う（ステップ５０１）。このとき、バス制御モジュール内の図示しない制御レジスタのセット、ＬＳのＭＭＵテーブルのマッピング、割り込み要因レジスタのクリアを行う。
次に、ファームウェアは各ＣＵ内に存在するエラー要因を収集して一時退避部ＬＳ１４内の主記憶部へ格納する（ステップ５０２）。そして、割り込み発行部５５はエラーロギング割り込み要求のマスクを解除する（ステップ５０３）。
【００９２】
ファームウェアは、自己のモジュールのディスコネクト状態とエラーロギング割り込み要求を監視してディスコネクト状態とエラーロギング割り込み要求がどうようになっているのかを判定する（ステップ５０４）。
【００９３】
ここで、障害バス制御モジュールがディスコネクト状態であって、かつエラーロギング割り込み要求があった場合には、ファームウェア２１は一時退避部１４に格納されたエラーログ４１をフラッシュメモリ１２にエラーログ２２として書き込む（ステップ５０５）。
【００９４】
さらに、エラーロギング未完了フラグをクリアし（ステップ５０６）、ＳＥＬＦ  ＨＡＬＴによってファームウェアは停止する（ステップ５０７）。以上の処理によりファームウェアの処理が終了すると、障害バス制御モジュールを図示しないコネクタから活性抜き出して、そのモジュールを工場に持ち返って調査、修理を行う。
【００９５】
一方、エラーロギング割り込み要求がない場合には、通常のファームウェアプロセスに進む。すなわち、リセット要因の判定が行われ（ステップ５０８）、ハードウェア初期診断を行い（ステップ５０９）、あるいは、ハードウェア初期診断を行わずに、ソフトウェアローディングを行う（ステップ５１０）。
【００９６】
このように、エラーロギング割り込み要求を発行またはその要求のマスクによっても、不揮発性メモリ１２へのエラーログを書き込むことができる。
＜発明の実施の形態６＞
次に、本発明の実施の形態６を説明する。バス制御モジュール１ａ−６には、メンテナンス用バス７３を介してメンテナンス用バスインターフェイス７１，７２（ＭＩ）が接続されている。さらに、ＭＩ７１と一時退避部１４とはＭＩ７２により接続されている。
【００９７】
メンテナンス用バスインタフェイス７１，７２は、障害バス制御モジュール１ａ−６がシステムバス３からディスコネクト状態でも接続されており、クローズされないようになっている。メンテナンス用バスを介してディスコネクト状態においてファームウェア２１の介在なしにバス制御モジュール１ａ−６内のエラーロギング未完了フラグを読み出す。
【００９８】
なお、その他の構成は実施の形態１の構成と同一であるので、その詳細は省略する。
次に、実施の形態６の動作を説明する。まず、他のバス制御モジュール１ｂ−６が、障害を検出すると、障害バス制御モジュール１ａ−６内の状態遷移部５１は、システムバス３からディスコネクトするための状態遷移命令を取り込み、モジュールの状態をディスコネクト状態に遷移させる。
【００９９】
さらに、リセット発行部５２は、中央処理部ＰＵ１１を初期化するＩＰＬリセットを発行する。このとき、フラグセット部５３は、エラーロギング未完了を示すフラグをセットする。
【０１００】
次に、ファームウェアＦＷは、図１４に示すフローチャートに従って処理が行われる。ファームウェアＦＷは、モジュール内のハードウェア資源の初期化を行う（ステップ６０１）。このとき、バス制御モジュール内の図示しない制御レジスタのセット、ＬＳのＭＭＵテーブルのマッピング、割り込み要因レジスタのクリアを行う。
【０１０１】
次に、ファームウェアは各ＣＵ内に存在するエラー要因を収集して一時退避部ＬＳ１４内の主記憶部へ格納する（ステップ６０２）。
ファームウェアは、自己のモジュールのディスコネクト状態とエラーロギング未完了フラグを監視してディスコネクト状態とエラーロギング未完了フラグがどうようになっているのかを判定する（ステップ６０３）。
【０１０２】
ここで、障害バス制御モジュールがディスコネクト状態であって、かつエラーロギング未完了フラグがあった場合には、ファームウェア２１は一時退避部１４に格納されたエラーログ４１をフラッシュメモリ１２にエラーログ２２として書き込む（ステップ６０４）。
【０１０３】
このとき、メンテナンスバス７３とバスインターフェイス７１，７２を介してエラーロギング未完了フラグのバス制御モジュール１ａ−６から図示しないコンソールへのポーリングを行う。エラーロギング未完了フラグのクリア確認を行う（（１））。（（１）），（（２））のタイミングでは、エラーロギング未完了フラグのクリア未完了が確認できる。
【０１０４】
さらに、エラーロギング未完了フラグをクリアする（ステップ６０５）。このとき、（（３））では、クリア完了がコンソールで確認できる。従って、クリア完了確認前では、バス制御モジュールの活性抜き出しは行えない。また、クリア完了確認後では、バス制御モジュールの活性抜き出しが行える。
【０１０５】
ＳＥＬＦ  ＨＡＬＴによってファームウェアは停止する（ステップ６０６）。以上の処理によりファームウェアの処理が終了すると、障害バス制御モジュールを図示しないコネクタから活性抜き出して、そのモジュールを工場に持ち返って調査、修理を行う。
【０１０６】
一方、エラーロギング割り込み要求がない場合には、通常のファームウェアプロセスに進む。すなわち、リセット要因の判定が行われ（ステップ６０７）、ハードウェア初期診断を行い（ステップ６０８）、あるいは、ハードウェア初期診断を行わずに、ソフトウェアローディングを行う（ステップ６０９）。
【０１０７】
このように、エラーロギング模完了フラグのセット、クリアをバスインターフェイス７１，７２を介して外部のコンソールで見る。すなわち、バス制御モジュールの活性抜き出し可能なタイミングを外部から知ることができる。その結果、ディスコネクト状態におけるエラーロギングが完了したか否かをモジュール抜き出し前に判定できる。
＜産業上の利用可能性＞
前記エラーログ装置は、バス制御装置などに適用される。
【０１０８】
【発明の効果】
本発明によれば、外部記憶装置に対してエラーログを格納できないような重大障害が発生しても、バス制御モジュール内の不揮発性メモリ内にエラーログを保持することができる。この不揮発性メモリはバス制御モジュールとともに持ち運びできるので、従来のように外部記憶装置に格納されたエラーログを改めて回収したり、あるいは、エラーログを障害バス制御モジュールに対応付けるテーブルを設ける必要もなくなり、容易に障害解析を行うことができる。
【０１０９】
また、ファームウェアは、障害バス制御モジュールが切り離し状態でかつエラーログフラグが設定されている場合にバス制御モジュールの初期化処理から分岐し保持されたエラー要因を読み出して不揮発性メモリへ書き込みエラーログフラグをリセットした後に停止する。その結果、ディスコネクト状態でエラーログ情報を不揮発性メモリへの書き込みが完了することになる。
【０１１０】
さらに、複数のコマンドシーケンスによってエラーログを書き込む場合、一旦、エラーログ情報を全て一時退避部に書き込み、コピーファームウェアによってそのエラーログ情報を不揮発性メモリに書き込む。その結果、一連のコマンドシーケンスを命令フェッチなどによって中断されることなく実行できる。
【０１１１】
また、ファームウェアは第１の不揮発性メモリで動作し、一連のコマンドによってエラーログを第２の不揮発性メモリに書き込む。その結果、一連のコマンドが命令フェッチなどにより壊れることがなくなる。
【０１１２】
さらに、待合せ部はファームウェアから起動部への書き込みアクセスを起動した後に書き込みシーケンサの発行が完了するまで次の不揮発性メモリへのアクセスを待ち合わせる。その結果、コマンドシーケンスを崩すような不揮発性メモリへのアクセスの抑止を保障できる。
【０１１３】
また、エラーロギング割り込み要求の発行、マスクによっても不揮発性メモリにエラーログを書き込むことができることになる。
また、障害バス制御モジュールがバスから切り離し状態でも、バスインターフェイスは障害バス制御モジュールに接続され、エラーログフラグを障害バス制御モジュールから外部に読み出す。その結果、エラーログフラグのセット、クリアによってエラーログの格納が完了したか否かがわかる。
【図面の簡単な説明】
【図１】本発明のエラーログ装置を示す原理図である。
【図２】エラーログ装置の発明の実施の形態１を示す構成ブロック図である。
【図３】発明の実施の形態１のファームウェアの処理の流れを示すフローチャートである。
【図４】エラーログ装置の発明の実施の形態２を示す構成ブロック図である。
【図５】発明の実施の形態２のファームウェアの処理の流れを示すフローチャートである。
【図６】発明の実施の形態２のフラッシュメモリにおける書き込みファームウェアシーケンスを示す図である。
【図７】フラッシュメモリ書き込みシーケンスの一例を示す図である。
【図８】エラーログ装置の発明の実施の形態３を示す構成ブロック図である。
【図９】エラーログ装置の発明の実施の形態４を示す構成ブロック図である。
【図１０】発明の実施の形態４のメモリ制御部がフラッシュメモリ書き込みコマンドシーケンスを自動的に実行する機能を有しない場合のエラーロギング処理を示す図である。
【図１１】エラーログ装置の発明の実施の形態５を示す構成ブロック図である。
【図１２】発明の実施の形態５のファームウェアの処理の流れを示すフローチャートである。
【図１３】エラーログ装置の発明の実施の形態６を示す構成ブロック図である。
【図１４】発明の実施の形態６のファームウェアの処理の流れを示すフローチャートである。
【符号の説明】
１ａ，１ｂ・・バス制御モジュールＢＭ
３・・システムバス
１０・・チップバス
１１・・中央処理部ＰＵ
１２・・不揮発性メモリＦＭ
１３・・メモリ制御部ＭＵ
１４・・一時退避部ＬＳ
１５・・状態制御部ＳＵ
１６ａ〜１６ｎ・・保持部ＣＵ
２１・・ファームウェア
２２・・エラーログ
４１・・一時退避エラーログ
【図１】
0003705848.tif 000002
【図２】
0003705848.tif 000003
【図３】
0003705848.tif 000004
【図４】
0003705848.tif 000005
【図５】
0003705848.tif 000006
【図６】
0003705848.tif 000007
【図７】
0003705848.tif 000008
【図８】
0003705848.tif 000009
【図９】
0003705848.tif 000010
【図１０】
0003705848.tif 000011
【図１１】
0003705848.tif 000012
【図１２】
0003705848.tif 000013
【図１３】
0003705848.tif 000014
【図１４】
0003705848.tif 000015