(57)【要約】【課題】通常の情報伝送動作中にバスの故障診断を実行できるようにする。【解決手段】送信側デバイス１０と受信側デバイス２０とは、送信データとこの送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバス３０を通じて接続されている。送信側デバイス１０は、パラレルバス３０に送信する信号を反転する信号反転部１１を有する。受信側デバイス２０は、パラレルバス３０からの受信信号を反転する信号反転部２１と、信号反転部２１から出力された信号を基にエラー検出処理とエラー訂正処理とを実行するエラー検出部２２とを有する。信号反転部１１によってすべてのバスに送信する信号が反転され、信号反転部２１によってすべてのバスから受信した信号が反転されることで、エラー検出部２２においてパラレルバス３０の故障診断が行われる。【選択図】図１
2011159119.tif 000002
【特許請求の範囲】
【請求項１】
送信データと前記送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバスを通じて受信側デバイスに接続し、前記パラレルバスのすべてのバスに送信する信号を反転する信号反転部、
を有することを特徴とする情報処理装置。
【請求項２】
前記パラレルバスのすべてのバスからの受信信号を反転するように前記受信側デバイスに指示する反転指示情報と、前記反転指示情報に基づくエラー訂正符号とを前記パラレルバスに出力する指示情報出力部をさらに有し、
前記信号反転部は、前記反転指示情報が前記パラレルバスに出力された後に、前記パラレルバスのすべてのバスに送信される信号を反転する、
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記指示情報出力部は、前記反転指示情報と当該反転指示情報に基づくエラー訂正符号とを生成し、生成した前記反転指示情報と当該判定指示情報に基づくエラー訂正符号とを前記信号反転部を通じて前記パラレルバスに送信し、
さらに、
前記信号反転部に入力する信号から前記反転指示情報を検出すると、検出した前記反転指示情報が前記信号反転部から出力された後に、前記信号反転部に、前記パラレルバスのすべてのバスに送信する信号を反転する動作を開始させる反転動作制御部を有することを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記指示情報出力部は、信号を反転するバスを指定するバス指定情報と、前記バス指定情報によって指定されたバスの信号を反転する動作を送信側と受信側のどちらで実行させるかを示す実行対象指定情報とを含む部分反転指示情報と、前記部分反転指示情報に基づくエラー訂正符号とを生成して、生成した前記部分反転指示情報と当該部分反転指示情報に基づくエラー訂正符号とを前記信号反転部を通じて前記パラレルバスに送信し、
前記反転動作制御部は、入力信号から前記部分反転指示情報を検出すると、当該部分反転指示情報に含まれる前記実行対象指定情報が送信側を示していた場合に、当該部分反転指示情報が前記信号反転部から出力された後に、当該部分反転指示情報に含まれる前記バス指定情報によって指定されたバスに送信する信号を反転するように前記信号反転部を制御する、
ことを特徴とする請求項３記載の情報処理装置。
【請求項５】
送信データと前記送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバスに接続し、前記パラレルバスのすべてのバスから受信した信号を反転する信号反転部と、
前記信号反転部から出力された信号を基にエラー検出処理とエラー訂正処理とを実行するエラー検出部と、
を有することを特徴とする情報処理装置。
【請求項６】
前記パラレルバスのすべてのバスから受信した信号を反転するように指示する反転指示情報を、前記パラレルバスから前記信号反転部を通じて受信すると、当該反転指示情報が前記信号反転部から出力された後に、すべてのバスから受信した信号を反転する動作を前記信号反転部に開始させる反転動作制御部をさらに有することを特徴とする請求項５記載の情報処理装置。
【請求項７】
送信データと前記送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバスを通じて受信側デバイスに接続した送信側デバイスが、前記パラレルバスのすべてのバスに送信する信号を反転する、
ことを特徴とする情報送信方法。
【請求項８】
送信データと前記送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバスに接続した受信側デバイスが、
前記パラレルバスのすべてのバスから受信した信号を、前記受信側デバイスが備える信号反転部によって反転し、
前記信号反転部から出力された信号を基にエラー検出処理とエラー訂正処理とを実行する、
ことを特徴とする情報受信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報送信方法および情報受信方法に関する。
【背景技術】
【０００２】
高い信頼性の要求されるサーバなどの情報処理装置では、他の情報処理装置との間の接続バスや情報処理装置内のデバイス間の接続バスにおいて、ＥＣＣ（Error-Correcting Code）を用いたデータ転送を行うものがある。ＥＣＣを用いてデータが転送されるバスを“ＥＣＣバス”と呼ぶ。ＥＣＣバスでは、データの受信側において、１ビットのエラー検出および訂正と、２ビットのエラー検出とを行うことが可能になる。
【０００３】
ＥＣＣバスにおける故障を診断する方法としては、例えば、専用のプログラムまたはハードウェアにより送信データを明示的に変化させる機能を設け、受信側でデータを正常に受信できるか否かを確認する方法がある。この種の方法としては、例えば次の２通りの方法があり、１つは、故障診断の期間中にビットを変化させたパターンを転送し、受信側で期待値と一致するかを検証する方法である。ただし、この方法では、故障診断の期間中はＥＣＣによるエラー検出を停止させる必要がある。また、もう１つの方法は、ビットの値を少しずつ（例えば１ビットずつ）変化させながら送信データを送信し、受信側で正常に受信できるか否かを検証する方法である。この方法では、ＥＣＣパターンが変化するような送信データのパターンをあらかじめ作成する必要がある。
【０００４】
また、ＥＣＣバスにおける故障を診断する別の方法としては、バスのデータ部やＥＣＣ部における信号を１ビットのみ反転して送信し、受信側でエラーが検出されることを確認するという方法がある。この方法が適用されたシステム構成例を次の図２１に示す。
【０００５】
図２１は、バスの故障診断機能を備えた情報処理装置の構成例を示す図である。
図２１では、情報処理装置間をＥＣＣバスによって接続した場合の構成例を示している。信号送信側の情報処理装置である送信側装置９１０は、バス調停回路９１１、反転制御回路９１２、バス反転回路９１３、出力回路９１４およびエラー検出回路９１５を備えている。
【０００６】
バス調停回路９１１には、内部回路からの複数のバスが接続されており、バス調停回路９１１は、これらのバスのうち１つから送信信号を選択し、バス反転回路９１３に出力する。反転制御回路９１２は、信号を反転するビットの位置をバス反転回路９１３に対して指定する。バス反転回路９１３は、バス調停回路９１１から入力された送信信号のビットのうち、反転制御回路９１２から指定されたビット位置のバスの信号を反転する。出力回路９１４は、バス反転回路９１３から出力された信号を、ＥＣＣバスを通じて受信側装置９２０に送信する。エラー検出回路９１５は、出力回路９１４に入力された信号からエラーを検出する。
【０００７】
一方、信号受信側の情報処理装置である受信側装置９２０は、反転制御回路９２１、バス反転回路９２２、受信回路９２３およびエラー検出回路９２４を備えている。
反転制御回路９２１は、信号を反転するビットの位置をバス反転回路９２２に対して指定する。バス反転回路９２２は、送信側装置９１０から送信された信号のビットのうち、反転制御回路９２１から指定されたビット位置のバスの信号を反転する。受信回路９２３は、バス反転回路９２２から出力された信号を、受信側装置９２０の内部回路に出力する。エラー検出回路９２４は、受信回路９２３に入力された信号から、エラーの検出および訂正を行う。
【０００８】
ここで、送信側装置９１０と受信側装置９２０とを接続するＥＣＣバスの故障診断を行うには、送信側装置９１０のバス反転回路９１３または受信側装置９２０のバス反転回路９２２のいずれか一方で、信号のうち１ビットが反転される。このとき、ＥＣＣバスに異常がなければ、受信側装置９２０のエラー検出回路９２４は１ビットエラーを検出する。しかし、ＥＣＣバスに異常がある場合には、エラー検出回路９２４は、エラーを検出しないか、あるいは、２ビットエラーを検出する。
【０００９】
エラー検出回路９２４によって２ビットエラーが検出される場合とは、信号を反転したビットとは異なるビットに対応するバスに故障が発生している場合である。そして、このような場合には、２ビットエラーが検出されるので、エラー検出回路９２４は受信信号を訂正できない。すなわち、上記の故障診断方法では、訂正不能エラーが発生することがあるため、システムの通常運用中には故障診断を実行できない。
【００１０】
なお、ビット反転手順を含む誤り訂正方法として、受信データの１ビットに誤りが発生した場合に対応する複数のシンドロームデータを記憶しておき、実際の受信データの１ビットを反転したデータと、記憶していたシンドロームに基づくデータとを比較して３ビットの誤り訂正位置を特定するものがあった。
【００１１】
また、ビット反転手順を含むデータ伝送テスト方法としては、ＢＩＳＴ（Built In Self Test）回路において、複数のテストデータを選択的に反転させ、これらのデータを論理的に結合してテストデータ値シーケンスを出力し、期待値に対応するか否かを判定するものがあった。
【００１２】
さらに、デュアルエンコーディングを用いてデータを送信するシステムにおいて、前のデータから値が変化するビットが所定の数より多い場合にデータを反転して送信することで、グランドバウンスの発生を抑制するようにしたものがあった。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２００２−２６７４１号公報
【特許文献２】特表２００８−５４１０５９号公報
【特許文献３】特表２００７−５２６５７４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
前述したＥＣＣバスの故障診断方法では、故障診断用のデータをあらかじめ作成して送信する必要があることや、訂正不能な２ビットエラーが発生する可能性があることから、いずれもシステムの通常運用中には故障診断を実行できないという問題があった。
【００１５】
本発明はこのような点に鑑みてなされたものであり、通常の情報伝送動作中にバスの故障診断を実行できるようにした情報処理装置、情報送信方法および情報受信方法を提供することを目的とする。
【課題を解決するための手段】
【００１６】
上記目的を達成するために、次のような信号反転部を有する情報処理装置が提供される。信号反転部は、送信データと前記送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバスを通じて受信側デバイスに接続し、前記パラレルバスのすべてのバスに送信する信号を反転する。
【００１７】
また、上記目的を達成するために、次のような情報処理装置が提供される。この情報処理装置は、送信データと前記送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバスに接続し、前記パラレルバスのすべてのバスから受信した信号を反転する信号反転部と、前記信号反転部から出力された信号を基にエラー検出処理とエラー訂正処理とを実行するエラー検出部と、を有する。
【発明の効果】
【００１８】
上記の情報処理装置によれば、通常の情報伝送動作中にパラレルバスの故障診断を実行できる。
【図面の簡単な説明】
【００１９】
【図１】第１の実施の形態に係る情報伝送システムの構成を示す図である。
【図２】第２の実施の形態に係る情報伝送システムの構成を示す図である。
【図３】接続バスを通じて伝送されるパケットの構成例を示す図である。
【図４】バス制御パケットの構成例を示す図である。
【図５】送信側のバスＩ／Ｆの内部構成を示す図である。
【図６】パケット制御レジスタに設定される情報の例を示す図である。
【図７】パケット解析回路の動作手順を示すフローチャートである。
【図８】送信側のバスＩ／Ｆの動作例を示すタイムチャートである。
【図９】受信側のバスＩ／Ｆの内部構成例を示す図である。
【図１０】パケット解析回路の動作手順を示すフローチャートである。
【図１１】受信側のバスＩ／Ｆの動作例を示すタイムチャートである。
【図１２】第３の実施の形態に係る情報伝送システムの構成を示す図である。
【図１３】第３の実施の形態で使用されるバス制御パケットの構成例を示す図である。
【図１４】送信側のバスＩ／Ｆの内部構成を示す図である。
【図１５】パケット制御レジスタに設定される情報の例を示す図である。
【図１６】パケット解析回路の動作手順を示すフローチャートである。
【図１７】送信側のバスＩ／Ｆの動作例を示すタイムチャートである。
【図１８】受信側のバスＩ／Ｆの内部構成例を示す図である。
【図１９】パケット解析回路の動作手順を示すフローチャートである。
【図２０】受信側のバスＩ／Ｆの動作例を示すタイムチャートである。
【図２１】バスの故障診断機能を備えた情報処理装置の構成例を示す図である。
【発明を実施するための形態】
【００２０】
以下、実施の形態を図面を参照して詳細に説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係る情報伝送システムの構成を示す図である。
【００２１】
図１に示す情報伝送システムでは、送信側デバイス１０と受信側デバイス２０とが、パラレルバス３０を通じて接続されている。送信側デバイス１０および受信側デバイス２０は、例えば、情報処理装置内で各種のデバイス間を接続するバスインタフェースである。また、情報処理装置間がパラレルバス３０によって接続される場合には、送信側デバイス１０および受信側デバイス２０は、送信側、受信側の各情報処理装置に設けられたバスインタフェース回路であってもよい。
【００２２】
パラレルバス３０は、送信データと、この送信データを基に生成されたエラー訂正符号とをパラレル送信する。従って、パラレルバス３０の受信側では、受信信号のエラー検出処理およびエラー訂正処理を実行できる。また、本実施の形態のパラレルバス３０では、２ビットまでのエラー検出処理と、１ビットのエラー訂正処理とが実行できるものとする。
【００２３】
送信側デバイス１０は、パラレルバス３０のすべてのバスに送信する信号を反転する信号反転部１１を備えている。一方、受信側デバイス２０は、パラレルバス３０のすべてのバスから受信した信号を反転する信号反転部２１と、信号反転部２１から出力された信号を基にエラー検出処理およびエラー訂正処理を実行するエラー検出部２２とを備えている。
【００２４】
このような構成において、送信側の信号反転部１１により、すべてのバスへの送信信号が反転され、受信側の信号反転部２１により、すべてのバスから受信した信号が再度反転されることで、エラー検出部２２は、パラレルバス３０の故障診断を行うことができる。すなわち、この状態では、パラレルバス３０のうち１つのバスにおいて故障が発生していた場合には、エラー検出部２２は、故障したバスからの受信信号に基づいて、１ビットエラーを検出する。
【００２５】
例えば、元の送信信号がローレベルであるとき、その送信信号は信号反転部１１によって反転されてハイレベルとされ、パラレルバス３０に送信される。このとき、送信されたバスが故障している場合には、受信側の信号反転部２１は、故障したバスからローレベルの信号を受信し、受信信号を反転したハイレベルの信号をエラー検出部２２に出力する。エラー検出部２２は、受信した信号をエラーと判定する。このような動作により、例えば、故障したバスが信号送信に使用されていないなど、そのバスに対する元の信号がローレベルのまま変化しない場合でも、バスの故障を検出できるようになる。
【００２６】
また、このようなバスの故障診断動作では、故障したバスが１つであれば、故障したバスからの受信信号のみが誤った値となり得るため、エラー検出部２２では２ビット以上のエラーが検出されることはない。エラー検出部２２は、検出したエラーが１ビットエラーであれば、エラーを訂正することができる。このため、故障したバスが１つであれば、故障診断動作を実行中でも、送信側デバイス１０から受信側デバイス２０への情報伝送動作が停止されない。従って、このような故障診断動作は、診断専用の期間に実行される必要はなく、通常の情報伝送動作の実行中に並行して実行することができる。
【００２７】
ところで、送信側デバイス１０は、さらに、指示情報出力部１２と反転動作制御部１３とを備えていてもよく、受信側デバイス２０は、さらに、反転動作制御部２３を備えていてもよい。なお、反転動作制御部２３を備える場合、受信側デバイス２０の信号反転部２１は、バスからの受信信号を反転するか否かを切り替え可能であるものとする。
【００２８】
指示情報出力部１２は、パラレルバス３０のすべてのバスからの受信信号を反転するように受信側デバイス２０に指示する反転指示情報を生成し、パラレルバス３０を通じて受信側デバイス２０に送信する。このとき、指示情報出力部１２は、反転指示情報に基づくエラー訂正符号も生成して、反転指示情報とともに受信側デバイス２０に送信する。指示情報出力部１２からの出力信号は、例えば、信号反転部１１を通じてパラレルバス３０に送信される。
【００２９】
反転動作制御部１３は、指示情報出力部１２からの反転指示情報に基づいて、信号反転部１１において信号を反転させるか否かを制御する。ここで、反転動作制御部１３は、信号反転部１１に入力される指示情報出力部１２からの出力信号から反転指示情報を検出すると、信号反転部１１に対して、すべてのバスへの送信信号を反転するように指示する。反転動作制御部１３は、信号反転部１１におけるこのような信号反転動作を、検出した反転指示情報が信号反転部１１からパラレルバス３０に出力された後に開始させる。
【００３０】
一方、受信側デバイス２０において、反転動作制御部２３は、エラー検出部２２から出力されたエラー訂正後の信号から反転指示情報を検出すると、信号反転部２１に対して、すべてのバスからの受信信号を反転するように指示する。反転動作制御部２３は、信号反転部２１におけるこのような信号反転動作を、検出した反転指示情報が少なくとも信号反転部２１から出力された後に開始させる。
【００３１】
このように、パラレルバス３０を通じて反転指示情報が伝送されることで、送信側デバイス１０からの指示に応じて、受信側デバイス２０での信号反転動作を開始させることができる。また、送信側デバイス１０でも、反転動作制御部１３の制御により、反転指示情報に応じて信号反転動作を開始させるようにすることで、反転指示情報に応じて前述のバスの故障検証動作を開始させることが可能になる。従って、任意のタイミングで、前述のバスの故障検証動作を開始できるようになる。
【００３２】
なお、指示情報出力部１２から、バスの信号を反転しないように指示する非反転指示情報を出力し、反転動作制御部１３，２３が非反転指示情報を検出すると、それぞれ信号反転部１１，２１に対して反転動作を終了させるようにしてもよい。このような非反転指示情報により、前述のバスの故障検証動作を終了させることが可能になる。
【００３３】
次に、情報処理装置間を接続するパラレルバスの故障検証動作を実行可能なシステムの例について説明する。
〔第２の実施の形態〕
図２は、第２の実施の形態に係る情報伝送システムの構成を示す図である。
【００３４】
図２に示す情報伝送システムは、情報処理装置１００と情報処理装置２００との間で、パラレルバスである接続バス３００を通じてデータが送受信されるシステムである。情報処理装置１００，２００は、それぞれの内部のＣＰＵによりプログラムが実行されることで動作するコンピュータである。接続バス３００は、送信データと、この送信データに基づくＥＣＣとがパラレル転送されるＥＣＣバスである。
【００３５】
情報処理装置１００は、ＣＰＵ（Central Processing Unit）１０１、ＲＡＭ（Random Access Memory）１０２、ＨＤＤ（Hard Disk Drive）１０３、バスインタフェース（Ｉ／Ｆ）１０４およびバスコントローラ１０５を備えている。
【００３６】
ＣＰＵ１０１は、ＨＤＤ１０３などの記憶媒体に記憶された各種プログラムを実行することにより、この情報処理装置１００全体を統括的に制御する。ＲＡＭ１０２は、ＣＰＵ１０１に実行させるプログラムの少なくとも一部や、このプログラムによる処理に必要な各種データを一時的に記憶する。ＨＤＤ１０３は、ＣＰＵ１０１により実行されるプログラムやその実行に必要な各種のデータなどを記憶する。
【００３７】
バスＩ／Ｆ１０４は、接続バス３００を通じて情報処理装置２００などの外部装置との間でデータを送受信するインタフェース回路である。後述するように、バスＩ／Ｆ１０４には、接続バス３００の故障診断機能を備えている。この故障診断機能には、接続バス３００に送信する信号の全ビットを反転する機能や、接続バス３００から受信した信号の全ビットを反転する機能、反転された受信信号のエラー検出およびエラー訂正を実行する機能などが含まれる。
【００３８】
バスコントローラ１０５は、ＣＰＵ１０１とＲＡＭ１０２、ＨＤＤ１０３およびバスＩ／Ｆ１０４との間のデータ送受信動作を制御する。バスコントローラ１０５は、バスＩ／Ｆ１０４との間で、送信データとＥＣＣとがパラレル転送されるＥＣＣバスを通じてデータを送受信する。また、バスコントローラ１０５は、ＣＰＵ１０１からバスＩ／Ｆ１０４に転送するデータを基にＥＣＣを算出する機能や、バスＩ／Ｆ２０４からの受信信号に基づくエラー検出およびエラー訂正を行う機能も備えている。
【００３９】
情報処理装置２００は、情報処理装置１００と同様のハードウェア構成を持つコンピュータである。情報処理装置２００は、ＣＰＵ２０１、ＲＡＭ２０２、ＨＤＤ２０３、バスインタフェース（Ｉ／Ｆ）２０４およびバスコントローラ２０５を備えている。そして、これらはそれぞれ、情報処理装置１００におけるＣＰＵ１０１、ＲＡＭ１０２、ＨＤＤ１０３、バスＩ／Ｆ１０４およびバスコントローラ１０５に対応している。
【００４０】
図３は、接続バスを通じて伝送されるパケットの構成例を示す図である。
図３において、左右方向に並列された情報は、１クロックサイクルで接続バス３００上にパラレル送信される。すなわち、本実施の形態の例では、接続バス３００は、“ＴＡＧ”を伝送するバスと、“ＥＣＣ”を伝送するバスと、その他のバスであるデータバスとを含む。
【００４１】
“ＴＡＧ”は、データバスに伝送される情報が有効か無効かを示す情報である。“ＴＡＧ”の値が“００”または“１１”の場合、データバスが無効であることを示す。“ＴＡＧ”の値が“０１”の場合、データバスが有効であり、データバスにおいてパケット構成情報が伝送されることを示す。“ＴＡＧ”の値が“１０”の場合、データバスが有効であり、データバスにおいて実データである“ＤＡＴＡ”が伝送されることを示す。
【００４２】
“ＥＣＣ”は、“ＴＡＧ”の値とデータバスに流れる値とを基に算出されたエラー訂正符号である。このエラー訂正符号は、２ビットのエラー検出と１ビットの誤り訂正とを可能にするものであり、例えばハミング符号とされる。
【００４３】
データバスにおいては、パケットの先頭では、図３の上段に示すように、ヘッダ情報としてパケット構成情報が伝送され、図３の下段に示すように、パケット構成情報に続いて、実データである“ＤＡＴＡ”が１または複数のクロックサイクル分だけ伝送される。すなわち、パケットは、パケット構成情報と、それに続く実データとを含む。図３では、“ＤＡＴＡ”が１クロックサイクルで伝送される場合を例示している。パケット構成情報は、“ＣＯＤＥ”“ＩＤ”“ＬＮＧ”の各情報を含む。
【００４４】
“ＣＯＤＥ”は、パケットの属性を示す制御コードである。本実施の形態では、“ＣＯＤＥ”の値が１６進数で“ＦＦ”以外であるパケットを“一般パケット”と呼ぶ。また、後述するように、制御コードの値が“ＦＦ”であるパケットを“バス制御パケット”と呼ぶ。
【００４５】
“ＩＤ”は、パケットの通し番号を示す。“ＬＮＧ”は、パケットのデータ長を示し、本実施の形態ではクロックサイクル数で表される。なお、データバスにおける“ＣＯＤＥ”“ＩＤ”“ＬＮＧ”以外のバスは、オプション領域である“Ｒｅｓｅｒｖｅ”とされる。
【００４６】
図４は、バス制御パケットの構成例を示す図である。
バス制御パケットは、例えば、１クロックサイクルで伝送され、前述の“ＣＯＤＥ”“ＩＤ”“ＬＮＧ”を含み、“ＣＯＤＥ”の値が１６進数で“ＦＦ”とされるとともに、“Ｒｅｓｅｒｖｅ”の領域の一部に“ＣＴＬ”が格納されたものである。本実施の形態では、“ＣＴＬ”は１ビットのバス反転情報であり、値が“１”のとき、後続のパケットの全ビットが反転されることを示し、“０”のとき、後続のパケットの全ビットが反転されないことを示す。
【００４７】
図２に示したシステム構成において、バス制御パケットは、バスＩ／Ｆ１０４，２０４のうち送信側の回路において生成され、接続バス３００に送出される。“ＣＴＬ”の値を“１”としたバス制御パケットを送出した送信側のバスＩ／Ｆは、後続のパケットを接続バス３００に送出する際に、パケット内の全ビットを反転して送出する。また、バス制御パケットが受信側のバスＩ／Ｆに送信されることで、受信側のバスＩ／Ｆに対して、後続のパケットの全ビットが反転されていることが通知される。通知を受けた受信側のバスＩ／Ｆは、後続の受信パケットの全ビットを反転し、反転した信号を基にエラー検出を行う。バス制御パケットが送出された後の状態では、情報処理装置１００と情報処理装置２００との間のデータ伝送が実行されるとともに、受信側のバスＩ／Ｆにおいてバスの故障診断が実行される。
【００４８】
なお、本実施の形態では、例として、バス制御パケットは１クロックサイクルで伝送される。この場合、バス制御パケット内の“ＬＮＧ”の値は“１”とされる。しかしながら、バス制御パケットは、複数のクロックサイクルで伝送されてもよい。この場合、バス制御パケット内の“ＬＮＧ”には、バス制御パケットが伝送されるクロックサイクル数が設定される。
【００４９】
次に、情報処理装置１００から情報処理装置２００に対して接続バス３００を通じてデータを送信する場合を想定し、このデータ送信の際に実行されるバスの故障診断処理のためにバスＩ／Ｆ１０４，２０４がそれぞれ備える機能について説明する。
【００５０】
図５は、送信側のバスＩ／Ｆの内部構成を示す図である。
情報処理装置１００内のバスＩ／Ｆ１０４は、パケット生成回路１１０、バス調停回路１２０、出力回路１３０、エラー検出回路１４０、パケット解析回路１５０およびバス反転回路１６０を備えている。
【００５１】
パケット生成回路１１０は、前述のバス制御パケットを生成して、バス調停回路１２０に出力する。パケット生成回路１１０は、レジスタ設定部１１１、パケット制御レジスタ１１２、フォーマット変換部１１３およびＥＣＣ生成部１１４を備えている。
【００５２】
ここで、図６は、パケット制御レジスタに設定される情報の例を示す図である。
パケット制御レジスタ１１２には、例えば、それぞれ１ビットの情報である“Ｖ”と“ＣＴＬ”とが設定される。“Ｖ”は、バス制御パケットを生成するか否かを指示するための情報であり、バス制御パケットを生成しない状態では“０”が設定され、バス制御パケットを生成する場合に“１”が設定される。“ＣＴＬ”は、接続バス３００の全ビットを反転させるか否かを指示する情報であり、全ビットを反転させる場合には“１”が設定され、全ビットを反転させない場合には“０”が設定される。パケット制御レジスタ１１２内の“ＣＴＬ”の値は、出力されるバス制御パケットの“ＣＴＬ”に設定される。
【００５３】
以下、図５に戻って説明する。
レジスタ設定部１１１は、例えば、管理者による情報処理装置１００に対する入力操作に応じて、パケット制御レジスタ１１２に対して値を設定する。バス制御パケットが生成される場合、レジスタ設定部１１１は、パケット制御レジスタ１１２の“Ｖ”に“１”を設定するとともに、“ＣＴＬ”に“０”または“１”を設定する。なお、レジスタ設定部１１１は、例えば、接続バス３００または他の通信線を通じて情報処理装置１００に接続された他の情報処理装置からの要求に応じて、パケット制御レジスタ１１２に対して値を設定してもよい。
【００５４】
フォーマット変換部１１３は、パケット制御レジスタ１１２の“Ｖ”に“１”が設定されると、バス制御パケットに設定すべき値を用意して、バス制御パケットを生成し、バス調停回路１２０に対してバス制御パケットの送信を要求する。フォーマット変換部１１３は、生成するバス制御パケットの“ＴＡＧ”に“０１”を設定するとともに、バス制御パケットの“ＣＴＬ”にパケット制御レジスタ１１２の“ＣＴＬ”の値を設定する。さらに、“ＴＡＧ”の値とデータバスに伝送する値とをＥＣＣ生成部１１４に通知し、エラー訂正符号の生成を要求する。
【００５５】
ＥＣＣ生成部１１４は、フォーマット変換部１１３から通知された値を基にエラー訂正符号を算出し、フォーマット変換部１１３に返信する。フォーマット変換部１１３は、ＥＣＣ生成部１１４から返信されたエラー訂正符号をバス制御パケットの“ＥＣＣ”に設定する。フォーマット変換部１１３は、バス調停回路１２０から送信の受付信号を受信すると、バス制御パケットをバス調停回路１２０に送信するとともに、パケット制御レジスタ１１２の“Ｖ”を“０”に更新する。
【００５６】
バス調停回路１２０は、入力側に接続された複数のデバイスからパケットを受け付け、出力回路１３０に送信する。本実施の形態では、バス調停回路１２０は、バスコントローラ１０５から送信を要求された通常パケットと、パケット生成回路１１０から送信を要求されたバス制御パケットとを、選択的に出力回路１３０に出力する。
【００５７】
出力回路１３０は、出力レジスタ１３１を備えており、バス調停回路１２０から出力された信号を出力レジスタ１３１に一旦保持した後、パケット解析回路１５０およびバス反転回路１６０に出力する。また、出力回路１３０に入力された信号はエラー検出回路１４０に転送される。
【００５８】
エラー検出回路１４０は、出力回路１３０から入力された信号の値を基に２ビットまでのエラー検出処理を行う。エラー検出回路１４０は、１ビットエラーを検出した場合には、エラー訂正処理を行い、訂正後のデータを出力回路１３０に返信する。エラー訂正後のデータは、出力レジスタ１３１にセットされて出力される。また、エラー検出回路１４０は、２ビットエラーを検出した場合には、例えば、情報処理装置１００のＣＰＵ１０１に対して訂正不能エラーの発生を通知し、バスコントローラ１０５とバスＩ／Ｆ１０４との間の通信を停止させる。
【００５９】
パケット解析回路１５０は、出力回路１３０から出力されたパケットの内容に基づいて、バスの反転が指示されたか否かを判定する。パケット解析回路１５０は、パケットの内容を解析するフォーマット解析部１５１を備えている。パケット解析回路１５０は、出力回路１３０からバス制御パケットを受信すると、受信したパケット内の“ＣＴＬ”の値を、バス反転信号としてバス反転回路１６０に出力する。
【００６０】
バス反転回路１６０は、パケット解析回路１５０からのバス反転信号に基づき、必要に応じて、出力回路１３０から出力される出力信号の全ビットの極性を反転する。バス反転回路１６０は、バス反転情報レジスタ１６１と反転ゲート１６２とを備えている。
【００６１】
バス反転情報レジスタ１６１は、パケット解析回路１５０のフォーマット解析部１５１から出力されたバス反転信号の値を保持する。反転ゲート１６２は、出力回路１３０から各バスに出力された信号とバス反転情報レジスタ１６１に保持された値とのＥＯＲ（排他的論理和）をとるゲート回路である。反転ゲート１６２は、バス反転情報レジスタ１６１の値が“０”のとき、出力回路１３０からの出力信号をそのまま接続バス３００に送出する。一方、バス反転情報レジスタ１６１の値が“１”のとき、出力回路１３０からの全バスについての出力信号を反転して、接続バス３００に送出する。
【００６２】
なお、以上の図５に示したバスＩ／Ｆ１０４の機能は、情報処理装置２００のバスＩ／Ｆ２０４も備えていてもよい。
図７は、パケット解析回路の動作手順を示すフローチャートである。
【００６３】
［ステップＳ１１］パケット解析回路１５０のフォーマット解析部１５１は、出力回路１３０から出力されるパケットを監視し、パケットを受信した場合に次のステップＳ１２の処理を実行する。
【００６４】
［ステップＳ１２］フォーマット解析部１５１は、受信したパケットの内容を解析して、受信したパケットがバス制御パケットか否かを判定する。フォーマット解析部１５１は、受信したパケット内の“ＴＡＧ”が“０１”であり、なおかつ“ＣＯＤＥ”の値が“ＦＦ”であった場合、バス制御パケットを受信したと判定し、ステップＳ１３の処理を実行する。一方、受信したパケットがバス制御パケットではないと判定された場合には、ステップＳ１１の処理が実行される。
【００６５】
［ステップＳ１３］フォーマット解析部１５１は、受信したバス制御パケットから“ＬＮＧ”の値を抽出し、変数Ｌに設定する。なお、バス制御パケットが複数のクロックサイクルで受信される場合には、“ＬＮＧ”の値は最初のクロックサイクルで受信されるものとする。
【００６６】
［ステップＳ１４］フォーマット解析部１５１は、バス制御パケットの末尾を受信したか否かを判定する。フォーマット解析部１５１は、変数Ｌから１を減算した値が０である場合に、バス制御パケットの末尾を受信したと判定して、ステップＳ１６の処理を実行する。また、バス制御パケットの末尾が受信されていないと判定された場合には、ステップＳ１５の処理が実行される。
【００６７】
［ステップＳ１５］フォーマット解析部１５１は、変数Ｌから１を減算する。そして、次のクロックサイクルにおいて、ステップＳ１４の処理が再度実行される。
なお、バス制御パケットが１クロックサイクルで伝送される場合には、ステップＳ１５の処理は実質的に実行されない。従って、制御パケットが１クロックサイクルで伝送される場合には、ステップＳ１４の処理がスキップされて、ステップＳ１３の次にステップＳ１６が実行されてもよい。
【００６８】
［ステップＳ１６］フォーマット解析部１５１は、バス制御パケット内の“ＣＴＬ”の値を、バス反転信号としてバス反転回路１６０に出力する。バス反転信号を受けたバス反転回路１６０は、バス反転情報レジスタ１６１の記憶値を、次のクロックサイクルでフォーマット解析部１５１から受けた“ＣＴＬ”の値に更新する。この後、ステップＳ１１の処理が実行され、次のパケットが監視される。
【００６９】
以上の処理では、バス制御パケットがバス反転回路１６０の反転ゲート１６２から出力されるまでの間は、このバス制御パケットに基づくバス反転情報レジスタ１６１の更新は行われない。そして、バス制御パケットの次のパケットが反転ゲート１６２に入力される際に、バス反転情報レジスタ１６１の値が更新されて、反転ゲート１６２において反転動作を行うか否かが切り替えられる。
【００７０】
図８は、送信側のバスＩ／Ｆの動作例を示すタイムチャートである。以下、図８を参照して、バス反転回路１６０の反転ゲート１６２が反転動作を行っていない状態から、反転動作を開始するまでのバスＩ／Ｆ１０４の動作について説明する。
【００７１】
まず、レジスタ設定部１１１は、パケット制御レジスタ１１２の“Ｖ”に“１”を設定するとともに、“ＣＴＬ”に“１”を設定する（タイミングＴ２１）。フォーマット変換部１１３は、パケット制御レジスタ１１２の“Ｖ”が“１”になったことを検知すると、バス制御パケットを生成して、バス調停回路１２０に対してバス制御パケットの送信を要求する。このとき、生成されたバス制御パケットの“ＣＴＬ”には、パケット制御レジスタ１１２の“ＣＴＬ”と同じ“１”が設定される。
【００７２】
バス調停回路１２０は、フォーマット変換部１１３に対して送信の受付信号を送信するとともに、フォーマット変換部１１３から出力されたバス制御パケットを、出力回路１３０の出力レジスタ１３１にセットする（タイミングＴ２２）。このとき、受付信号を受信したフォーマット変換部１１３は、パケット制御レジスタ１１２の“Ｖ”の値を“０”に更新する。なお、ここでは、バス制御パケットは１クロックサイクルで伝送されるものとする。
【００７３】
なお、図８の例では、フォーマット変換部１１３はタイミングＴ２２において、パケット制御レジスタ１１２の“Ｖ”とともに“ＣＴＬ”の値も“０”に更新する。ただし、“ＣＴＬ”の値は、“Ｖ”が“１”とされるタイミングで所望の値に更新されるので、タイミングＴ２２で“０”とされなくてもよい。
【００７４】
出力レジスタ１３１にセットされたバス制御パケットは、パケット解析回路１５０およびバス反転回路１６０に出力される。バス反転回路１６０のバス反転情報レジスタ１６１に記憶された値は“０”であることから、反転ゲート１６２は、出力レジスタ１３１から出力されたバス制御パケットをそのまま接続バス３００に送出する。
【００７５】
パケット解析回路１５０のフォーマット解析部１５１は、“ＣＴＬ”に“１”が設定されたバス制御パケットを受信すると、図７に示した処理に従い、バス反転回路１６０にバス反転情報の値を“１”に更新するよう指示する。これにより、バス反転情報レジスタ１６１の記憶値が、次のクロックサイクルにおいて“１”に更新される（タイミングＴ２３）。このタイミング以降、反転ゲート１６２は、出力レジスタ１３１から出力される信号の全ビットを反転して、接続バス３００に送出する。
【００７６】
なお、反転ゲート１６２での反転動作を終了させる際には、次のような動作が実行される。まず、レジスタ設定部１１１は、パケット制御レジスタ１１２の“Ｖ”に“１”を設定するとともに、“ＣＴＬ”に“０”を設定する。フォーマット変換部１１３は、パケット制御レジスタ１１２の“Ｖ”が“１”になったことを検知すると、“ＣＴＬ”に“０”を設定したバス制御パケットを生成して、バス調停回路１２０に対してバス制御パケットの送信を要求する。
【００７７】
バス調停回路１２０により、出力レジスタ１３１に“ＣＴＬ”に“０”が設定されたバス制御パケットがセットされると、パケット解析回路１５０のフォーマット解析部１５１は、バス制御パケットが送出された次のクロックサイクルにおいて、バス反転情報レジスタ１６１の記憶値を、受信したバス制御パケットの“ＣＴＬ”と同じ“０”に更新する。なお、“ＣＴＬ”が“０”とされたバス制御パケットは、反転ゲート１６２により全ビットが反転された状態で、接続バス３００に送出される。反転ゲート１６２は、バス反転情報レジスタ１６１の値が“０”に更新されると、それ以後に受信したパケットの全バスの信号を反転せずにそのまま接続バス３００に送出する。
【００７８】
次に、図９は、受信側のバスＩ／Ｆの内部構成例を示す図である。
情報処理装置２００内のバスＩ／Ｆ２０４は、バス反転回路２１０、エラー検出回路２２０、受信回路２３０およびパケット解析回路２４０を備えている。
【００７９】
バス反転回路２１０は、パケット解析回路２４０からのバス反転信号に基づき、必要に応じて、接続バス３００を通じて受信した全バスについての信号の極性を反転する。バス反転回路２１０は、バス反転情報レジスタ２１１と反転ゲート２１２とを備えている。
【００８０】
バス反転情報レジスタ２１１は、パケット解析回路２４０から出力されたバス反転信号の値を保持する。反転ゲート２１２は、接続バス３００からの受信信号とバス反転情報レジスタ２１１に保持された値とのＥＯＲをとるゲート回路である。反転ゲート２１２は、バス反転情報レジスタ２１１の値が“０”のとき、接続バス３００からの受信信号をそのまま受信回路２３０に出力する。一方、バス反転情報レジスタ２１１の値が“１”のとき、接続バス３００からの全バスについての受信信号を反転して、受信回路２３０に出力する。なお、バス反転情報レジスタ２１１の値が“１”であることは、バスの故障診断処理中であることを示している。
【００８１】
エラー検出回路２２０は、反転ゲート２１２から出力された信号、すなわち、“ＴＡＧ”の信号、データバスの信号および“ＥＣＣ”の信号を基に、２ビットまでのエラー検出処理を実行する。また、エラー検出回路２２０は、１ビットエラーを検出した場合には、エラー訂正処理を実行する。
【００８２】
ここで、バスの故障診断処理中であるとき（例えば、バス反転情報レジスタ２１１の値が“１”であるとき）に、１ビットエラーを検出した場合、エラー検出回路２２０は、接続バス３００のうち１つのバスに故障が発生したことを記述したエラー情報２２１を生成する。エラー情報２２１は、例えば、ＨＤＤ２０３などの不揮発性記憶媒体に記憶される。なお、エラー情報２２１の内容は、例えば、情報処理装置２００に接続された表示装置（図示せず）や、情報処理装置２００に接続された他の装置を通じて、管理者に通知されてもよい。
【００８３】
また、エラー検出回路２２０は、２ビットエラーを検出した場合には、例えば、情報処理装置２００のＣＰＵ２０１に対して訂正不能エラーの発生を通知し、バスコントローラ２０５とバスＩ／Ｆ２０４との間の通信を停止させる。
【００８４】
受信回路２３０は、受信レジスタ２３１を備えており、エラー検出回路２２０から出力された１クロックサイクル分の信号を受信レジスタ２３１に一旦保持した後、情報処理装置２００内のバスコントローラ２０５に出力する。
【００８５】
パケット解析回路２４０は、エラー検出回路２２０から出力されたパケットの内容に基づいて、バスの反転が指示されたか否かを判定する。パケット解析回路２４０は、パケットの内容を解析するフォーマット解析部２４１を備えている。パケット解析回路２４０は、エラー検出回路２２０からバス制御パケットを受信すると、受信パケット内の“ＣＴＬ”の値を、バス反転信号としてバス反転回路２１０内のバス反転情報レジスタ２１１にセットする。
【００８６】
なお、受信回路２３０は、例えば、バス反転回路２１０の前段に配置されてもよい。ただし、この場合でも、エラー検出回路２２０は、バス反転回路２１０からの出力信号を基にエラー検出および訂正の各処理を実行できる位置に配置される。
【００８７】
また、以上の図９に示したバスＩ／Ｆ２０４の機能は、情報処理装置１００のバスＩ／Ｆ１０４も備えていてもよい。
図１０は、パケット解析回路の動作手順を示すフローチャートである。
【００８８】
［ステップＳ３１］パケット解析回路２４０のフォーマット解析部２４１は、エラー検出回路２２０から出力されるパケットを監視し、パケットを受信した場合に次のステップＳ３２の処理を実行する。
【００８９】
［ステップＳ３２］フォーマット解析部２４１は、受信したパケットの内容を解析して、受信したパケットがバス制御パケットか否かを判定する。フォーマット解析部２４１は、受信したパケット内の“ＴＡＧ”が“０１”であり、なおかつ“ＣＯＤＥ”の値が“ＦＦ”であった場合、バス制御パケットを受信したと判定し、ステップＳ３３の処理を実行する。一方、受信したパケットがバス制御パケットではないと判定された場合には、ステップＳ３１の処理が実行される。
【００９０】
［ステップＳ３３］フォーマット解析部２４１は、受信したバス制御パケットから“ＬＮＧ”の値を抽出し、変数Ｌに設定する。なお、バス制御パケットが複数のクロックサイクルで受信される場合には、“ＬＮＧ”の値は最初のクロックサイクルで受信されるものとする。
【００９１】
［ステップＳ３４］フォーマット解析部２４１は、バス制御パケットの末尾を受信したか否かを判定する。フォーマット解析部２４１は、変数Ｌから１を減算した値が０である場合に、バス制御パケットの末尾を受信したと判定して、ステップＳ３６の処理を実行する。また、バス制御パケットの末尾が受信されていないと判定された場合には、ステップＳ３５の処理が実行される。
【００９２】
［ステップＳ３５］フォーマット解析部２４１は、変数Ｌから１を減算する。そして、次のクロックサイクルにおいて、ステップＳ３４の処理が再度実行される。
なお、送信側での処理と同様に、バス制御パケットが１クロックサイクルで伝送される場合には、ステップＳ３５の処理は実行されない。従って、この場合には、ステップＳ３３の次にステップＳ３６が実行されてもよい。
【００９３】
［ステップＳ３６］フォーマット解析部２４１は、バス制御パケット内の“ＣＴＬ”の値を、バス反転信号としてバス反転回路２１０に更新を指示する。更新指示を受けたバス反転回路２１０は、バス反転情報レジスタ２１１の記憶値を、次のクロックサイクルで“ＣＴＬ”の値に更新する。この後、ステップＳ３１の処理が実行され、次のパケットが待機される。
【００９４】
以上の処理では、バス制御パケットがバス反転回路２１０の反転ゲート２１２を通過している間は、このバス制御パケットに基づくバス反転情報レジスタ２１１の更新は行われない。そして、バス制御パケットの次のパケットが反転ゲート２１２に入力される際に、バス反転情報レジスタ２１１の値が更新されて、反転ゲート２１２において反転動作を行うか否かが切り替えられる。
【００９５】
図１１は、受信側のバスＩ／Ｆの動作例を示すタイムチャートである。以下、図１１を参照して、バス反転回路２１０の反転ゲート２１２が反転動作を行っていない状態から、反転動作を開始するまでのバスＩ／Ｆ２０４の動作について説明する。
【００９６】
バス反転情報レジスタ２１１の記憶値が“０”の場合、反転ゲート２１２は接続バス３００からの受信信号を反転せず、そのままエラー検出回路２２０に出力する。この状態において、接続バス３００からバス制御パケットを受信すると、バス制御パケットは反転ゲート２１２およびエラー検出回路２２０を通過して、受信回路２３０およびパケット解析回路２４０に出力される（タイミングＴ４１）。
【００９７】
パケット解析回路２４０のフォーマット解析部２４１は、“ＣＴＬ”に“１”が設定されたバス制御パケットを受信すると、図１０に示した処理に従い、バス反転回路２１０にバス反転情報の値を“１”に更新するよう指示する。これにより、バス反転情報レジスタ２１１の記憶値が、次のクロックサイクルにおいて“１”に更新される（タイミングＴ４２）。
【００９８】
このタイミング以降、接続バス３００からバス反転回路２１０に入力される信号は、すべてのバスについて元の信号の値を反転した信号となる。そして、反転ゲート２１２は、接続バス３００から受信した全バスについての信号を反転して、エラー検出回路２２０を通じて受信回路２３０およびパケット解析回路２４０に出力する。従って、受信回路２３０およびパケット解析回路２４０は、接続バス３００からの受信信号が元の信号を反転した信号となっていても、各ビットの値を元に戻した信号を受信できる。
【００９９】
ここで、接続バス３００に元の信号の値を反転した信号が伝送されている状態では、接続バス３００のうち１つのバスに故障が発生した場合、エラー検出回路２２０により１ビットエラーが検出される。
【０１００】
例えば、ある１つのバスにおいて、元の送信信号の値が“０”であるとき、バスには反転された値である“１”が伝送される。しかし、そのバスが故障していた場合、バスＩ／Ｆ２０４は故障したバスからの受信信号を“０”と認識し、エラー検出回路２２０には、受信した信号の値を反転した“１”が入力される。このため、エラー検出回路２２０は、故障したバスからの受信信号をエラーと判定する。このような判定処理では、例えば、故障したバスが信号送信に使用されていないなど、故障診断期間中にそのバスに対する元の信号が“０”のまま変化しない場合でも、バスの故障を検出できる。
【０１０１】
また、エラー検出回路２２０は、エラーの発生したバスの位置を特定してエラー情報２２１に記述するとともに、エラー訂正を行って、エラー訂正後の受信信号を受信回路２３０およびパケット解析回路２４０に出力する。このため、バスＩ／Ｆ２０４は、接続バス３００のうち１つのバスに故障が発生した場合でも、エラー訂正を行うことで通常の信号伝送処理を続行可能であるとともに、故障の発生したバスの位置を特定することができる。
【０１０２】
なお、バスＩ／Ｆ２０４においては、反転動作を実行中の反転ゲート２１２から、“ＣＴＬ”の値が“０”とされたバス制御パケットが出力されると、フォーマット解析部２４１の処理によりバス反転情報レジスタ２１１の記憶値が“０”に更新される。この更新処理に応じて、反転ゲート２１２は、全ビットが反転されたバス制御パケットの受信終了後に反転動作を停止して、それ以後の受信信号を反転することなく、そのままエラー検出回路２２０に出力する。
【０１０３】
以上説明した第２の実施の形態では、送信側のバスＩ／Ｆ１０４に、接続バス３００のすべてのバスの信号を反転する機能を設けた。また、受信側のバスＩ／Ｆ２０４に、すべてのバスの受信信号を反転する機能と、反転後の受信信号を基にエラー検出および訂正を行う機能とを設けた。このような構成において、接続バス３００に元の信号を反転した信号を伝送させることにより、通常の信号伝送処理を続行しながら、接続バス３００の１つのバスにおける故障の発生を検出することができる。
【０１０４】
また、通常の信号伝送処理を続行しながらバスの故障診断動作を実行できることから、例えば、故障診断動作のための専用の送信データを生成する必要がなく、このような送信データを生成するためのハードウェアを送信側に搭載する必要もない。
【０１０５】
さらに、送信側のバスＩ／Ｆ１０４からバス制御パケットを送出することで、バスの故障診断動作を任意の期間だけ実行できるようになる。また、バス制御パケットを用いたことにより、例えば、受信側のバスＩ／Ｆ２０４に対して、バスの故障診断動作の開始を通知するための別の通信線などを設ける必要がなくなるので、システム構成の変更を小規模に留めることができる。
【０１０６】
〔第３の実施の形態〕
第３の実施の形態では、第２の実施の形態に係る情報伝送システムに、接続バス３００に送出する信号のうち任意のバスの信号のみを反転させる機能を付加したシステムを例示する。
【０１０７】
図１２は、第３の実施の形態に係る情報伝送システムの構成を示す図である。なお、図１２では、図２に示した構成要素に対応する構成要素については同じ符号を付して示し、その説明を省略する。
【０１０８】
本実施の形態に係る情報伝送システムは、図１２に示すように、情報処理装置１００ａと情報処理装置２００ａとの間で接続バス３００を通じてデータ送受信されるシステムである。情報処理装置１００ａ，２００ａの基本的なハードウェア構成は、ともに第２の実施の形態の情報処理装置１００，２００と同様である。
【０１０９】
ただし、情報処理装置１００ａを送信側としたとき、バスＩ／Ｆ１０４ａは、接続バス３００の全バスに送出する信号を反転する機能に加えて、任意のバスに送出する信号のみを反転する機能も備えている。また、受信側のバスＩ／Ｆ２０４ａは、接続バス３００のうち全バスから受信した信号を反転する機能に加えて、接続バス３００を通じて受信した信号のうち任意のバスの信号のみを反転する機能も備えている。さらに、バスの信号反転動作を、受信側または送信側の一方でのみ行うことも可能になっている。
【０１１０】
接続バス３００を通じて伝送される通常パケットの構成は、図３に示した通りである。また、本実施の形態でも、接続バス３００における信号反転動作を制御するために、バス制御パケットが使用される。バス制御パケットは、バスＩ／Ｆ１０４ａ，２０４ａのうち送信側の回路において生成され、接続バス３００に送出される。
【０１１１】
図１３は、第３の実施の形態で使用されるバス制御パケットの構成例を示す図である。
本実施の形態では、例として、２クロックサイクルで１つのバス制御パケットが伝送される。最初のクロックサイクルでは、図１３の上段に示すように、データバスにおいて“ＣＯＤＥ”、“ＩＤ”、“ＬＮＧ”、“Ｅ”、“Ｄ”および“Ｒ”が伝送される。そして、次のクロックサイクルでは、図１３の下段に示すように、データバスにおいて“ＣＴＬ’”が伝送される。
【０１１２】
第２の実施の形態と同様に、“ＣＯＤＥ”はパケットの属性を示し、“ＩＤ”はパケットの通し番号を示し、“ＬＮＧ”はパケットの長さを示す。
“Ｅ”は、信号反転の対象とするバスの領域を指定する２ビットの情報である。“Ｅ”の値が“００”のとき、データバスを信号反転の領域とすることを示し、“０１”のとき、“ＴＡＧ”および“ＥＣＣ”を伝送するバスを信号反転の領域とすることを示す。また、“１ｘ”（ｘは０または１）のとき、すべてのバスを信号反転の領域とすることを示す。
【０１１３】
“Ｄ”は、送信側で信号反転動作を行うか否かを指定する１ビットの情報であり、値が“０”のとき、送信側で信号反転動作を行わないことを示し、“１”のとき、送信側で信号反転動作を行うことを示す。“Ｒ”は、受信側で信号反転動作を行うか否かを指定する１ビットの情報であり、値が“０”のとき、受信側で信号反転動作を行わないことを示し、“１”のとき、受信側で信号反転動作を行うことを示す。“Ｄ”および“Ｒ”を用いて、信号反転動作を実行させるか否かを受信側および送信側のそれぞれに対して個別に指示できるようにしたことで、様々なパターンのバス故障診断動作を実行できるようになる。
【０１１４】
“ＣＴＬ’”は、信号を反転するバスの位置を指定する情報である。図１３の例では、“ＣＴＬ’”はデータバスの数と同じだけのビット数を有し、信号を反転するバスに対応するビットの値が“１”とされる。信号を反転するバスの位置は、“Ｅ”と“ＣＴＬ’”との組み合わせにより指定される。“Ｅ”が“００”のとき、“ＣＴＬ’”の各ビットがデータバスの各バスに対応付けられ、データバスの反転すべき位置に対応した“ＣＴＬ’”のビットに“１”が設定される。“Ｅ”が“０１”のとき、“ＣＴＬ’”のうちの例えば下位領域の各ビットが“ＴＡＧ”および“ＥＣＣ”が伝送されるバスのそれぞれに対応付けられ、“ＴＡＧ”および“ＥＣＣ”の反転すべき位置に対応した“ＣＴＬ’”のビットに“１”が設定される。“Ｅ”が“１ｘ”のとき、“ＣＴＬ’”の値は、例えば、全ビットが“０”あるいは全ビットが“１”の２つの値をとり、前者の場合、すべてのバスの信号を反転しないことが指示され、後者の場合、すべてのバスの信号を反転することが指示される。
【０１１５】
次に、情報処理装置１００ａから情報処理装置２００ａに対して接続バス３００を通じてデータを送信する場合を想定し、このデータ送信の際に実行されるバスの故障診断処理のためにバスＩ／Ｆ１０４ａ，２０４ａがそれぞれ備える機能について説明する。
【０１１６】
図１４は、送信側のバスＩ／Ｆの内部構成を示す図である。なお、図１４では、図５に示した構成要素に対応する構成要素については同じ符号を付して示している。
情報処理装置１００ａ内のバスＩ／Ｆ１０４ａは、パケット生成回路１１０ａ、バス調停回路１２０、出力回路１３０、エラー検出回路１４０、セレクタ１４１、パケット解析回路１５０ａおよびバス反転回路１６０ａを備えている。
【０１１７】
パケット生成回路１１０ａは、図１３に示すバス制御パケットを生成して、バス調停回路１２０に出力する。パケット生成回路１１０ａは、レジスタ設定部１１１ａ、パケット制御レジスタ１１２ａ、フォーマット変換部１１３ａおよびＥＣＣ生成部１１４を備えている。
【０１１８】
ここで、図１５は、パケット制御レジスタに設定される情報の例を示す図である。
パケット制御レジスタ１１２ａには、 “Ｖ”、“ＣＴＬ’”、“Ｅ”、“Ｄ”および“Ｒ”の各情報が設定される。“Ｖ”は、第２の実施の形態と同様に、バス制御パケットを生成するか否かを指示するための情報であり、バス制御パケットを生成しない状態では“０”が設定され、バス制御パケットを生成する場合に“１”が設定される。
【０１１９】
“ＣＴＬ’”は、信号を反転するバスの位置を指定する情報である。“Ｅ”は、信号反転の対象とするバスの領域を指定する２ビットの情報である。“Ｄ”は、送信側で信号反転動作を行うか否かを指定する１ビットの情報である。“Ｒ”は、受信側で信号反転動作を行うか否かを指定する１ビットの情報である。バス制御パケットが出力される際には、パケット制御レジスタ１１２ａの“ＣＴＬ’”、“Ｅ”、“Ｄ”および“Ｒ”に設定された情報が、バス制御パケットの“ＣＴＬ’”、“Ｅ”、“Ｄ”および“Ｒ”にそれぞれ設定される。
【０１２０】
以下、図１４に戻って説明する。
レジスタ設定部１１１ａは、例えば、管理者による情報処理装置１００ａに対する入力操作などに応じて、パケット制御レジスタ１１２ａに対して値を設定する。バス制御パケットを生成する場合、レジスタ設定部１１１ａは、パケット制御レジスタ１１２ａの“Ｖ”に“１”を設定することで、バス制御パケットの送信を要求する。また、パケット制御レジスタ１１２ａの“ＣＴＬ’”、“Ｅ”、“Ｄ”および“Ｒ”のそれぞれに所望の値を設定することで、信号反転動作を実行させる装置とバスの位置とを指定する。
【０１２１】
フォーマット変換部１１３ａは、パケット制御レジスタ１１２ａの“Ｖ”に“１”が設定されると、バス制御パケットに設定すべき値を用意して、バス制御パケットを生成し、バス調停回路１２０に対してバス制御パケットの送信を要求する。フォーマット変換部１１３ａは、バス制御パケットの２クロックサイクル分の“ＴＡＧ”にそれぞれ“０１”を設定する。これとともに、バス制御パケットの“ＣＴＬ’”、“Ｅ”、“Ｄ”および“Ｒ”にパケット制御レジスタ１１２ａの“ＣＴＬ’”、“Ｅ”、“Ｄ”および“Ｒ”の値をそれぞれ設定する。さらに、各クロックサイクルの“ＴＡＧ”の値とデータバスに伝送する値とをＥＣＣ生成部１１４に通知し、エラー訂正符号の生成を要求する。
【０１２２】
ＥＣＣ生成部１１４は、フォーマット変換部１１３ａから通知された値を基にエラー訂正符号を算出し、フォーマット変換部１１３ａに返信する。フォーマット変換部１１３ａは、ＥＣＣ生成部１１４から返信されたエラー訂正符号をバス制御パケットの“ＥＣＣ”に設定する。フォーマット変換部１１３ａは、バス調停回路１２０から送信の受付信号を受信すると、バス制御パケットを送信する。
【０１２３】
バス調停回路１２０は、バスコントローラ１０５から送信を要求された通常パケットと、パケット生成回路１１０ａから送信を要求されたバス制御パケットとを、選択的に出力する。バス調停回路１２０からの出力信号は、セレクタ１４１、パケット解析回路１５０ａおよびバス反転回路１６０ａに出力される。
【０１２４】
パケット解析回路１５０ａは、バス調停回路１２０から出力されたパケットの内容に基づいて、バス反転回路１６０ａにおける信号反転動作を制御する。パケット解析回路１５０ａは、パケットの内容を解析するフォーマット解析部１５１ａと、バス制御パケットから抽出された情報を一時的に保持するコピーレジスタ１５２とを備えている。
【０１２５】
フォーマット解析部１５１ａは、バス調停回路１２０からバス制御パケットを受信したとき、バス制御パケット内の“Ｄ”が“１”である場合には、“Ｅ”および“ＣＴＬ’”の各値に基づいて、バス反転回路１６０ａに対して、信号を反転するバスの位置を指定するバス反転信号を出力する。バス反転信号は、例えば、接続バス３００のバスの数と同じビット数を有し、バス反転信号のそれぞれのビットが１つのバスに対応している。そして、信号反転動作を実行させるバスに対応するビットが“１”とされる。
【０１２６】
また、フォーマット解析部１５１ａは、バス制御パケットの末尾を検出すると、パケット制御レジスタ１１２ａの“Ｖ”を“０”に更新する。
コピーレジスタ１５２には、フォーマット解析部１５１ａにより、バス制御パケットの前半部から抽出された“Ｅ”および“Ｒ”の各値がセットされる。コピーレジスタ１５２は、セットされた値を１クロックサイクルの間保持する。このコピーレジスタ１５２にセットされた値は、フォーマット解析部２４１ａの処理において参照される。
【０１２７】
なお、パケット解析回路１５０ａの詳細な動作手順については、後の図１６において説明する。
バス反転回路１６０ａは、パケット解析回路１５０ａからのバス反転信号に基づき、バス調停回路１２０からの入力信号のうち指定されたバスの信号の極性を反転して出力する。バス反転回路１６０ａは、バス反転情報レジスタ１６１ａと反転ゲート１６２ａとを備えている。
【０１２８】
バス反転情報レジスタ１６１ａは、パケット解析回路１５０ａからのバス反転信号の各ビットの値を保持する。そして、バス反転情報レジスタ１６１ａの各ビットは、バス調停回路１２０から反転ゲート１６２ａに入力されるバスのそれぞれに対応している。
【０１２９】
反転ゲート１６２ａは、バス調停回路１２０からの各バスの信号と、バス反転情報レジスタ１６１ａの各ビットの値とのＥＯＲをとるゲート回路である。反転ゲート１６２ａは、バス反転情報レジスタ１６１ａに“１”が設定されたビットに対応するバスからの入力信号の極性を反転して出力する。
【０１３０】
また、バス反転回路１６０ａは、セレクタ１４１の入力チャネルの切り替えを制御する選択信号を出力する。この選択信号は、バス反転情報レジスタ１６１ａの全ビットが“０”または全ビットが“１”の場合に“１”が出力される。
【０１３１】
出力回路１３０は、出力レジスタ１３１を備えており、バス反転回路１６０ａの反転ゲート１６２ａから出力された信号を出力レジスタ１３１に一旦保持した後、接続バス３００に送出する。
【０１３２】
セレクタ１４１には、バス調停回路１２０からの出力信号と、バス反転回路１６０ａの反転ゲート１６２ａからの出力信号とが入力され、セレクタ１４１は、これらの入力信号を、エラー検出回路１４０に対して選択的に出力する。セレクタ１４１は、バス反転回路１６０ａから選択信号“０”が入力された場合には、反転ゲート１６２ａからの出力信号を選択し、選択信号“１”が入力されていた場合には、バス調停回路１２０からの出力信号を選択する。
【０１３３】
この切り替え動作を行うことにより、バス反転回路１６０ａの反転ゲート１６２ａで全バスの信号の反転／非反転が切り替えられる状態では、バス調停回路１２０からの出力信号がエラー検出回路１４０に入力される。この状態では、反転ゲート１６２ａで反転される前の状態のパケットを基にエラー検出が実行されるようになる。
【０１３４】
一方、反転ゲート１６２ａにおいて一部のバスの信号の反転／非反転が切り替えられる状態では、反転ゲート１６２ａからの出力信号がエラー検出回路１４０に入力される。この状態では、例えば、反転ゲート１６２ａにおいて所望のバスの信号を反転させてエラー検出回路１４０にパケットを入力し、反転ゲート１６２ａより前のバスにおける故障の有無を検証する動作などを実現できる。
【０１３５】
エラー検出回路１４０は、セレクタ１４１により選択された入力信号の値を基に２ビットまでのエラー検出処理を行う。エラー検出回路１４０は、エラーが検出された場合、例えば、情報処理装置１００ａのＣＰＵ１０１に対してエラーの発生を通知し、バスコントローラ１０５とバスＩ／Ｆ１０４ａとの間の通信を停止させる。
【０１３６】
また、エラー検出回路１４０は、１ビットエラーを検出した場合には、エラー訂正処理を行ってもよい。バス調停回路１２０からの出力信号を基にエラー訂正処理を行った場合には、エラー訂正後の信号をパケット解析回路１５０ａおよびバス反転回路１６０ａに出力する。また、バス反転回路１６０ａからの出力信号を基にエラー訂正処理を行った場合には、エラー訂正後の信号を出力回路１３０の出力レジスタ１３１に設定する。
【０１３７】
なお、以上の図１４に示したバスＩ／Ｆ１０４ａの機能は、情報処理装置２００ａのバスＩ／Ｆ２０４ａも備えていてもよい。
図１６は、パケット解析回路の動作手順を示すフローチャートである。
【０１３８】
［ステップＳ５１］パケット解析回路１５０ａのフォーマット解析部１５１ａは、バス調停回路１２０から出力されるパケットを監視し、パケットを受信した場合に次のステップＳ５２の処理を実行する。
【０１３９】
［ステップＳ５２］フォーマット解析部１５１ａは、受信したパケットの内容を解析して、受信したパケットがバス制御パケットか否かを判定する。フォーマット解析部１５１ａは、受信したパケット内の“ＴＡＧ”が“０１”であり、なおかつ“ＣＯＤＥ”の値が“ＦＦ”であった場合、バス制御パケットの前半部を受信したと判定し、ステップＳ５３の処理を実行する。一方、受信したパケットがバス制御パケットではないと判定された場合には、ステップＳ５１の処理が実行される。
【０１４０】
［ステップＳ５３］フォーマット解析部１５１ａは、受信したバス制御パケットから“Ｄ”の値を抽出する。“Ｄ”が“１”の場合はステップＳ５４の処理が実行され、“Ｄ”が“０”の場合はステップＳ５１の処理が実行される。
【０１４１】
［ステップＳ５４］フォーマット解析部１５１ａは、受信したバス制御パケット内の“Ｅ”および“Ｄ”の各値を、コピーレジスタ１５２にセットする。コピーレジスタ１５２は、セットされた値を、例えば自律的に、１クロックサイクルの間保持する。なお、例えば、後のステップＳ５７の実行後に、フォーマット解析部１５１ａによりコピーレジスタ１５２の保持値がクリアされるようにしてもよい。
【０１４２】
［ステップＳ５５］フォーマット解析部１５１ａは、ステップＳ５１でパケットの受信を開始したクロックサイクルの次のクロックサイクル、すなわち、バス制御パケットの後半部を受信したクロックサイクルにおいて、コピーレジスタ１５２を参照する。このとき、コピーレジスタ１５２の全ビットが“０”でないことを検知すると、フォーマット解析部１５１ａは、現在受信中の信号がバス制御パケットの末尾であると判定する。ここでは、コピーレジスタ１５２において、少なくとも“Ｄ”の値“１”が保持されていた場合に、受信中の信号がバス制御パケットの末尾であると判定される。
【０１４３】
なお、バス制御パケットの末尾の受信を判定する方法としては、この他に例えば、バス制御パケット内の“ＬＮＧ”の値を基に判定する方法も考えられる。この場合、フォーマット解析部１５１ａは、例えば、ステップＳ５２においてバス制御パケットの前半部を受信したと判定すると、クロックサイクルのカウント動作を開始する。そして、カウント数が“ＬＮＧ”の値に達したときに、バス制御パケットの末尾を受信したと判定する。
【０１４４】
［ステップＳ５６］フォーマット解析部１５１ａは、コピーレジスタ１５２に保持された“Ｅ”の値と、ステップＳ５５以降にバス制御パケットの後半部から抽出した“ＣＴＬ’”の値とを基に、バス反転回路１６０ａに対してバス反転信号を出力する。出力されたバス反転信号により、バス反転情報レジスタ１６１ａの記憶値が更新される。
【０１４５】
例えば、“Ｅ”が“１ｘ”の場合、“ＣＴＬ’”の値に応じてバス反転信号の全ビットが“０”または“１”とされる。また、“Ｅ”が“００”の場合、バス反転信号中のデータバスに対応するビットのうち、“ＣＴＬ’”の値により信号反転動作が指示されたビットが“１”とされる。また、“Ｅ”が“０１”の場合、バス反転信号中の“ＴＡＧ”および“ＥＣＣ”のバスに対応するビットのうち、“ＣＴＬ’”の値により信号反転動作が指示されたビットが“１”とされる。
【０１４６】
なお、“Ｅ”がどの値の場合でも、“ＣＴＬ’”の全ビットが“０”とされて、バス反転信号の全ビットが“０”となることで、反転ゲート１６２ａでの信号反転動作が終了される。すなわち、“Ｄ”に“１”が設定され、“ＣＴＬ’”の全ビットに“０”が設定されたバス制御パケットは、送信側における信号反転動作の終了を指示するパケットとなる。
【０１４７】
［ステップＳ５７］フォーマット解析部１５１ａは、パケット制御レジスタ１１２ａの“Ｖ”の値を“０”に更新する。この後、ステップＳ５１の処理が実行され、次のパケットが待機される。
【０１４８】
図１７は、送信側のバスＩ／Ｆの動作例を示すタイムチャートである。
図１７のタイミングＴ７１の直前では、バス反転回路１６０ａの反転ゲート１６２ａは、すべてのバスについて反転動作を行っていないものとする。すなわち、このとき、バス反転情報レジスタ１６１ａの全ビットが“０”となっている。
【０１４９】
この状態から、まず、レジスタ設定部１１１ａは、パケット制御レジスタ１１２ａの“Ｖ”に“１”を設定するとともに、“Ｅ”および“ＣＴＬ’”に所望の値を設定する（タイミングＴ７１）。ここでは例として、パケット制御レジスタ１１２ａの“Ｄ”にも“１”が設定されるものとする。
【０１５０】
フォーマット変換部１１３ａは、パケット制御レジスタ１１２ａの“Ｖ”が“１”になったことを検知すると、バス制御パケットを生成して、バス調停回路１２０に対してバス制御パケットの送信を要求する。このとき、生成されたバス制御パケットの“ＣＴＬ’”には、パケット制御レジスタ１１２ａに設定された“ＣＴＬ’”と同じ値が設定される。
【０１５１】
バス調停回路１２０は、フォーマット変換部１１３ａからの送信要求を受け付けると、フォーマット変換部１１３ａから出力されたバス制御パケットを、セレクタ１４１、パケット解析回路１５０ａおよびバス反転回路１６０ａに対して出力する（タイミングＴ７２）。本実施の形態では、バス制御パケットは、２クロックサイクルの期間（タイミングＴ７２〜Ｔ７４）に出力される。
【０１５２】
パケット解析回路１５０ａのフォーマット解析部１５１ａは、受信したバス制御パケットの前半部から“Ｅ”および“Ｄ”の値を抽出して、コピーレジスタ１５２にセットする（タイミングＴ７３）。コピーレジスタ１５２にセットされた値は、１クロックサイクルの期間（タイミングＴ７３〜Ｔ７４）保持される。
【０１５３】
フォーマット解析部１５１ａは、バス制御パケットの後半部を受信したとき、コピーレジスタ１５２の少なくとも“Ｄ”に“１”がセットされていることから、バス制御パケットの末尾を受信したと判定する。そして、フォーマット解析部１５１ａは、受信したバス制御パケットの後半部から抽出した“ＣＴＬ’”と、コピーレジスタ１５２にセットされた“Ｅ”の値とに基づくバス反転信号を出力する。フォーマット解析部１５１ａが出力したバス反転信号の値により、バス反転情報レジスタ１６１ａの値が更新される（タイミングＴ７４）。図１７では、バス反転情報レジスタ１６１ａ内の反転対象となる１ビットが、タイミングＴ７４で“０”から“１”に変化したことを示している。
【０１５４】
なお、このとき、フォーマット解析部１５１ａは、パケット制御レジスタ１１２ａの“Ｖ”を“０”に更新する。
ところで、バス制御パケットの後半部が反転ゲート１６２ａから出力されるまでの間（タイミングＴ７２，Ｔ７３）、バス反転情報レジスタ１６１ａの全ビットが“０”である。このため、バス制御パケットは、各ビットの値が反転されることなくそのまま出力回路１３０に出力される。そして、バス反転情報レジスタ１６１ａが更新されると、反転ゲート１６２ａは、バス反転情報レジスタ１６１ａにおいて“１”とされたビットに対応するバスの信号を反転して出力する（タイミングＴ７４）。これにより、バス制御パケットに続いて送信されるパケットの信号のうち、反転を指示されたビット位置のバス信号が、反転された状態となる。
【０１５５】
以上のバスＩ／Ｆ１０４ａでは、反転ゲート１６２ａでの信号反転動作を切り替えるためにバス調停回路１２０からバス制御パケットが出力されたとき、バス制御パケットが反転ゲート１６２ａを通過した後に、バス反転情報レジスタ１６１ａが更新される。従って、反転ゲート１６２ａでは、バス制御パケットが反転ゲート１６２ａを通過した後に、通過したバス制御パケットで指示された動作切り替えが実行される。
【０１５６】
次に、図１８は、受信側のバスＩ／Ｆの内部構成例を示す図である。なお、図１８では、図９に示した構成要素に対応する構成要素については同じ符号を付して示している。
情報処理装置２００ａ内のバスＩ／Ｆ２０４ａは、バス反転回路２１０ａ、エラー検出回路２２０ａ、受信回路２３０およびパケット解析回路２４０ａを備えている。
【０１５７】
バス反転回路２１０ａは、パケット解析回路２４０ａからのバス反転信号に基づき、接続バス３００を通じて受信した信号のうち、バス制御パケットにより指示されたバスの信号の極性を反転する。バス反転回路２１０ａは、バス反転情報レジスタ２１１ａと反転ゲート２１２ａとを備えている。
【０１５８】
バス反転情報レジスタ２１１ａおよび反転ゲート２１２ａは、図１４に示したバス反転情報レジスタ１６１ａおよび反転ゲート１６２ａとそれぞれ同様の構成を有している。すなわち、バス反転情報レジスタ２１１ａは、接続バス３００のバスの数と同じビット数を有し、パケット解析回路２４０ａから出力されたバス反転信号の値を保持する。反転ゲート２１２ａは、接続バス３００の各バスの信号と、バス反転情報レジスタ２１１ａの各ビットの値とのＥＯＲをとるゲート回路である。反転ゲート２１２ａは、バス反転情報レジスタ２１１ａに“１”が設定されたビットに対応するバスからの入力信号の極性を反転して出力する。
【０１５９】
エラー検出回路２２０ａは、反転ゲート２１２ａから出力された信号、すなわち、“ＴＡＧ”の信号、データバスの信号および“ＥＣＣ”の信号を基に、２ビットまでのエラー検出処理を実行する。また、エラー検出回路２２０ａは、１ビットエラーを検出した場合には、エラー訂正処理を実行する。
【０１６０】
また、エラー検出回路２２０ａは、エラーを検出すると、エラーを検出したことを記述したエラー情報２２１ａを生成する。エラー情報２２１ａには、例えば、エラー検出時点でバス反転情報レジスタ２１１ａに保持されていた信号が記述される。これにより、どのバスの信号を反転させていたときにエラーが検出されたかが識別できるようになる。なお、エラー情報２２１ａは、例えば、ＨＤＤ２０３などの不揮発性記憶媒体に記憶される。また、エラー情報２２１ａの内容は、例えば、情報処理装置２００ａに接続された表示装置（図示せず）や、情報処理装置２００ａに接続された他の装置を通じて、管理者に通知されてもよい。
【０１６１】
受信回路２３０は、受信レジスタ２３１を備えており、エラー検出回路２２０ａから出力された１クロックサイクル分の信号を受信レジスタ２３１に一旦保持した後、情報処理装置２００ａ内のバスコントローラ２０５に出力する。
【０１６２】
パケット解析回路２４０ａは、エラー検出回路２２０ａから出力されたパケットの内容に基づいて、バス反転回路２１０ａにおける信号反転動作を制御する。パケット解析回路２４０ａは、パケットの内容を解析するフォーマット解析部２４１ａと、バス制御パケットから抽出された情報を一時的に保持するコピーレジスタ２４２とを備えている。
【０１６３】
フォーマット解析部２４１ａは、エラー検出回路２２０ａからバス制御パケットを受信したとき、バス制御パケット内の“Ｒ”が“１”である場合には、“Ｅ”および“ＣＴＬ’”の各値に基づいて、バス反転回路２１０ａに対して、信号を反転するバスの位置を指定するバス反転信号を出力する。バス反転信号は、送信側のバスＩ／Ｆ２０４ａで使用されたバス反転信号と同様に、接続バス３００のバスの数と同じビット数を有し、バス反転信号のそれぞれのビットが１つのバスに対応している。そして、信号反転動作を実行させるバスに対応するビットが“１”とされる。
【０１６４】
コピーレジスタ２４２には、フォーマット解析部２４１ａにより、バス制御パケットの前半部から抽出された“Ｅ”および“Ｒ”の各値がセットされる。コピーレジスタ２４２は、セットされた値を１クロックサイクルの間保持する。このコピーレジスタ２４２にセットされた値は、フォーマット解析部２４１ａの処理において参照されるが、コピーレジスタ２４２の値に基づくフォーマット解析部２４１ａの詳細な処理手順については、後の図１９において説明する。
【０１６５】
なお、受信回路２３０は、例えば、バス反転回路２１０ａの前段に配置されてもよい。ただし、この場合でも、エラー検出回路２２０ａは、バス反転回路２１０ａからの出力信号を基にエラー検出および訂正の各処理を実行できる位置に配置される。
【０１６６】
また、以上の図１８に示したバスＩ／Ｆ２０４ａの機能は、情報処理装置１００ａのバスＩ／Ｆ１０４ａも備えていてもよい。
図１９は、パケット解析回路の動作手順を示すフローチャートである。
【０１６７】
［ステップＳ８１］パケット解析回路２４０ａのフォーマット解析部２４１ａは、エラー検出回路２２０ａから出力されるパケットを監視し、パケットを受信した場合に次のステップＳ８２の処理を実行する。
【０１６８】
［ステップＳ８２］フォーマット解析部２４１ａは、受信したパケットの内容を解析して、受信したパケットがバス制御パケットか否かを判定する。フォーマット解析部２４１ａは、受信したパケット内の“ＴＡＧ”が“０１”であり、なおかつ“ＣＯＤＥ”の値が“ＦＦ”であった場合、バス制御パケットの前半部を受信したと判定し、ステップＳ８３の処理を実行する。一方、受信したパケットがバス制御パケットではないと判定された場合には、ステップＳ８１の処理が実行される。
【０１６９】
［ステップＳ８３］フォーマット解析部２４１ａは、受信したバス制御パケットから“Ｒ”の値を抽出する。“Ｒ”が“１”の場合はステップＳ８４の処理が実行され、“Ｒ”が“０”の場合はステップＳ８１の処理が実行される。
【０１７０】
［ステップＳ８４］フォーマット解析部２４１ａは、受信したバス制御パケット内の“Ｅ”および“Ｒ”の各値を、コピーレジスタ２４２にセットする。コピーレジスタ２４２は、セットされた値を、例えば自律的に、１クロックサイクルの間保持する。なお、例えば、後のステップＳ８６の実行後に、フォーマット解析部２４１ａによりコピーレジスタ２４２の保持値がクリアされるようにしてもよい。
【０１７１】
［ステップＳ８５］フォーマット解析部２４１ａは、ステップＳ８１でパケットの受信を開始したクロックサイクルの次のクロックサイクル、すなわち、バス制御パケットの後半部を受信したサイクルにおいて、コピーレジスタ２４２を参照する。このとき、コピーレジスタ２４２の全ビットが“０”でないことを検知すると、フォーマット解析部２４１ａは、現在受信中の信号がバス制御パケットの末尾であると判定する。例えば、コピーレジスタ２４２において、少なくとも“Ｒ”の値“１”が保持されていた場合に、受信中の信号がバス制御パケットの末尾であると判定される。
【０１７２】
なお、送信側と同様に、バス制御パケットの末尾の受信を判定する方法としては、この他に例えば、バス制御パケット内の“ＬＮＧ”の値を基に判定する方法が採用されてもよい。
【０１７３】
［ステップＳ８６］フォーマット解析部２４１ａは、コピーレジスタ２４２に保持された“Ｅ”の値と、バス制御パケットの後半部から抽出した“ＣＴＬ’”の値とを基に、バス反転回路２１０ａに対してバス反転信号を出力する。出力されたバス反転信号により、バス反転情報レジスタ２１１ａの記憶値が更新される。
【０１７４】
例えば、“Ｅ”が“１ｘ”の場合、“ＣＴＬ’”の値に応じて、バス反転信号の全ビットが“０”または“１”とされる。また、“Ｅ”が“００”の場合、バス反転信号中のデータバスに対応するビットのうち、“ＣＴＬ’”の値により信号反転動作を指示されたビットが“１”とされる。また、“Ｅ”が“０１”の場合、バス反転信号中の“ＴＡＧ”および“ＥＣＣ”のバスに対応するビットのうち、“ＣＴＬ’”の値により信号反転動作を指示されたビットが“１”とされる。
【０１７５】
なお、“Ｅ”がどの値の場合でも、バス反転信号の全ビットが“０”とされることで、反転ゲート２１２ａでの信号反転動作が終了される。すなわち、“Ｒ”に“１”が設定され、“ＣＴＬ’”の全ビットに“０”が設定されたバス制御パケットは、受信側における信号反転動作の終了を指示するパケットとなる。
【０１７６】
この後、ステップＳ８１の処理が実行され、次のパケットが監視される。
図２０は、受信側のバスＩ／Ｆの動作例を示すタイムチャートである。
図２０のタイミングＴ９１の直前では、接続バス３００を通じて送信された信号は、すべてのバスについて元の信号を反転したものではなく、かつ、バス反転回路２１０ａの反転ゲート２１２ａは、すべてのバスについて反転動作を行っていないものとする。このとき、バス反転情報レジスタ２１１ａの全ビットが“０”となっている。
【０１７７】
この状態において、接続バス３００からバス制御パケットの前半部が受信されると、バス制御パケットの前半部は反転ゲート２１２ａおよびエラー検出回路２２０ａを通過して、受信回路２３０およびパケット解析回路２４０ａに出力される（タイミングＴ９１）。
【０１７８】
ここで、受信したバス制御パケットの前半部では、“Ｒ”が“１”であったものとする。なお、前述の通り、バス制御パケットは２クロックサイクルで伝送される。パケット解析回路２４０ａのフォーマット解析部２４１ａは、受信したバス制御パケットの前半部から“Ｅ”および“Ｒ”の値を抽出して、コピーレジスタ２４２にセットする（タイミングＴ９２）。コピーレジスタ２４２にセットされた値は、１クロックサイクルの期間（タイミングＴ９２〜Ｔ９３）保持される。
【０１７９】
フォーマット解析部２４１ａは、バス制御パケットの後半部をエラー検出回路２２０ａから受信したとき、コピーレジスタ２４２の少なくとも“Ｒ”に“１”に値がセットされていることから、バス制御パケットの末尾を受信したと判定する。そして、フォーマット解析部２４１ａは、受信したバス制御パケットの後半部から抽出した“ＣＴＬ’”と、コピーレジスタ２４２にセットされた“Ｅ”の値とに基づくバス反転信号を出力する。フォーマット解析部２４１ａが出力したバス反転信号の値により、バス反転情報レジスタ２１１ａの値が更新される（タイミングＴ９３）。図２０では、バス反転情報レジスタ２１１ａ内の反転対象となるビットが、タイミングＴ９３で“０”から“１”に変化したことを示している。
【０１８０】
ところで、バス制御パケットの後半部が反転ゲート２１２ａから出力されるまでの間（タイミングＴ９１，Ｔ９２）、バス反転情報レジスタ２１１ａの全ビットが“０”である。このため、バス制御パケットは、各ビットの値が反転されることなくそのままエラー検出回路２２０ａに出力される。そして、バス反転情報レジスタ２１１ａが更新されると、反転ゲート２１２ａは、バス反転情報レジスタ２１１ａにおいて“１”とされたビットに対応するバスの信号を反転して出力する（タイミングＴ９３）。これにより、バス制御パケットに続いて送信されるパケットの信号のうち、反転を指示されたビット位置のバス信号が、反転ゲート２１２ａによって反転される。
【０１８１】
以上のバスＩ／Ｆ２０４ａでは、反転ゲート２１２ａでの信号反転動作の切り替えを指示するバス制御パケットが受信されたとき、バス制御パケットが反転ゲート２１２ａを通過した後に、バス反転情報レジスタ２１１ａが更新される。従って、反転ゲート２１２ａでは、バス制御パケットが反転ゲート２１２ａを通過した後に、通過したバス制御パケットによって指示された動作切り替えが実行される。
【０１８２】
以上説明した第３の実施の形態の情報伝送システムは、例えば、次の３通りのバス故障診断動作を実行可能である。
第１の動作例としては、バス制御パケット内の“Ｅ”を“１ｘ”とし、“Ｄ”および“Ｒ”をともに“１”とした場合が挙げられる。この場合、例えば、バス制御パケット内の“ＣＴＬ’”の全ビットを“１”とすることで、送信側のバスＩ／Ｆ１０４ａの反転ゲート１６２ａは、バス制御パケットを受信した後の全バス上の信号を反転する。これとともに、受信側のバスＩ／Ｆ２０４ａの反転ゲート２１２ａは、バス制御パケットを受信した後の全バス上の信号を反転して、極性を元に戻す。反転ゲート２１２ａで反転された信号は、エラー検出回路２２０ａに入力され、これにより接続バス３００上のバスに故障が発生しているか否かが検証される。
【０１８３】
また、全バスの信号反転処理の開始後に例えば、“ＣＴＬ’”の全ビットが“０”とされたバス制御パケットが出力されることで、送信側のバスＩ／Ｆ１０４ａの反転ゲート１６２ａは、バス制御パケットを出力した後に、全バスの信号反転動作を停止する。また、受信側のバスＩ／Ｆ２０４ａの反転ゲート２１２ａは、バス制御パケットを出力した後、全バス上の信号反転動作を停止する。
【０１８４】
すなわち、この第１の動作例では、第２の実施の形態と同様のバス故障診断動作が実行される。このバス故障診断動作では、１つのバスに故障が発生したとき、受信側のエラー検出回路２２０ａは、１ビットエラーを検出してエラー訂正処理を実行するが、エラー訂正不能な２ビット以上のエラーを検出することはない。このため、通常の信号伝送処理を続行しながら、接続バス３００の１つのバスにおける故障の発生を検出することができる。
【０１８５】
第２の動作例としては、バス制御パケット内の“Ｅ”を“００”または“０１”とし、“Ｄ”を“０”、“Ｒ”を“１”とした場合が挙げられる。この場合、送信側のバスＩ／Ｆ１０４ａの反転ゲート１６２ａは、信号反転動作を行わず、受信側のバスＩ／Ｆ２０４ａの反転ゲート２１２ａのみが、信号反転動作を行う。
【０１８６】
このとき、例えば、バス制御パケット内の“ＣＴＬ’”のビットのうち１ビットのみを“１”とすることで、受信側のバスＩ／Ｆ２０４ａにおいて、受信信号のうち“ＣＴＬ’”が示す１つのバスの信号のみ反転させた状態が作り出される。エラー検出回路２２０ａにより、信号を反転したバスのみからエラーが検出された場合、そのバスが正常であることを判定できる。一方、エラー検出回路２２０ａにより、エラーが検出されないか、あるいは２ビットエラーが検出された場合、信号を反転したバスが故障していることを判定できる。
【０１８７】
第３の動作例としては、バス制御パケット内の“Ｅ”を“００”または“０１”とし、“Ｄ”を“１”、“Ｒ”を“０”とした場合が挙げられる。この場合、送信側のバスＩ／Ｆ１０４ａの反転ゲート１６２ａのみが、信号反転動作を行い、受信側のバスＩ／Ｆ２０４ａの反転ゲート２１２ａは、信号反転動作を行わない。
【０１８８】
このとき、例えば、バス制御パケット内の“ＣＴＬ’”のビットのうち１ビットのみを“１”とすることで、接続バス３００に送信される信号のうち“ＣＴＬ’”が示す１つのバスの信号のみ反転させた状態が作り出される。受信側のバスＩ／Ｆ２０４ａでは、エラー検出回路２２０ａにより、信号を反転したバスからエラーが検出された場合、そのバスが正常であることを判定できる。一方、エラー検出回路２２０ａにより、エラーが検出されないか、あるいは２ビットエラーが検出された場合、信号を反転したバスが故障していることを判定できる。
【０１８９】
また、送信側のバスＩ／Ｆ１０４ａでは、反転ゲート１６２ａからの出力信号を基にエラー検出回路１４０がエラー検出を行うことで、反転ゲート１６２ａより前におけるバスの故障を診断することもできる。なお、反転ゲート１６２ａより前のバスの故障診断を目的とする場合には、バス制御パケット内の“Ｒ”は“０”、“１”のどちらでもよい。
【０１９０】
ただし、上記の第２の動作例および第３の動作例では、信号を反転したバス以外のバスに故障が発生していた場合には２ビットエラーが検出されるため、通常運用時以外の期間においてバスの故障診断動作が実行されることが望ましい。
【０１９１】
なお、上記の第２の動作例および第３の動作例では、１つのバスのみ信号を反転したが、本実施の形態では、例えば、任意の複数のバスの信号を反転することも可能である。
また、他の動作例として、送信側と受信側の両方において、同じビットのバス信号を反転することで、反転したバスが故障しているか否かを受信側のエラー検出処理によって判定することもできる。ただし、この場合でも、受信側では２ビット以上のエラーが検出され得るため、通常運用時以外の期間においてバスの故障診断動作が実行されることが望ましい。
【０１９２】
このように、本実施の形態では、第２の実施の形態と同様のバス故障診断動作だけでなく、信号を反転するバスや信号を反転させる位置を任意に指定して様々なパターンのバス故障診断動作を実行することが可能である。
【０１９３】
なお、以上で説明した第２，第３の実施の形態では、情報処理装置間を接続するバスの故障診断動作を行う場合の例について説明した。しかし、上記各実施の形態における送信側のバスＩ／Ｆと受信側のバスＩ／Ｆとを１つの情報処理装置の内部に設け、この情報処理装置内のデバイス間を接続するバスの故障診断動作を行うようにしてもよい。
【０１９４】
以上の各実施の形態に関し、さらに以下の付記を開示する。
（付記１）  送信データと前記送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバスを通じて受信側デバイスに接続し、前記パラレルバスのすべてのバスに送信する信号を反転する信号反転部、
を有することを特徴とする情報処理装置。
【０１９５】
（付記２）  前記パラレルバスのすべてのバスからの受信信号を反転するように前記受信側デバイスに指示する反転指示情報と、前記反転指示情報に基づくエラー訂正符号とを前記パラレルバスに出力する指示情報出力部をさらに有し、
前記信号反転部は、前記反転指示情報が前記パラレルバスに出力された後に、前記パラレルバスのすべてのバスに送信される信号を反転する、
ことを特徴とする付記１記載の情報処理装置。
【０１９６】
（付記３）  前記指示情報出力部は、前記反転指示情報と当該反転指示情報に基づくエラー訂正符号とを生成し、生成した前記反転指示情報と当該判定指示情報に基づくエラー訂正符号とを前記信号反転部を通じて前記パラレルバスに送信し、
さらに、
前記信号反転部に入力する信号から前記反転指示情報を検出すると、検出した前記反転指示情報が前記信号反転部から出力された後に、前記信号反転部に、前記パラレルバスのすべてのバスに送信する信号を反転する動作を開始させる反転動作制御部を有することを特徴とする付記２記載の情報処理装置。
【０１９７】
（付記４）  前記指示情報出力部は、前記パラレルバスのすべてのバスに送信する信号を反転しないように前記受信側デバイスに指示する非反転指示情報と、前記非反転指示情報に基づくエラー訂正符号とを生成して、生成した前記非反転指示情報と当該非反転指示情報に基づくエラー訂正符号とを前記信号反転部を通じて前記パラレルバスに送信し、
前記反転動作制御部は、入力信号から前記非反転指示情報を検出すると、当該非反転指示情報が前記信号反転部から出力された後に、前記パラレルバスのすべてのバスに送信する信号を反転しないように前記信号反転部を制御する、
ことを特徴とする付記３記載の情報処理装置。
【０１９８】
（付記５）  前記指示情報出力部は、信号を反転するバスを指定するバス指定情報と、前記バス指定情報によって指定されたバスの信号を反転する動作を送信側と受信側のどちらで実行させるかを示す実行対象指定情報とを含む部分反転指示情報と、前記部分反転指示情報に基づくエラー訂正符号とを生成して、生成した前記部分反転指示情報と当該部分反転指示情報に基づくエラー訂正符号とを前記信号反転部を通じて前記パラレルバスに送信し、
前記反転動作制御部は、入力信号から前記部分反転指示情報を検出すると、当該部分反転指示情報に含まれる前記実行対象指定情報が送信側を示していた場合に、当該部分反転指示情報が前記信号反転部から出力された後に、当該部分反転指示情報に含まれる前記バス指定情報によって指定されたバスに送信する信号を反転するように前記信号反転部を制御する、
ことを特徴とする付記３または４記載の情報処理装置。
【０１９９】
（付記６）  送信データと前記送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバスに接続し、前記パラレルバスのすべてのバスから受信した信号を反転する信号反転部と、
前記信号反転部から出力された信号を基にエラー検出処理とエラー訂正処理とを実行するエラー検出部と、
を有することを特徴とする情報処理装置。
【０２００】
（付記７）  前記パラレルバスのすべてのバスから受信した信号を反転するように指示する反転指示情報を、前記パラレルバスから前記信号反転部を通じて受信すると、当該反転指示情報が前記信号反転部から出力された後に、すべてのバスから受信した信号を反転する動作を前記信号反転部に開始させる反転動作制御部をさらに有することを特徴とする付記６記載の情報処理装置。
【０２０１】
（付記８）  前記反転動作制御部は、前記パラレルバスのすべてのバスから受信した信号を反転しないように指示する非反転指示情報を、前記パラレルバスから前記信号反転部を通じて受信すると、当該非反転指示情報が前記信号反転部から出力された後に、前記パラレルバスのすべてのバスから受信した信号を反転しないように前記信号反転部を制御することを特徴とする付記７記載の情報処理装置。
【０２０２】
（付記９）  前記反転動作制御部は、前記パラレルバスのバスのうち指定したバスから受信した信号を反転するように指示する部分反転指示情報を、前記パラレルバスから前記信号反転部を通じて受信すると、当該部分反転指示情報が前記信号反転部から出力された後に、当該部分反転指示情報によって指定されたバスから受信した信号を反転するように前記信号反転部を制御することを特徴とする付記７または８記載の情報処理装置。
【０２０３】
（付記１０）  前記部分反転指示情報は、指定したバスから受信した信号を反転する動作を送信側と受信側のどちらで実行させるかを示す実行対象指示情報を含み、
前記反転動作制御部は、前記部分反転指示情報を受信したとき、当該部分反転指示情報に含まれる前記部分反転指示情報によって受信側が指定されていた場合に、当該部分反転指示情報によって指定されたバスから受信した信号を反転するように前記信号反転部を制御する、
ことを特徴とする付記９記載の情報処理装置。
【０２０４】
（付記１１）  送信データと前記送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバスを通じて受信側デバイスに接続した送信側デバイスが、前記パラレルバスのすべてのバスに送信する信号を反転する、
ことを特徴とする情報送信方法。
【０２０５】
（付記１２）  前記送信側デバイスは、
前記パラレルバスのすべてのバスから受信した信号を反転するように前記受信側デバイスに指示する反転指示情報と、前記反転指示情報に基づくエラー訂正符号とを前記パラレルバスに出力し、
前記反転指示情報が前記パラレルバスに出力された後に、前記パラレルバスのすべてのバスに送信される信号を反転する、
ことを特徴とする付記１１記載の情報処理装置。
【０２０６】
（付記１３）  送信データと前記送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバスに接続した受信側デバイスが、
前記パラレルバスのすべてのバスから受信した信号を、前記受信側デバイスが備える信号反転部によって反転し、
前記信号反転部から出力された信号を基にエラー検出処理とエラー訂正処理とを実行する、
ことを特徴とする情報受信方法。
【０２０７】
（付記１４）  前記受信側デバイスは、
前記パラレルバスのすべてのバスから受信した信号を反転するように指示する反転指示情報を、前記パラレルバスから受信し、
受信した前記反転指示情報が前記信号反転部から出力された後に、すべてのバスから受信した信号を反転する動作を前記信号反転部に開始させる、
ことを特徴とする付記１３記載の情報受信方法。
【符号の説明】
【０２０８】
１０  送信側デバイス
１１，２１  信号反転部
１２  指示情報出力部
１３，２３  反転動作制御部
２０  受信側デバイス
２２  エラー検出部
３０  パラレルバス
【図１】
2011159119.tif 000003
【図２】
2011159119.tif 000004
【図３】
2011159119.tif 000005
【図４】
2011159119.tif 000006
【図５】
2011159119.tif 000007
【図６】
2011159119.tif 000008
【図７】
2011159119.tif 000009
【図８】
2011159119.tif 000010
【図９】
2011159119.tif 000011
【図１０】
2011159119.tif 000012
【図１１】
2011159119.tif 000013
【図１２】
2011159119.tif 000014
【図１３】
2011159119.tif 000015
【図１４】
2011159119.tif 000016
【図１５】
2011159119.tif 000017
【図１６】
2011159119.tif 000018
【図１７】
2011159119.tif 000019
【図１８】
2011159119.tif 000020
【図１９】
2011159119.tif 000021
【図２０】
2011159119.tif 000022
【図２１】
2011159119.tif 000023