情報処理装置、情報送信方法および情報受信方法
【課題】通常の情報伝送動作中にバスの故障診断を実行できるようにする。
【解決手段】送信側デバイス10と受信側デバイス20とは、送信データとこの送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバス30を通じて接続されている。送信側デバイス10は、パラレルバス30に送信する信号を反転する信号反転部11を有する。受信側デバイス20は、パラレルバス30からの受信信号を反転する信号反転部21と、信号反転部21から出力された信号を基にエラー検出処理とエラー訂正処理とを実行するエラー検出部22とを有する。信号反転部11によってすべてのバスに送信する信号が反転され、信号反転部21によってすべてのバスから受信した信号が反転されることで、エラー検出部22においてパラレルバス30の故障診断が行われる。
【解決手段】送信側デバイス10と受信側デバイス20とは、送信データとこの送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバス30を通じて接続されている。送信側デバイス10は、パラレルバス30に送信する信号を反転する信号反転部11を有する。受信側デバイス20は、パラレルバス30からの受信信号を反転する信号反転部21と、信号反転部21から出力された信号を基にエラー検出処理とエラー訂正処理とを実行するエラー検出部22とを有する。信号反転部11によってすべてのバスに送信する信号が反転され、信号反転部21によってすべてのバスから受信した信号が反転されることで、エラー検出部22においてパラレルバス30の故障診断が行われる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報送信方法および情報受信方法に関する。
【背景技術】
【0002】
高い信頼性の要求されるサーバなどの情報処理装置では、他の情報処理装置との間の接続バスや情報処理装置内のデバイス間の接続バスにおいて、ECC(Error-Correcting Code)を用いたデータ転送を行うものがある。ECCを用いてデータが転送されるバスを“ECCバス”と呼ぶ。ECCバスでは、データの受信側において、1ビットのエラー検出および訂正と、2ビットのエラー検出とを行うことが可能になる。
【0003】
ECCバスにおける故障を診断する方法としては、例えば、専用のプログラムまたはハードウェアにより送信データを明示的に変化させる機能を設け、受信側でデータを正常に受信できるか否かを確認する方法がある。この種の方法としては、例えば次の2通りの方法があり、1つは、故障診断の期間中にビットを変化させたパターンを転送し、受信側で期待値と一致するかを検証する方法である。ただし、この方法では、故障診断の期間中はECCによるエラー検出を停止させる必要がある。また、もう1つの方法は、ビットの値を少しずつ(例えば1ビットずつ)変化させながら送信データを送信し、受信側で正常に受信できるか否かを検証する方法である。この方法では、ECCパターンが変化するような送信データのパターンをあらかじめ作成する必要がある。
【0004】
また、ECCバスにおける故障を診断する別の方法としては、バスのデータ部やECC部における信号を1ビットのみ反転して送信し、受信側でエラーが検出されることを確認するという方法がある。この方法が適用されたシステム構成例を次の図21に示す。
【0005】
図21は、バスの故障診断機能を備えた情報処理装置の構成例を示す図である。
図21では、情報処理装置間をECCバスによって接続した場合の構成例を示している。信号送信側の情報処理装置である送信側装置910は、バス調停回路911、反転制御回路912、バス反転回路913、出力回路914およびエラー検出回路915を備えている。
【0006】
バス調停回路911には、内部回路からの複数のバスが接続されており、バス調停回路911は、これらのバスのうち1つから送信信号を選択し、バス反転回路913に出力する。反転制御回路912は、信号を反転するビットの位置をバス反転回路913に対して指定する。バス反転回路913は、バス調停回路911から入力された送信信号のビットのうち、反転制御回路912から指定されたビット位置のバスの信号を反転する。出力回路914は、バス反転回路913から出力された信号を、ECCバスを通じて受信側装置920に送信する。エラー検出回路915は、出力回路914に入力された信号からエラーを検出する。
【0007】
一方、信号受信側の情報処理装置である受信側装置920は、反転制御回路921、バス反転回路922、受信回路923およびエラー検出回路924を備えている。
反転制御回路921は、信号を反転するビットの位置をバス反転回路922に対して指定する。バス反転回路922は、送信側装置910から送信された信号のビットのうち、反転制御回路921から指定されたビット位置のバスの信号を反転する。受信回路923は、バス反転回路922から出力された信号を、受信側装置920の内部回路に出力する。エラー検出回路924は、受信回路923に入力された信号から、エラーの検出および訂正を行う。
【0008】
ここで、送信側装置910と受信側装置920とを接続するECCバスの故障診断を行うには、送信側装置910のバス反転回路913または受信側装置920のバス反転回路922のいずれか一方で、信号のうち1ビットが反転される。このとき、ECCバスに異常がなければ、受信側装置920のエラー検出回路924は1ビットエラーを検出する。しかし、ECCバスに異常がある場合には、エラー検出回路924は、エラーを検出しないか、あるいは、2ビットエラーを検出する。
【0009】
エラー検出回路924によって2ビットエラーが検出される場合とは、信号を反転したビットとは異なるビットに対応するバスに故障が発生している場合である。そして、このような場合には、2ビットエラーが検出されるので、エラー検出回路924は受信信号を訂正できない。すなわち、上記の故障診断方法では、訂正不能エラーが発生することがあるため、システムの通常運用中には故障診断を実行できない。
【0010】
なお、ビット反転手順を含む誤り訂正方法として、受信データの1ビットに誤りが発生した場合に対応する複数のシンドロームデータを記憶しておき、実際の受信データの1ビットを反転したデータと、記憶していたシンドロームに基づくデータとを比較して3ビットの誤り訂正位置を特定するものがあった。
【0011】
また、ビット反転手順を含むデータ伝送テスト方法としては、BIST(Built In Self Test)回路において、複数のテストデータを選択的に反転させ、これらのデータを論理的に結合してテストデータ値シーケンスを出力し、期待値に対応するか否かを判定するものがあった。
【0012】
さらに、デュアルエンコーディングを用いてデータを送信するシステムにおいて、前のデータから値が変化するビットが所定の数より多い場合にデータを反転して送信することで、グランドバウンスの発生を抑制するようにしたものがあった。
【先行技術文献】
【特許文献】
【0013】
【特許文献1】特開2002−26741号公報
【特許文献2】特表2008−541059号公報
【特許文献3】特表2007−526574号公報
【発明の概要】
【発明が解決しようとする課題】
【0014】
前述したECCバスの故障診断方法では、故障診断用のデータをあらかじめ作成して送信する必要があることや、訂正不能な2ビットエラーが発生する可能性があることから、いずれもシステムの通常運用中には故障診断を実行できないという問題があった。
【0015】
本発明はこのような点に鑑みてなされたものであり、通常の情報伝送動作中にバスの故障診断を実行できるようにした情報処理装置、情報送信方法および情報受信方法を提供することを目的とする。
【課題を解決するための手段】
【0016】
上記目的を達成するために、次のような信号反転部を有する情報処理装置が提供される。信号反転部は、送信データと前記送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバスを通じて受信側デバイスに接続し、前記パラレルバスのすべてのバスに送信する信号を反転する。
【0017】
また、上記目的を達成するために、次のような情報処理装置が提供される。この情報処理装置は、送信データと前記送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバスに接続し、前記パラレルバスのすべてのバスから受信した信号を反転する信号反転部と、前記信号反転部から出力された信号を基にエラー検出処理とエラー訂正処理とを実行するエラー検出部と、を有する。
【発明の効果】
【0018】
上記の情報処理装置によれば、通常の情報伝送動作中にパラレルバスの故障診断を実行できる。
【図面の簡単な説明】
【0019】
【図1】第1の実施の形態に係る情報伝送システムの構成を示す図である。
【図2】第2の実施の形態に係る情報伝送システムの構成を示す図である。
【図3】接続バスを通じて伝送されるパケットの構成例を示す図である。
【図4】バス制御パケットの構成例を示す図である。
【図5】送信側のバスI/Fの内部構成を示す図である。
【図6】パケット制御レジスタに設定される情報の例を示す図である。
【図7】パケット解析回路の動作手順を示すフローチャートである。
【図8】送信側のバスI/Fの動作例を示すタイムチャートである。
【図9】受信側のバスI/Fの内部構成例を示す図である。
【図10】パケット解析回路の動作手順を示すフローチャートである。
【図11】受信側のバスI/Fの動作例を示すタイムチャートである。
【図12】第3の実施の形態に係る情報伝送システムの構成を示す図である。
【図13】第3の実施の形態で使用されるバス制御パケットの構成例を示す図である。
【図14】送信側のバスI/Fの内部構成を示す図である。
【図15】パケット制御レジスタに設定される情報の例を示す図である。
【図16】パケット解析回路の動作手順を示すフローチャートである。
【図17】送信側のバスI/Fの動作例を示すタイムチャートである。
【図18】受信側のバスI/Fの内部構成例を示す図である。
【図19】パケット解析回路の動作手順を示すフローチャートである。
【図20】受信側のバスI/Fの動作例を示すタイムチャートである。
【図21】バスの故障診断機能を備えた情報処理装置の構成例を示す図である。
【発明を実施するための形態】
【0020】
以下、実施の形態を図面を参照して詳細に説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係る情報伝送システムの構成を示す図である。
【0021】
図1に示す情報伝送システムでは、送信側デバイス10と受信側デバイス20とが、パラレルバス30を通じて接続されている。送信側デバイス10および受信側デバイス20は、例えば、情報処理装置内で各種のデバイス間を接続するバスインタフェースである。また、情報処理装置間がパラレルバス30によって接続される場合には、送信側デバイス10および受信側デバイス20は、送信側、受信側の各情報処理装置に設けられたバスインタフェース回路であってもよい。
【0022】
パラレルバス30は、送信データと、この送信データを基に生成されたエラー訂正符号とをパラレル送信する。従って、パラレルバス30の受信側では、受信信号のエラー検出処理およびエラー訂正処理を実行できる。また、本実施の形態のパラレルバス30では、2ビットまでのエラー検出処理と、1ビットのエラー訂正処理とが実行できるものとする。
【0023】
送信側デバイス10は、パラレルバス30のすべてのバスに送信する信号を反転する信号反転部11を備えている。一方、受信側デバイス20は、パラレルバス30のすべてのバスから受信した信号を反転する信号反転部21と、信号反転部21から出力された信号を基にエラー検出処理およびエラー訂正処理を実行するエラー検出部22とを備えている。
【0024】
このような構成において、送信側の信号反転部11により、すべてのバスへの送信信号が反転され、受信側の信号反転部21により、すべてのバスから受信した信号が再度反転されることで、エラー検出部22は、パラレルバス30の故障診断を行うことができる。すなわち、この状態では、パラレルバス30のうち1つのバスにおいて故障が発生していた場合には、エラー検出部22は、故障したバスからの受信信号に基づいて、1ビットエラーを検出する。
【0025】
例えば、元の送信信号がローレベルであるとき、その送信信号は信号反転部11によって反転されてハイレベルとされ、パラレルバス30に送信される。このとき、送信されたバスが故障している場合には、受信側の信号反転部21は、故障したバスからローレベルの信号を受信し、受信信号を反転したハイレベルの信号をエラー検出部22に出力する。エラー検出部22は、受信した信号をエラーと判定する。このような動作により、例えば、故障したバスが信号送信に使用されていないなど、そのバスに対する元の信号がローレベルのまま変化しない場合でも、バスの故障を検出できるようになる。
【0026】
また、このようなバスの故障診断動作では、故障したバスが1つであれば、故障したバスからの受信信号のみが誤った値となり得るため、エラー検出部22では2ビット以上のエラーが検出されることはない。エラー検出部22は、検出したエラーが1ビットエラーであれば、エラーを訂正することができる。このため、故障したバスが1つであれば、故障診断動作を実行中でも、送信側デバイス10から受信側デバイス20への情報伝送動作が停止されない。従って、このような故障診断動作は、診断専用の期間に実行される必要はなく、通常の情報伝送動作の実行中に並行して実行することができる。
【0027】
ところで、送信側デバイス10は、さらに、指示情報出力部12と反転動作制御部13とを備えていてもよく、受信側デバイス20は、さらに、反転動作制御部23を備えていてもよい。なお、反転動作制御部23を備える場合、受信側デバイス20の信号反転部21は、バスからの受信信号を反転するか否かを切り替え可能であるものとする。
【0028】
指示情報出力部12は、パラレルバス30のすべてのバスからの受信信号を反転するように受信側デバイス20に指示する反転指示情報を生成し、パラレルバス30を通じて受信側デバイス20に送信する。このとき、指示情報出力部12は、反転指示情報に基づくエラー訂正符号も生成して、反転指示情報とともに受信側デバイス20に送信する。指示情報出力部12からの出力信号は、例えば、信号反転部11を通じてパラレルバス30に送信される。
【0029】
反転動作制御部13は、指示情報出力部12からの反転指示情報に基づいて、信号反転部11において信号を反転させるか否かを制御する。ここで、反転動作制御部13は、信号反転部11に入力される指示情報出力部12からの出力信号から反転指示情報を検出すると、信号反転部11に対して、すべてのバスへの送信信号を反転するように指示する。反転動作制御部13は、信号反転部11におけるこのような信号反転動作を、検出した反転指示情報が信号反転部11からパラレルバス30に出力された後に開始させる。
【0030】
一方、受信側デバイス20において、反転動作制御部23は、エラー検出部22から出力されたエラー訂正後の信号から反転指示情報を検出すると、信号反転部21に対して、すべてのバスからの受信信号を反転するように指示する。反転動作制御部23は、信号反転部21におけるこのような信号反転動作を、検出した反転指示情報が少なくとも信号反転部21から出力された後に開始させる。
【0031】
このように、パラレルバス30を通じて反転指示情報が伝送されることで、送信側デバイス10からの指示に応じて、受信側デバイス20での信号反転動作を開始させることができる。また、送信側デバイス10でも、反転動作制御部13の制御により、反転指示情報に応じて信号反転動作を開始させるようにすることで、反転指示情報に応じて前述のバスの故障検証動作を開始させることが可能になる。従って、任意のタイミングで、前述のバスの故障検証動作を開始できるようになる。
【0032】
なお、指示情報出力部12から、バスの信号を反転しないように指示する非反転指示情報を出力し、反転動作制御部13,23が非反転指示情報を検出すると、それぞれ信号反転部11,21に対して反転動作を終了させるようにしてもよい。このような非反転指示情報により、前述のバスの故障検証動作を終了させることが可能になる。
【0033】
次に、情報処理装置間を接続するパラレルバスの故障検証動作を実行可能なシステムの例について説明する。
〔第2の実施の形態〕
図2は、第2の実施の形態に係る情報伝送システムの構成を示す図である。
【0034】
図2に示す情報伝送システムは、情報処理装置100と情報処理装置200との間で、パラレルバスである接続バス300を通じてデータが送受信されるシステムである。情報処理装置100,200は、それぞれの内部のCPUによりプログラムが実行されることで動作するコンピュータである。接続バス300は、送信データと、この送信データに基づくECCとがパラレル転送されるECCバスである。
【0035】
情報処理装置100は、CPU(Central Processing Unit)101、RAM(Random Access Memory)102、HDD(Hard Disk Drive)103、バスインタフェース(I/F)104およびバスコントローラ105を備えている。
【0036】
CPU101は、HDD103などの記憶媒体に記憶された各種プログラムを実行することにより、この情報処理装置100全体を統括的に制御する。RAM102は、CPU101に実行させるプログラムの少なくとも一部や、このプログラムによる処理に必要な各種データを一時的に記憶する。HDD103は、CPU101により実行されるプログラムやその実行に必要な各種のデータなどを記憶する。
【0037】
バスI/F104は、接続バス300を通じて情報処理装置200などの外部装置との間でデータを送受信するインタフェース回路である。後述するように、バスI/F104には、接続バス300の故障診断機能を備えている。この故障診断機能には、接続バス300に送信する信号の全ビットを反転する機能や、接続バス300から受信した信号の全ビットを反転する機能、反転された受信信号のエラー検出およびエラー訂正を実行する機能などが含まれる。
【0038】
バスコントローラ105は、CPU101とRAM102、HDD103およびバスI/F104との間のデータ送受信動作を制御する。バスコントローラ105は、バスI/F104との間で、送信データとECCとがパラレル転送されるECCバスを通じてデータを送受信する。また、バスコントローラ105は、CPU101からバスI/F104に転送するデータを基にECCを算出する機能や、バスI/F204からの受信信号に基づくエラー検出およびエラー訂正を行う機能も備えている。
【0039】
情報処理装置200は、情報処理装置100と同様のハードウェア構成を持つコンピュータである。情報処理装置200は、CPU201、RAM202、HDD203、バスインタフェース(I/F)204およびバスコントローラ205を備えている。そして、これらはそれぞれ、情報処理装置100におけるCPU101、RAM102、HDD103、バスI/F104およびバスコントローラ105に対応している。
【0040】
図3は、接続バスを通じて伝送されるパケットの構成例を示す図である。
図3において、左右方向に並列された情報は、1クロックサイクルで接続バス300上にパラレル送信される。すなわち、本実施の形態の例では、接続バス300は、“TAG”を伝送するバスと、“ECC”を伝送するバスと、その他のバスであるデータバスとを含む。
【0041】
“TAG”は、データバスに伝送される情報が有効か無効かを示す情報である。“TAG”の値が“00”または“11”の場合、データバスが無効であることを示す。“TAG”の値が“01”の場合、データバスが有効であり、データバスにおいてパケット構成情報が伝送されることを示す。“TAG”の値が“10”の場合、データバスが有効であり、データバスにおいて実データである“DATA”が伝送されることを示す。
【0042】
“ECC”は、“TAG”の値とデータバスに流れる値とを基に算出されたエラー訂正符号である。このエラー訂正符号は、2ビットのエラー検出と1ビットの誤り訂正とを可能にするものであり、例えばハミング符号とされる。
【0043】
データバスにおいては、パケットの先頭では、図3の上段に示すように、ヘッダ情報としてパケット構成情報が伝送され、図3の下段に示すように、パケット構成情報に続いて、実データである“DATA”が1または複数のクロックサイクル分だけ伝送される。すなわち、パケットは、パケット構成情報と、それに続く実データとを含む。図3では、“DATA”が1クロックサイクルで伝送される場合を例示している。パケット構成情報は、“CODE”“ID”“LNG”の各情報を含む。
【0044】
“CODE”は、パケットの属性を示す制御コードである。本実施の形態では、“CODE”の値が16進数で“FF”以外であるパケットを“一般パケット”と呼ぶ。また、後述するように、制御コードの値が“FF”であるパケットを“バス制御パケット”と呼ぶ。
【0045】
“ID”は、パケットの通し番号を示す。“LNG”は、パケットのデータ長を示し、本実施の形態ではクロックサイクル数で表される。なお、データバスにおける“CODE”“ID”“LNG”以外のバスは、オプション領域である“Reserve”とされる。
【0046】
図4は、バス制御パケットの構成例を示す図である。
バス制御パケットは、例えば、1クロックサイクルで伝送され、前述の“CODE”“ID”“LNG”を含み、“CODE”の値が16進数で“FF”とされるとともに、“Reserve”の領域の一部に“CTL”が格納されたものである。本実施の形態では、“CTL”は1ビットのバス反転情報であり、値が“1”のとき、後続のパケットの全ビットが反転されることを示し、“0”のとき、後続のパケットの全ビットが反転されないことを示す。
【0047】
図2に示したシステム構成において、バス制御パケットは、バスI/F104,204のうち送信側の回路において生成され、接続バス300に送出される。“CTL”の値を“1”としたバス制御パケットを送出した送信側のバスI/Fは、後続のパケットを接続バス300に送出する際に、パケット内の全ビットを反転して送出する。また、バス制御パケットが受信側のバスI/Fに送信されることで、受信側のバスI/Fに対して、後続のパケットの全ビットが反転されていることが通知される。通知を受けた受信側のバスI/Fは、後続の受信パケットの全ビットを反転し、反転した信号を基にエラー検出を行う。バス制御パケットが送出された後の状態では、情報処理装置100と情報処理装置200との間のデータ伝送が実行されるとともに、受信側のバスI/Fにおいてバスの故障診断が実行される。
【0048】
なお、本実施の形態では、例として、バス制御パケットは1クロックサイクルで伝送される。この場合、バス制御パケット内の“LNG”の値は“1”とされる。しかしながら、バス制御パケットは、複数のクロックサイクルで伝送されてもよい。この場合、バス制御パケット内の“LNG”には、バス制御パケットが伝送されるクロックサイクル数が設定される。
【0049】
次に、情報処理装置100から情報処理装置200に対して接続バス300を通じてデータを送信する場合を想定し、このデータ送信の際に実行されるバスの故障診断処理のためにバスI/F104,204がそれぞれ備える機能について説明する。
【0050】
図5は、送信側のバスI/Fの内部構成を示す図である。
情報処理装置100内のバスI/F104は、パケット生成回路110、バス調停回路120、出力回路130、エラー検出回路140、パケット解析回路150およびバス反転回路160を備えている。
【0051】
パケット生成回路110は、前述のバス制御パケットを生成して、バス調停回路120に出力する。パケット生成回路110は、レジスタ設定部111、パケット制御レジスタ112、フォーマット変換部113およびECC生成部114を備えている。
【0052】
ここで、図6は、パケット制御レジスタに設定される情報の例を示す図である。
パケット制御レジスタ112には、例えば、それぞれ1ビットの情報である“V”と“CTL”とが設定される。“V”は、バス制御パケットを生成するか否かを指示するための情報であり、バス制御パケットを生成しない状態では“0”が設定され、バス制御パケットを生成する場合に“1”が設定される。“CTL”は、接続バス300の全ビットを反転させるか否かを指示する情報であり、全ビットを反転させる場合には“1”が設定され、全ビットを反転させない場合には“0”が設定される。パケット制御レジスタ112内の“CTL”の値は、出力されるバス制御パケットの“CTL”に設定される。
【0053】
以下、図5に戻って説明する。
レジスタ設定部111は、例えば、管理者による情報処理装置100に対する入力操作に応じて、パケット制御レジスタ112に対して値を設定する。バス制御パケットが生成される場合、レジスタ設定部111は、パケット制御レジスタ112の“V”に“1”を設定するとともに、“CTL”に“0”または“1”を設定する。なお、レジスタ設定部111は、例えば、接続バス300または他の通信線を通じて情報処理装置100に接続された他の情報処理装置からの要求に応じて、パケット制御レジスタ112に対して値を設定してもよい。
【0054】
フォーマット変換部113は、パケット制御レジスタ112の“V”に“1”が設定されると、バス制御パケットに設定すべき値を用意して、バス制御パケットを生成し、バス調停回路120に対してバス制御パケットの送信を要求する。フォーマット変換部113は、生成するバス制御パケットの“TAG”に“01”を設定するとともに、バス制御パケットの“CTL”にパケット制御レジスタ112の“CTL”の値を設定する。さらに、“TAG”の値とデータバスに伝送する値とをECC生成部114に通知し、エラー訂正符号の生成を要求する。
【0055】
ECC生成部114は、フォーマット変換部113から通知された値を基にエラー訂正符号を算出し、フォーマット変換部113に返信する。フォーマット変換部113は、ECC生成部114から返信されたエラー訂正符号をバス制御パケットの“ECC”に設定する。フォーマット変換部113は、バス調停回路120から送信の受付信号を受信すると、バス制御パケットをバス調停回路120に送信するとともに、パケット制御レジスタ112の“V”を“0”に更新する。
【0056】
バス調停回路120は、入力側に接続された複数のデバイスからパケットを受け付け、出力回路130に送信する。本実施の形態では、バス調停回路120は、バスコントローラ105から送信を要求された通常パケットと、パケット生成回路110から送信を要求されたバス制御パケットとを、選択的に出力回路130に出力する。
【0057】
出力回路130は、出力レジスタ131を備えており、バス調停回路120から出力された信号を出力レジスタ131に一旦保持した後、パケット解析回路150およびバス反転回路160に出力する。また、出力回路130に入力された信号はエラー検出回路140に転送される。
【0058】
エラー検出回路140は、出力回路130から入力された信号の値を基に2ビットまでのエラー検出処理を行う。エラー検出回路140は、1ビットエラーを検出した場合には、エラー訂正処理を行い、訂正後のデータを出力回路130に返信する。エラー訂正後のデータは、出力レジスタ131にセットされて出力される。また、エラー検出回路140は、2ビットエラーを検出した場合には、例えば、情報処理装置100のCPU101に対して訂正不能エラーの発生を通知し、バスコントローラ105とバスI/F104との間の通信を停止させる。
【0059】
パケット解析回路150は、出力回路130から出力されたパケットの内容に基づいて、バスの反転が指示されたか否かを判定する。パケット解析回路150は、パケットの内容を解析するフォーマット解析部151を備えている。パケット解析回路150は、出力回路130からバス制御パケットを受信すると、受信したパケット内の“CTL”の値を、バス反転信号としてバス反転回路160に出力する。
【0060】
バス反転回路160は、パケット解析回路150からのバス反転信号に基づき、必要に応じて、出力回路130から出力される出力信号の全ビットの極性を反転する。バス反転回路160は、バス反転情報レジスタ161と反転ゲート162とを備えている。
【0061】
バス反転情報レジスタ161は、パケット解析回路150のフォーマット解析部151から出力されたバス反転信号の値を保持する。反転ゲート162は、出力回路130から各バスに出力された信号とバス反転情報レジスタ161に保持された値とのEOR(排他的論理和)をとるゲート回路である。反転ゲート162は、バス反転情報レジスタ161の値が“0”のとき、出力回路130からの出力信号をそのまま接続バス300に送出する。一方、バス反転情報レジスタ161の値が“1”のとき、出力回路130からの全バスについての出力信号を反転して、接続バス300に送出する。
【0062】
なお、以上の図5に示したバスI/F104の機能は、情報処理装置200のバスI/F204も備えていてもよい。
図7は、パケット解析回路の動作手順を示すフローチャートである。
【0063】
[ステップS11]パケット解析回路150のフォーマット解析部151は、出力回路130から出力されるパケットを監視し、パケットを受信した場合に次のステップS12の処理を実行する。
【0064】
[ステップS12]フォーマット解析部151は、受信したパケットの内容を解析して、受信したパケットがバス制御パケットか否かを判定する。フォーマット解析部151は、受信したパケット内の“TAG”が“01”であり、なおかつ“CODE”の値が“FF”であった場合、バス制御パケットを受信したと判定し、ステップS13の処理を実行する。一方、受信したパケットがバス制御パケットではないと判定された場合には、ステップS11の処理が実行される。
【0065】
[ステップS13]フォーマット解析部151は、受信したバス制御パケットから“LNG”の値を抽出し、変数Lに設定する。なお、バス制御パケットが複数のクロックサイクルで受信される場合には、“LNG”の値は最初のクロックサイクルで受信されるものとする。
【0066】
[ステップS14]フォーマット解析部151は、バス制御パケットの末尾を受信したか否かを判定する。フォーマット解析部151は、変数Lから1を減算した値が0である場合に、バス制御パケットの末尾を受信したと判定して、ステップS16の処理を実行する。また、バス制御パケットの末尾が受信されていないと判定された場合には、ステップS15の処理が実行される。
【0067】
[ステップS15]フォーマット解析部151は、変数Lから1を減算する。そして、次のクロックサイクルにおいて、ステップS14の処理が再度実行される。
なお、バス制御パケットが1クロックサイクルで伝送される場合には、ステップS15の処理は実質的に実行されない。従って、制御パケットが1クロックサイクルで伝送される場合には、ステップS14の処理がスキップされて、ステップS13の次にステップS16が実行されてもよい。
【0068】
[ステップS16]フォーマット解析部151は、バス制御パケット内の“CTL”の値を、バス反転信号としてバス反転回路160に出力する。バス反転信号を受けたバス反転回路160は、バス反転情報レジスタ161の記憶値を、次のクロックサイクルでフォーマット解析部151から受けた“CTL”の値に更新する。この後、ステップS11の処理が実行され、次のパケットが監視される。
【0069】
以上の処理では、バス制御パケットがバス反転回路160の反転ゲート162から出力されるまでの間は、このバス制御パケットに基づくバス反転情報レジスタ161の更新は行われない。そして、バス制御パケットの次のパケットが反転ゲート162に入力される際に、バス反転情報レジスタ161の値が更新されて、反転ゲート162において反転動作を行うか否かが切り替えられる。
【0070】
図8は、送信側のバスI/Fの動作例を示すタイムチャートである。以下、図8を参照して、バス反転回路160の反転ゲート162が反転動作を行っていない状態から、反転動作を開始するまでのバスI/F104の動作について説明する。
【0071】
まず、レジスタ設定部111は、パケット制御レジスタ112の“V”に“1”を設定するとともに、“CTL”に“1”を設定する(タイミングT21)。フォーマット変換部113は、パケット制御レジスタ112の“V”が“1”になったことを検知すると、バス制御パケットを生成して、バス調停回路120に対してバス制御パケットの送信を要求する。このとき、生成されたバス制御パケットの“CTL”には、パケット制御レジスタ112の“CTL”と同じ“1”が設定される。
【0072】
バス調停回路120は、フォーマット変換部113に対して送信の受付信号を送信するとともに、フォーマット変換部113から出力されたバス制御パケットを、出力回路130の出力レジスタ131にセットする(タイミングT22)。このとき、受付信号を受信したフォーマット変換部113は、パケット制御レジスタ112の“V”の値を“0”に更新する。なお、ここでは、バス制御パケットは1クロックサイクルで伝送されるものとする。
【0073】
なお、図8の例では、フォーマット変換部113はタイミングT22において、パケット制御レジスタ112の“V”とともに“CTL”の値も“0”に更新する。ただし、“CTL”の値は、“V”が“1”とされるタイミングで所望の値に更新されるので、タイミングT22で“0”とされなくてもよい。
【0074】
出力レジスタ131にセットされたバス制御パケットは、パケット解析回路150およびバス反転回路160に出力される。バス反転回路160のバス反転情報レジスタ161に記憶された値は“0”であることから、反転ゲート162は、出力レジスタ131から出力されたバス制御パケットをそのまま接続バス300に送出する。
【0075】
パケット解析回路150のフォーマット解析部151は、“CTL”に“1”が設定されたバス制御パケットを受信すると、図7に示した処理に従い、バス反転回路160にバス反転情報の値を“1”に更新するよう指示する。これにより、バス反転情報レジスタ161の記憶値が、次のクロックサイクルにおいて“1”に更新される(タイミングT23)。このタイミング以降、反転ゲート162は、出力レジスタ131から出力される信号の全ビットを反転して、接続バス300に送出する。
【0076】
なお、反転ゲート162での反転動作を終了させる際には、次のような動作が実行される。まず、レジスタ設定部111は、パケット制御レジスタ112の“V”に“1”を設定するとともに、“CTL”に“0”を設定する。フォーマット変換部113は、パケット制御レジスタ112の“V”が“1”になったことを検知すると、“CTL”に“0”を設定したバス制御パケットを生成して、バス調停回路120に対してバス制御パケットの送信を要求する。
【0077】
バス調停回路120により、出力レジスタ131に“CTL”に“0”が設定されたバス制御パケットがセットされると、パケット解析回路150のフォーマット解析部151は、バス制御パケットが送出された次のクロックサイクルにおいて、バス反転情報レジスタ161の記憶値を、受信したバス制御パケットの“CTL”と同じ“0”に更新する。なお、“CTL”が“0”とされたバス制御パケットは、反転ゲート162により全ビットが反転された状態で、接続バス300に送出される。反転ゲート162は、バス反転情報レジスタ161の値が“0”に更新されると、それ以後に受信したパケットの全バスの信号を反転せずにそのまま接続バス300に送出する。
【0078】
次に、図9は、受信側のバスI/Fの内部構成例を示す図である。
情報処理装置200内のバスI/F204は、バス反転回路210、エラー検出回路220、受信回路230およびパケット解析回路240を備えている。
【0079】
バス反転回路210は、パケット解析回路240からのバス反転信号に基づき、必要に応じて、接続バス300を通じて受信した全バスについての信号の極性を反転する。バス反転回路210は、バス反転情報レジスタ211と反転ゲート212とを備えている。
【0080】
バス反転情報レジスタ211は、パケット解析回路240から出力されたバス反転信号の値を保持する。反転ゲート212は、接続バス300からの受信信号とバス反転情報レジスタ211に保持された値とのEORをとるゲート回路である。反転ゲート212は、バス反転情報レジスタ211の値が“0”のとき、接続バス300からの受信信号をそのまま受信回路230に出力する。一方、バス反転情報レジスタ211の値が“1”のとき、接続バス300からの全バスについての受信信号を反転して、受信回路230に出力する。なお、バス反転情報レジスタ211の値が“1”であることは、バスの故障診断処理中であることを示している。
【0081】
エラー検出回路220は、反転ゲート212から出力された信号、すなわち、“TAG”の信号、データバスの信号および“ECC”の信号を基に、2ビットまでのエラー検出処理を実行する。また、エラー検出回路220は、1ビットエラーを検出した場合には、エラー訂正処理を実行する。
【0082】
ここで、バスの故障診断処理中であるとき(例えば、バス反転情報レジスタ211の値が“1”であるとき)に、1ビットエラーを検出した場合、エラー検出回路220は、接続バス300のうち1つのバスに故障が発生したことを記述したエラー情報221を生成する。エラー情報221は、例えば、HDD203などの不揮発性記憶媒体に記憶される。なお、エラー情報221の内容は、例えば、情報処理装置200に接続された表示装置(図示せず)や、情報処理装置200に接続された他の装置を通じて、管理者に通知されてもよい。
【0083】
また、エラー検出回路220は、2ビットエラーを検出した場合には、例えば、情報処理装置200のCPU201に対して訂正不能エラーの発生を通知し、バスコントローラ205とバスI/F204との間の通信を停止させる。
【0084】
受信回路230は、受信レジスタ231を備えており、エラー検出回路220から出力された1クロックサイクル分の信号を受信レジスタ231に一旦保持した後、情報処理装置200内のバスコントローラ205に出力する。
【0085】
パケット解析回路240は、エラー検出回路220から出力されたパケットの内容に基づいて、バスの反転が指示されたか否かを判定する。パケット解析回路240は、パケットの内容を解析するフォーマット解析部241を備えている。パケット解析回路240は、エラー検出回路220からバス制御パケットを受信すると、受信パケット内の“CTL”の値を、バス反転信号としてバス反転回路210内のバス反転情報レジスタ211にセットする。
【0086】
なお、受信回路230は、例えば、バス反転回路210の前段に配置されてもよい。ただし、この場合でも、エラー検出回路220は、バス反転回路210からの出力信号を基にエラー検出および訂正の各処理を実行できる位置に配置される。
【0087】
また、以上の図9に示したバスI/F204の機能は、情報処理装置100のバスI/F104も備えていてもよい。
図10は、パケット解析回路の動作手順を示すフローチャートである。
【0088】
[ステップS31]パケット解析回路240のフォーマット解析部241は、エラー検出回路220から出力されるパケットを監視し、パケットを受信した場合に次のステップS32の処理を実行する。
【0089】
[ステップS32]フォーマット解析部241は、受信したパケットの内容を解析して、受信したパケットがバス制御パケットか否かを判定する。フォーマット解析部241は、受信したパケット内の“TAG”が“01”であり、なおかつ“CODE”の値が“FF”であった場合、バス制御パケットを受信したと判定し、ステップS33の処理を実行する。一方、受信したパケットがバス制御パケットではないと判定された場合には、ステップS31の処理が実行される。
【0090】
[ステップS33]フォーマット解析部241は、受信したバス制御パケットから“LNG”の値を抽出し、変数Lに設定する。なお、バス制御パケットが複数のクロックサイクルで受信される場合には、“LNG”の値は最初のクロックサイクルで受信されるものとする。
【0091】
[ステップS34]フォーマット解析部241は、バス制御パケットの末尾を受信したか否かを判定する。フォーマット解析部241は、変数Lから1を減算した値が0である場合に、バス制御パケットの末尾を受信したと判定して、ステップS36の処理を実行する。また、バス制御パケットの末尾が受信されていないと判定された場合には、ステップS35の処理が実行される。
【0092】
[ステップS35]フォーマット解析部241は、変数Lから1を減算する。そして、次のクロックサイクルにおいて、ステップS34の処理が再度実行される。
なお、送信側での処理と同様に、バス制御パケットが1クロックサイクルで伝送される場合には、ステップS35の処理は実行されない。従って、この場合には、ステップS33の次にステップS36が実行されてもよい。
【0093】
[ステップS36]フォーマット解析部241は、バス制御パケット内の“CTL”の値を、バス反転信号としてバス反転回路210に更新を指示する。更新指示を受けたバス反転回路210は、バス反転情報レジスタ211の記憶値を、次のクロックサイクルで“CTL”の値に更新する。この後、ステップS31の処理が実行され、次のパケットが待機される。
【0094】
以上の処理では、バス制御パケットがバス反転回路210の反転ゲート212を通過している間は、このバス制御パケットに基づくバス反転情報レジスタ211の更新は行われない。そして、バス制御パケットの次のパケットが反転ゲート212に入力される際に、バス反転情報レジスタ211の値が更新されて、反転ゲート212において反転動作を行うか否かが切り替えられる。
【0095】
図11は、受信側のバスI/Fの動作例を示すタイムチャートである。以下、図11を参照して、バス反転回路210の反転ゲート212が反転動作を行っていない状態から、反転動作を開始するまでのバスI/F204の動作について説明する。
【0096】
バス反転情報レジスタ211の記憶値が“0”の場合、反転ゲート212は接続バス300からの受信信号を反転せず、そのままエラー検出回路220に出力する。この状態において、接続バス300からバス制御パケットを受信すると、バス制御パケットは反転ゲート212およびエラー検出回路220を通過して、受信回路230およびパケット解析回路240に出力される(タイミングT41)。
【0097】
パケット解析回路240のフォーマット解析部241は、“CTL”に“1”が設定されたバス制御パケットを受信すると、図10に示した処理に従い、バス反転回路210にバス反転情報の値を“1”に更新するよう指示する。これにより、バス反転情報レジスタ211の記憶値が、次のクロックサイクルにおいて“1”に更新される(タイミングT42)。
【0098】
このタイミング以降、接続バス300からバス反転回路210に入力される信号は、すべてのバスについて元の信号の値を反転した信号となる。そして、反転ゲート212は、接続バス300から受信した全バスについての信号を反転して、エラー検出回路220を通じて受信回路230およびパケット解析回路240に出力する。従って、受信回路230およびパケット解析回路240は、接続バス300からの受信信号が元の信号を反転した信号となっていても、各ビットの値を元に戻した信号を受信できる。
【0099】
ここで、接続バス300に元の信号の値を反転した信号が伝送されている状態では、接続バス300のうち1つのバスに故障が発生した場合、エラー検出回路220により1ビットエラーが検出される。
【0100】
例えば、ある1つのバスにおいて、元の送信信号の値が“0”であるとき、バスには反転された値である“1”が伝送される。しかし、そのバスが故障していた場合、バスI/F204は故障したバスからの受信信号を“0”と認識し、エラー検出回路220には、受信した信号の値を反転した“1”が入力される。このため、エラー検出回路220は、故障したバスからの受信信号をエラーと判定する。このような判定処理では、例えば、故障したバスが信号送信に使用されていないなど、故障診断期間中にそのバスに対する元の信号が“0”のまま変化しない場合でも、バスの故障を検出できる。
【0101】
また、エラー検出回路220は、エラーの発生したバスの位置を特定してエラー情報221に記述するとともに、エラー訂正を行って、エラー訂正後の受信信号を受信回路230およびパケット解析回路240に出力する。このため、バスI/F204は、接続バス300のうち1つのバスに故障が発生した場合でも、エラー訂正を行うことで通常の信号伝送処理を続行可能であるとともに、故障の発生したバスの位置を特定することができる。
【0102】
なお、バスI/F204においては、反転動作を実行中の反転ゲート212から、“CTL”の値が“0”とされたバス制御パケットが出力されると、フォーマット解析部241の処理によりバス反転情報レジスタ211の記憶値が“0”に更新される。この更新処理に応じて、反転ゲート212は、全ビットが反転されたバス制御パケットの受信終了後に反転動作を停止して、それ以後の受信信号を反転することなく、そのままエラー検出回路220に出力する。
【0103】
以上説明した第2の実施の形態では、送信側のバスI/F104に、接続バス300のすべてのバスの信号を反転する機能を設けた。また、受信側のバスI/F204に、すべてのバスの受信信号を反転する機能と、反転後の受信信号を基にエラー検出および訂正を行う機能とを設けた。このような構成において、接続バス300に元の信号を反転した信号を伝送させることにより、通常の信号伝送処理を続行しながら、接続バス300の1つのバスにおける故障の発生を検出することができる。
【0104】
また、通常の信号伝送処理を続行しながらバスの故障診断動作を実行できることから、例えば、故障診断動作のための専用の送信データを生成する必要がなく、このような送信データを生成するためのハードウェアを送信側に搭載する必要もない。
【0105】
さらに、送信側のバスI/F104からバス制御パケットを送出することで、バスの故障診断動作を任意の期間だけ実行できるようになる。また、バス制御パケットを用いたことにより、例えば、受信側のバスI/F204に対して、バスの故障診断動作の開始を通知するための別の通信線などを設ける必要がなくなるので、システム構成の変更を小規模に留めることができる。
【0106】
〔第3の実施の形態〕
第3の実施の形態では、第2の実施の形態に係る情報伝送システムに、接続バス300に送出する信号のうち任意のバスの信号のみを反転させる機能を付加したシステムを例示する。
【0107】
図12は、第3の実施の形態に係る情報伝送システムの構成を示す図である。なお、図12では、図2に示した構成要素に対応する構成要素については同じ符号を付して示し、その説明を省略する。
【0108】
本実施の形態に係る情報伝送システムは、図12に示すように、情報処理装置100aと情報処理装置200aとの間で接続バス300を通じてデータ送受信されるシステムである。情報処理装置100a,200aの基本的なハードウェア構成は、ともに第2の実施の形態の情報処理装置100,200と同様である。
【0109】
ただし、情報処理装置100aを送信側としたとき、バスI/F104aは、接続バス300の全バスに送出する信号を反転する機能に加えて、任意のバスに送出する信号のみを反転する機能も備えている。また、受信側のバスI/F204aは、接続バス300のうち全バスから受信した信号を反転する機能に加えて、接続バス300を通じて受信した信号のうち任意のバスの信号のみを反転する機能も備えている。さらに、バスの信号反転動作を、受信側または送信側の一方でのみ行うことも可能になっている。
【0110】
接続バス300を通じて伝送される通常パケットの構成は、図3に示した通りである。また、本実施の形態でも、接続バス300における信号反転動作を制御するために、バス制御パケットが使用される。バス制御パケットは、バスI/F104a,204aのうち送信側の回路において生成され、接続バス300に送出される。
【0111】
図13は、第3の実施の形態で使用されるバス制御パケットの構成例を示す図である。
本実施の形態では、例として、2クロックサイクルで1つのバス制御パケットが伝送される。最初のクロックサイクルでは、図13の上段に示すように、データバスにおいて“CODE”、“ID”、“LNG”、“E”、“D”および“R”が伝送される。そして、次のクロックサイクルでは、図13の下段に示すように、データバスにおいて“CTL’”が伝送される。
【0112】
第2の実施の形態と同様に、“CODE”はパケットの属性を示し、“ID”はパケットの通し番号を示し、“LNG”はパケットの長さを示す。
“E”は、信号反転の対象とするバスの領域を指定する2ビットの情報である。“E”の値が“00”のとき、データバスを信号反転の領域とすることを示し、“01”のとき、“TAG”および“ECC”を伝送するバスを信号反転の領域とすることを示す。また、“1x”(xは0または1)のとき、すべてのバスを信号反転の領域とすることを示す。
【0113】
“D”は、送信側で信号反転動作を行うか否かを指定する1ビットの情報であり、値が“0”のとき、送信側で信号反転動作を行わないことを示し、“1”のとき、送信側で信号反転動作を行うことを示す。“R”は、受信側で信号反転動作を行うか否かを指定する1ビットの情報であり、値が“0”のとき、受信側で信号反転動作を行わないことを示し、“1”のとき、受信側で信号反転動作を行うことを示す。“D”および“R”を用いて、信号反転動作を実行させるか否かを受信側および送信側のそれぞれに対して個別に指示できるようにしたことで、様々なパターンのバス故障診断動作を実行できるようになる。
【0114】
“CTL’”は、信号を反転するバスの位置を指定する情報である。図13の例では、“CTL’”はデータバスの数と同じだけのビット数を有し、信号を反転するバスに対応するビットの値が“1”とされる。信号を反転するバスの位置は、“E”と“CTL’”との組み合わせにより指定される。“E”が“00”のとき、“CTL’”の各ビットがデータバスの各バスに対応付けられ、データバスの反転すべき位置に対応した“CTL’”のビットに“1”が設定される。“E”が“01”のとき、“CTL’”のうちの例えば下位領域の各ビットが“TAG”および“ECC”が伝送されるバスのそれぞれに対応付けられ、“TAG”および“ECC”の反転すべき位置に対応した“CTL’”のビットに“1”が設定される。“E”が“1x”のとき、“CTL’”の値は、例えば、全ビットが“0”あるいは全ビットが“1”の2つの値をとり、前者の場合、すべてのバスの信号を反転しないことが指示され、後者の場合、すべてのバスの信号を反転することが指示される。
【0115】
次に、情報処理装置100aから情報処理装置200aに対して接続バス300を通じてデータを送信する場合を想定し、このデータ送信の際に実行されるバスの故障診断処理のためにバスI/F104a,204aがそれぞれ備える機能について説明する。
【0116】
図14は、送信側のバスI/Fの内部構成を示す図である。なお、図14では、図5に示した構成要素に対応する構成要素については同じ符号を付して示している。
情報処理装置100a内のバスI/F104aは、パケット生成回路110a、バス調停回路120、出力回路130、エラー検出回路140、セレクタ141、パケット解析回路150aおよびバス反転回路160aを備えている。
【0117】
パケット生成回路110aは、図13に示すバス制御パケットを生成して、バス調停回路120に出力する。パケット生成回路110aは、レジスタ設定部111a、パケット制御レジスタ112a、フォーマット変換部113aおよびECC生成部114を備えている。
【0118】
ここで、図15は、パケット制御レジスタに設定される情報の例を示す図である。
パケット制御レジスタ112aには、 “V”、“CTL’”、“E”、“D”および“R”の各情報が設定される。“V”は、第2の実施の形態と同様に、バス制御パケットを生成するか否かを指示するための情報であり、バス制御パケットを生成しない状態では“0”が設定され、バス制御パケットを生成する場合に“1”が設定される。
【0119】
“CTL’”は、信号を反転するバスの位置を指定する情報である。“E”は、信号反転の対象とするバスの領域を指定する2ビットの情報である。“D”は、送信側で信号反転動作を行うか否かを指定する1ビットの情報である。“R”は、受信側で信号反転動作を行うか否かを指定する1ビットの情報である。バス制御パケットが出力される際には、パケット制御レジスタ112aの“CTL’”、“E”、“D”および“R”に設定された情報が、バス制御パケットの“CTL’”、“E”、“D”および“R”にそれぞれ設定される。
【0120】
以下、図14に戻って説明する。
レジスタ設定部111aは、例えば、管理者による情報処理装置100aに対する入力操作などに応じて、パケット制御レジスタ112aに対して値を設定する。バス制御パケットを生成する場合、レジスタ設定部111aは、パケット制御レジスタ112aの“V”に“1”を設定することで、バス制御パケットの送信を要求する。また、パケット制御レジスタ112aの“CTL’”、“E”、“D”および“R”のそれぞれに所望の値を設定することで、信号反転動作を実行させる装置とバスの位置とを指定する。
【0121】
フォーマット変換部113aは、パケット制御レジスタ112aの“V”に“1”が設定されると、バス制御パケットに設定すべき値を用意して、バス制御パケットを生成し、バス調停回路120に対してバス制御パケットの送信を要求する。フォーマット変換部113aは、バス制御パケットの2クロックサイクル分の“TAG”にそれぞれ“01”を設定する。これとともに、バス制御パケットの“CTL’”、“E”、“D”および“R”にパケット制御レジスタ112aの“CTL’”、“E”、“D”および“R”の値をそれぞれ設定する。さらに、各クロックサイクルの“TAG”の値とデータバスに伝送する値とをECC生成部114に通知し、エラー訂正符号の生成を要求する。
【0122】
ECC生成部114は、フォーマット変換部113aから通知された値を基にエラー訂正符号を算出し、フォーマット変換部113aに返信する。フォーマット変換部113aは、ECC生成部114から返信されたエラー訂正符号をバス制御パケットの“ECC”に設定する。フォーマット変換部113aは、バス調停回路120から送信の受付信号を受信すると、バス制御パケットを送信する。
【0123】
バス調停回路120は、バスコントローラ105から送信を要求された通常パケットと、パケット生成回路110aから送信を要求されたバス制御パケットとを、選択的に出力する。バス調停回路120からの出力信号は、セレクタ141、パケット解析回路150aおよびバス反転回路160aに出力される。
【0124】
パケット解析回路150aは、バス調停回路120から出力されたパケットの内容に基づいて、バス反転回路160aにおける信号反転動作を制御する。パケット解析回路150aは、パケットの内容を解析するフォーマット解析部151aと、バス制御パケットから抽出された情報を一時的に保持するコピーレジスタ152とを備えている。
【0125】
フォーマット解析部151aは、バス調停回路120からバス制御パケットを受信したとき、バス制御パケット内の“D”が“1”である場合には、“E”および“CTL’”の各値に基づいて、バス反転回路160aに対して、信号を反転するバスの位置を指定するバス反転信号を出力する。バス反転信号は、例えば、接続バス300のバスの数と同じビット数を有し、バス反転信号のそれぞれのビットが1つのバスに対応している。そして、信号反転動作を実行させるバスに対応するビットが“1”とされる。
【0126】
また、フォーマット解析部151aは、バス制御パケットの末尾を検出すると、パケット制御レジスタ112aの“V”を“0”に更新する。
コピーレジスタ152には、フォーマット解析部151aにより、バス制御パケットの前半部から抽出された“E”および“R”の各値がセットされる。コピーレジスタ152は、セットされた値を1クロックサイクルの間保持する。このコピーレジスタ152にセットされた値は、フォーマット解析部241aの処理において参照される。
【0127】
なお、パケット解析回路150aの詳細な動作手順については、後の図16において説明する。
バス反転回路160aは、パケット解析回路150aからのバス反転信号に基づき、バス調停回路120からの入力信号のうち指定されたバスの信号の極性を反転して出力する。バス反転回路160aは、バス反転情報レジスタ161aと反転ゲート162aとを備えている。
【0128】
バス反転情報レジスタ161aは、パケット解析回路150aからのバス反転信号の各ビットの値を保持する。そして、バス反転情報レジスタ161aの各ビットは、バス調停回路120から反転ゲート162aに入力されるバスのそれぞれに対応している。
【0129】
反転ゲート162aは、バス調停回路120からの各バスの信号と、バス反転情報レジスタ161aの各ビットの値とのEORをとるゲート回路である。反転ゲート162aは、バス反転情報レジスタ161aに“1”が設定されたビットに対応するバスからの入力信号の極性を反転して出力する。
【0130】
また、バス反転回路160aは、セレクタ141の入力チャネルの切り替えを制御する選択信号を出力する。この選択信号は、バス反転情報レジスタ161aの全ビットが“0”または全ビットが“1”の場合に“1”が出力される。
【0131】
出力回路130は、出力レジスタ131を備えており、バス反転回路160aの反転ゲート162aから出力された信号を出力レジスタ131に一旦保持した後、接続バス300に送出する。
【0132】
セレクタ141には、バス調停回路120からの出力信号と、バス反転回路160aの反転ゲート162aからの出力信号とが入力され、セレクタ141は、これらの入力信号を、エラー検出回路140に対して選択的に出力する。セレクタ141は、バス反転回路160aから選択信号“0”が入力された場合には、反転ゲート162aからの出力信号を選択し、選択信号“1”が入力されていた場合には、バス調停回路120からの出力信号を選択する。
【0133】
この切り替え動作を行うことにより、バス反転回路160aの反転ゲート162aで全バスの信号の反転/非反転が切り替えられる状態では、バス調停回路120からの出力信号がエラー検出回路140に入力される。この状態では、反転ゲート162aで反転される前の状態のパケットを基にエラー検出が実行されるようになる。
【0134】
一方、反転ゲート162aにおいて一部のバスの信号の反転/非反転が切り替えられる状態では、反転ゲート162aからの出力信号がエラー検出回路140に入力される。この状態では、例えば、反転ゲート162aにおいて所望のバスの信号を反転させてエラー検出回路140にパケットを入力し、反転ゲート162aより前のバスにおける故障の有無を検証する動作などを実現できる。
【0135】
エラー検出回路140は、セレクタ141により選択された入力信号の値を基に2ビットまでのエラー検出処理を行う。エラー検出回路140は、エラーが検出された場合、例えば、情報処理装置100aのCPU101に対してエラーの発生を通知し、バスコントローラ105とバスI/F104aとの間の通信を停止させる。
【0136】
また、エラー検出回路140は、1ビットエラーを検出した場合には、エラー訂正処理を行ってもよい。バス調停回路120からの出力信号を基にエラー訂正処理を行った場合には、エラー訂正後の信号をパケット解析回路150aおよびバス反転回路160aに出力する。また、バス反転回路160aからの出力信号を基にエラー訂正処理を行った場合には、エラー訂正後の信号を出力回路130の出力レジスタ131に設定する。
【0137】
なお、以上の図14に示したバスI/F104aの機能は、情報処理装置200aのバスI/F204aも備えていてもよい。
図16は、パケット解析回路の動作手順を示すフローチャートである。
【0138】
[ステップS51]パケット解析回路150aのフォーマット解析部151aは、バス調停回路120から出力されるパケットを監視し、パケットを受信した場合に次のステップS52の処理を実行する。
【0139】
[ステップS52]フォーマット解析部151aは、受信したパケットの内容を解析して、受信したパケットがバス制御パケットか否かを判定する。フォーマット解析部151aは、受信したパケット内の“TAG”が“01”であり、なおかつ“CODE”の値が“FF”であった場合、バス制御パケットの前半部を受信したと判定し、ステップS53の処理を実行する。一方、受信したパケットがバス制御パケットではないと判定された場合には、ステップS51の処理が実行される。
【0140】
[ステップS53]フォーマット解析部151aは、受信したバス制御パケットから“D”の値を抽出する。“D”が“1”の場合はステップS54の処理が実行され、“D”が“0”の場合はステップS51の処理が実行される。
【0141】
[ステップS54]フォーマット解析部151aは、受信したバス制御パケット内の“E”および“D”の各値を、コピーレジスタ152にセットする。コピーレジスタ152は、セットされた値を、例えば自律的に、1クロックサイクルの間保持する。なお、例えば、後のステップS57の実行後に、フォーマット解析部151aによりコピーレジスタ152の保持値がクリアされるようにしてもよい。
【0142】
[ステップS55]フォーマット解析部151aは、ステップS51でパケットの受信を開始したクロックサイクルの次のクロックサイクル、すなわち、バス制御パケットの後半部を受信したクロックサイクルにおいて、コピーレジスタ152を参照する。このとき、コピーレジスタ152の全ビットが“0”でないことを検知すると、フォーマット解析部151aは、現在受信中の信号がバス制御パケットの末尾であると判定する。ここでは、コピーレジスタ152において、少なくとも“D”の値“1”が保持されていた場合に、受信中の信号がバス制御パケットの末尾であると判定される。
【0143】
なお、バス制御パケットの末尾の受信を判定する方法としては、この他に例えば、バス制御パケット内の“LNG”の値を基に判定する方法も考えられる。この場合、フォーマット解析部151aは、例えば、ステップS52においてバス制御パケットの前半部を受信したと判定すると、クロックサイクルのカウント動作を開始する。そして、カウント数が“LNG”の値に達したときに、バス制御パケットの末尾を受信したと判定する。
【0144】
[ステップS56]フォーマット解析部151aは、コピーレジスタ152に保持された“E”の値と、ステップS55以降にバス制御パケットの後半部から抽出した“CTL’”の値とを基に、バス反転回路160aに対してバス反転信号を出力する。出力されたバス反転信号により、バス反転情報レジスタ161aの記憶値が更新される。
【0145】
例えば、“E”が“1x”の場合、“CTL’”の値に応じてバス反転信号の全ビットが“0”または“1”とされる。また、“E”が“00”の場合、バス反転信号中のデータバスに対応するビットのうち、“CTL’”の値により信号反転動作が指示されたビットが“1”とされる。また、“E”が“01”の場合、バス反転信号中の“TAG”および“ECC”のバスに対応するビットのうち、“CTL’”の値により信号反転動作が指示されたビットが“1”とされる。
【0146】
なお、“E”がどの値の場合でも、“CTL’”の全ビットが“0”とされて、バス反転信号の全ビットが“0”となることで、反転ゲート162aでの信号反転動作が終了される。すなわち、“D”に“1”が設定され、“CTL’”の全ビットに“0”が設定されたバス制御パケットは、送信側における信号反転動作の終了を指示するパケットとなる。
【0147】
[ステップS57]フォーマット解析部151aは、パケット制御レジスタ112aの“V”の値を“0”に更新する。この後、ステップS51の処理が実行され、次のパケットが待機される。
【0148】
図17は、送信側のバスI/Fの動作例を示すタイムチャートである。
図17のタイミングT71の直前では、バス反転回路160aの反転ゲート162aは、すべてのバスについて反転動作を行っていないものとする。すなわち、このとき、バス反転情報レジスタ161aの全ビットが“0”となっている。
【0149】
この状態から、まず、レジスタ設定部111aは、パケット制御レジスタ112aの“V”に“1”を設定するとともに、“E”および“CTL’”に所望の値を設定する(タイミングT71)。ここでは例として、パケット制御レジスタ112aの“D”にも“1”が設定されるものとする。
【0150】
フォーマット変換部113aは、パケット制御レジスタ112aの“V”が“1”になったことを検知すると、バス制御パケットを生成して、バス調停回路120に対してバス制御パケットの送信を要求する。このとき、生成されたバス制御パケットの“CTL’”には、パケット制御レジスタ112aに設定された“CTL’”と同じ値が設定される。
【0151】
バス調停回路120は、フォーマット変換部113aからの送信要求を受け付けると、フォーマット変換部113aから出力されたバス制御パケットを、セレクタ141、パケット解析回路150aおよびバス反転回路160aに対して出力する(タイミングT72)。本実施の形態では、バス制御パケットは、2クロックサイクルの期間(タイミングT72〜T74)に出力される。
【0152】
パケット解析回路150aのフォーマット解析部151aは、受信したバス制御パケットの前半部から“E”および“D”の値を抽出して、コピーレジスタ152にセットする(タイミングT73)。コピーレジスタ152にセットされた値は、1クロックサイクルの期間(タイミングT73〜T74)保持される。
【0153】
フォーマット解析部151aは、バス制御パケットの後半部を受信したとき、コピーレジスタ152の少なくとも“D”に“1”がセットされていることから、バス制御パケットの末尾を受信したと判定する。そして、フォーマット解析部151aは、受信したバス制御パケットの後半部から抽出した“CTL’”と、コピーレジスタ152にセットされた“E”の値とに基づくバス反転信号を出力する。フォーマット解析部151aが出力したバス反転信号の値により、バス反転情報レジスタ161aの値が更新される(タイミングT74)。図17では、バス反転情報レジスタ161a内の反転対象となる1ビットが、タイミングT74で“0”から“1”に変化したことを示している。
【0154】
なお、このとき、フォーマット解析部151aは、パケット制御レジスタ112aの“V”を“0”に更新する。
ところで、バス制御パケットの後半部が反転ゲート162aから出力されるまでの間(タイミングT72,T73)、バス反転情報レジスタ161aの全ビットが“0”である。このため、バス制御パケットは、各ビットの値が反転されることなくそのまま出力回路130に出力される。そして、バス反転情報レジスタ161aが更新されると、反転ゲート162aは、バス反転情報レジスタ161aにおいて“1”とされたビットに対応するバスの信号を反転して出力する(タイミングT74)。これにより、バス制御パケットに続いて送信されるパケットの信号のうち、反転を指示されたビット位置のバス信号が、反転された状態となる。
【0155】
以上のバスI/F104aでは、反転ゲート162aでの信号反転動作を切り替えるためにバス調停回路120からバス制御パケットが出力されたとき、バス制御パケットが反転ゲート162aを通過した後に、バス反転情報レジスタ161aが更新される。従って、反転ゲート162aでは、バス制御パケットが反転ゲート162aを通過した後に、通過したバス制御パケットで指示された動作切り替えが実行される。
【0156】
次に、図18は、受信側のバスI/Fの内部構成例を示す図である。なお、図18では、図9に示した構成要素に対応する構成要素については同じ符号を付して示している。
情報処理装置200a内のバスI/F204aは、バス反転回路210a、エラー検出回路220a、受信回路230およびパケット解析回路240aを備えている。
【0157】
バス反転回路210aは、パケット解析回路240aからのバス反転信号に基づき、接続バス300を通じて受信した信号のうち、バス制御パケットにより指示されたバスの信号の極性を反転する。バス反転回路210aは、バス反転情報レジスタ211aと反転ゲート212aとを備えている。
【0158】
バス反転情報レジスタ211aおよび反転ゲート212aは、図14に示したバス反転情報レジスタ161aおよび反転ゲート162aとそれぞれ同様の構成を有している。すなわち、バス反転情報レジスタ211aは、接続バス300のバスの数と同じビット数を有し、パケット解析回路240aから出力されたバス反転信号の値を保持する。反転ゲート212aは、接続バス300の各バスの信号と、バス反転情報レジスタ211aの各ビットの値とのEORをとるゲート回路である。反転ゲート212aは、バス反転情報レジスタ211aに“1”が設定されたビットに対応するバスからの入力信号の極性を反転して出力する。
【0159】
エラー検出回路220aは、反転ゲート212aから出力された信号、すなわち、“TAG”の信号、データバスの信号および“ECC”の信号を基に、2ビットまでのエラー検出処理を実行する。また、エラー検出回路220aは、1ビットエラーを検出した場合には、エラー訂正処理を実行する。
【0160】
また、エラー検出回路220aは、エラーを検出すると、エラーを検出したことを記述したエラー情報221aを生成する。エラー情報221aには、例えば、エラー検出時点でバス反転情報レジスタ211aに保持されていた信号が記述される。これにより、どのバスの信号を反転させていたときにエラーが検出されたかが識別できるようになる。なお、エラー情報221aは、例えば、HDD203などの不揮発性記憶媒体に記憶される。また、エラー情報221aの内容は、例えば、情報処理装置200aに接続された表示装置(図示せず)や、情報処理装置200aに接続された他の装置を通じて、管理者に通知されてもよい。
【0161】
受信回路230は、受信レジスタ231を備えており、エラー検出回路220aから出力された1クロックサイクル分の信号を受信レジスタ231に一旦保持した後、情報処理装置200a内のバスコントローラ205に出力する。
【0162】
パケット解析回路240aは、エラー検出回路220aから出力されたパケットの内容に基づいて、バス反転回路210aにおける信号反転動作を制御する。パケット解析回路240aは、パケットの内容を解析するフォーマット解析部241aと、バス制御パケットから抽出された情報を一時的に保持するコピーレジスタ242とを備えている。
【0163】
フォーマット解析部241aは、エラー検出回路220aからバス制御パケットを受信したとき、バス制御パケット内の“R”が“1”である場合には、“E”および“CTL’”の各値に基づいて、バス反転回路210aに対して、信号を反転するバスの位置を指定するバス反転信号を出力する。バス反転信号は、送信側のバスI/F204aで使用されたバス反転信号と同様に、接続バス300のバスの数と同じビット数を有し、バス反転信号のそれぞれのビットが1つのバスに対応している。そして、信号反転動作を実行させるバスに対応するビットが“1”とされる。
【0164】
コピーレジスタ242には、フォーマット解析部241aにより、バス制御パケットの前半部から抽出された“E”および“R”の各値がセットされる。コピーレジスタ242は、セットされた値を1クロックサイクルの間保持する。このコピーレジスタ242にセットされた値は、フォーマット解析部241aの処理において参照されるが、コピーレジスタ242の値に基づくフォーマット解析部241aの詳細な処理手順については、後の図19において説明する。
【0165】
なお、受信回路230は、例えば、バス反転回路210aの前段に配置されてもよい。ただし、この場合でも、エラー検出回路220aは、バス反転回路210aからの出力信号を基にエラー検出および訂正の各処理を実行できる位置に配置される。
【0166】
また、以上の図18に示したバスI/F204aの機能は、情報処理装置100aのバスI/F104aも備えていてもよい。
図19は、パケット解析回路の動作手順を示すフローチャートである。
【0167】
[ステップS81]パケット解析回路240aのフォーマット解析部241aは、エラー検出回路220aから出力されるパケットを監視し、パケットを受信した場合に次のステップS82の処理を実行する。
【0168】
[ステップS82]フォーマット解析部241aは、受信したパケットの内容を解析して、受信したパケットがバス制御パケットか否かを判定する。フォーマット解析部241aは、受信したパケット内の“TAG”が“01”であり、なおかつ“CODE”の値が“FF”であった場合、バス制御パケットの前半部を受信したと判定し、ステップS83の処理を実行する。一方、受信したパケットがバス制御パケットではないと判定された場合には、ステップS81の処理が実行される。
【0169】
[ステップS83]フォーマット解析部241aは、受信したバス制御パケットから“R”の値を抽出する。“R”が“1”の場合はステップS84の処理が実行され、“R”が“0”の場合はステップS81の処理が実行される。
【0170】
[ステップS84]フォーマット解析部241aは、受信したバス制御パケット内の“E”および“R”の各値を、コピーレジスタ242にセットする。コピーレジスタ242は、セットされた値を、例えば自律的に、1クロックサイクルの間保持する。なお、例えば、後のステップS86の実行後に、フォーマット解析部241aによりコピーレジスタ242の保持値がクリアされるようにしてもよい。
【0171】
[ステップS85]フォーマット解析部241aは、ステップS81でパケットの受信を開始したクロックサイクルの次のクロックサイクル、すなわち、バス制御パケットの後半部を受信したサイクルにおいて、コピーレジスタ242を参照する。このとき、コピーレジスタ242の全ビットが“0”でないことを検知すると、フォーマット解析部241aは、現在受信中の信号がバス制御パケットの末尾であると判定する。例えば、コピーレジスタ242において、少なくとも“R”の値“1”が保持されていた場合に、受信中の信号がバス制御パケットの末尾であると判定される。
【0172】
なお、送信側と同様に、バス制御パケットの末尾の受信を判定する方法としては、この他に例えば、バス制御パケット内の“LNG”の値を基に判定する方法が採用されてもよい。
【0173】
[ステップS86]フォーマット解析部241aは、コピーレジスタ242に保持された“E”の値と、バス制御パケットの後半部から抽出した“CTL’”の値とを基に、バス反転回路210aに対してバス反転信号を出力する。出力されたバス反転信号により、バス反転情報レジスタ211aの記憶値が更新される。
【0174】
例えば、“E”が“1x”の場合、“CTL’”の値に応じて、バス反転信号の全ビットが“0”または“1”とされる。また、“E”が“00”の場合、バス反転信号中のデータバスに対応するビットのうち、“CTL’”の値により信号反転動作を指示されたビットが“1”とされる。また、“E”が“01”の場合、バス反転信号中の“TAG”および“ECC”のバスに対応するビットのうち、“CTL’”の値により信号反転動作を指示されたビットが“1”とされる。
【0175】
なお、“E”がどの値の場合でも、バス反転信号の全ビットが“0”とされることで、反転ゲート212aでの信号反転動作が終了される。すなわち、“R”に“1”が設定され、“CTL’”の全ビットに“0”が設定されたバス制御パケットは、受信側における信号反転動作の終了を指示するパケットとなる。
【0176】
この後、ステップS81の処理が実行され、次のパケットが監視される。
図20は、受信側のバスI/Fの動作例を示すタイムチャートである。
図20のタイミングT91の直前では、接続バス300を通じて送信された信号は、すべてのバスについて元の信号を反転したものではなく、かつ、バス反転回路210aの反転ゲート212aは、すべてのバスについて反転動作を行っていないものとする。このとき、バス反転情報レジスタ211aの全ビットが“0”となっている。
【0177】
この状態において、接続バス300からバス制御パケットの前半部が受信されると、バス制御パケットの前半部は反転ゲート212aおよびエラー検出回路220aを通過して、受信回路230およびパケット解析回路240aに出力される(タイミングT91)。
【0178】
ここで、受信したバス制御パケットの前半部では、“R”が“1”であったものとする。なお、前述の通り、バス制御パケットは2クロックサイクルで伝送される。パケット解析回路240aのフォーマット解析部241aは、受信したバス制御パケットの前半部から“E”および“R”の値を抽出して、コピーレジスタ242にセットする(タイミングT92)。コピーレジスタ242にセットされた値は、1クロックサイクルの期間(タイミングT92〜T93)保持される。
【0179】
フォーマット解析部241aは、バス制御パケットの後半部をエラー検出回路220aから受信したとき、コピーレジスタ242の少なくとも“R”に“1”に値がセットされていることから、バス制御パケットの末尾を受信したと判定する。そして、フォーマット解析部241aは、受信したバス制御パケットの後半部から抽出した“CTL’”と、コピーレジスタ242にセットされた“E”の値とに基づくバス反転信号を出力する。フォーマット解析部241aが出力したバス反転信号の値により、バス反転情報レジスタ211aの値が更新される(タイミングT93)。図20では、バス反転情報レジスタ211a内の反転対象となるビットが、タイミングT93で“0”から“1”に変化したことを示している。
【0180】
ところで、バス制御パケットの後半部が反転ゲート212aから出力されるまでの間(タイミングT91,T92)、バス反転情報レジスタ211aの全ビットが“0”である。このため、バス制御パケットは、各ビットの値が反転されることなくそのままエラー検出回路220aに出力される。そして、バス反転情報レジスタ211aが更新されると、反転ゲート212aは、バス反転情報レジスタ211aにおいて“1”とされたビットに対応するバスの信号を反転して出力する(タイミングT93)。これにより、バス制御パケットに続いて送信されるパケットの信号のうち、反転を指示されたビット位置のバス信号が、反転ゲート212aによって反転される。
【0181】
以上のバスI/F204aでは、反転ゲート212aでの信号反転動作の切り替えを指示するバス制御パケットが受信されたとき、バス制御パケットが反転ゲート212aを通過した後に、バス反転情報レジスタ211aが更新される。従って、反転ゲート212aでは、バス制御パケットが反転ゲート212aを通過した後に、通過したバス制御パケットによって指示された動作切り替えが実行される。
【0182】
以上説明した第3の実施の形態の情報伝送システムは、例えば、次の3通りのバス故障診断動作を実行可能である。
第1の動作例としては、バス制御パケット内の“E”を“1x”とし、“D”および“R”をともに“1”とした場合が挙げられる。この場合、例えば、バス制御パケット内の“CTL’”の全ビットを“1”とすることで、送信側のバスI/F104aの反転ゲート162aは、バス制御パケットを受信した後の全バス上の信号を反転する。これとともに、受信側のバスI/F204aの反転ゲート212aは、バス制御パケットを受信した後の全バス上の信号を反転して、極性を元に戻す。反転ゲート212aで反転された信号は、エラー検出回路220aに入力され、これにより接続バス300上のバスに故障が発生しているか否かが検証される。
【0183】
また、全バスの信号反転処理の開始後に例えば、“CTL’”の全ビットが“0”とされたバス制御パケットが出力されることで、送信側のバスI/F104aの反転ゲート162aは、バス制御パケットを出力した後に、全バスの信号反転動作を停止する。また、受信側のバスI/F204aの反転ゲート212aは、バス制御パケットを出力した後、全バス上の信号反転動作を停止する。
【0184】
すなわち、この第1の動作例では、第2の実施の形態と同様のバス故障診断動作が実行される。このバス故障診断動作では、1つのバスに故障が発生したとき、受信側のエラー検出回路220aは、1ビットエラーを検出してエラー訂正処理を実行するが、エラー訂正不能な2ビット以上のエラーを検出することはない。このため、通常の信号伝送処理を続行しながら、接続バス300の1つのバスにおける故障の発生を検出することができる。
【0185】
第2の動作例としては、バス制御パケット内の“E”を“00”または“01”とし、“D”を“0”、“R”を“1”とした場合が挙げられる。この場合、送信側のバスI/F104aの反転ゲート162aは、信号反転動作を行わず、受信側のバスI/F204aの反転ゲート212aのみが、信号反転動作を行う。
【0186】
このとき、例えば、バス制御パケット内の“CTL’”のビットのうち1ビットのみを“1”とすることで、受信側のバスI/F204aにおいて、受信信号のうち“CTL’”が示す1つのバスの信号のみ反転させた状態が作り出される。エラー検出回路220aにより、信号を反転したバスのみからエラーが検出された場合、そのバスが正常であることを判定できる。一方、エラー検出回路220aにより、エラーが検出されないか、あるいは2ビットエラーが検出された場合、信号を反転したバスが故障していることを判定できる。
【0187】
第3の動作例としては、バス制御パケット内の“E”を“00”または“01”とし、“D”を“1”、“R”を“0”とした場合が挙げられる。この場合、送信側のバスI/F104aの反転ゲート162aのみが、信号反転動作を行い、受信側のバスI/F204aの反転ゲート212aは、信号反転動作を行わない。
【0188】
このとき、例えば、バス制御パケット内の“CTL’”のビットのうち1ビットのみを“1”とすることで、接続バス300に送信される信号のうち“CTL’”が示す1つのバスの信号のみ反転させた状態が作り出される。受信側のバスI/F204aでは、エラー検出回路220aにより、信号を反転したバスからエラーが検出された場合、そのバスが正常であることを判定できる。一方、エラー検出回路220aにより、エラーが検出されないか、あるいは2ビットエラーが検出された場合、信号を反転したバスが故障していることを判定できる。
【0189】
また、送信側のバスI/F104aでは、反転ゲート162aからの出力信号を基にエラー検出回路140がエラー検出を行うことで、反転ゲート162aより前におけるバスの故障を診断することもできる。なお、反転ゲート162aより前のバスの故障診断を目的とする場合には、バス制御パケット内の“R”は“0”、“1”のどちらでもよい。
【0190】
ただし、上記の第2の動作例および第3の動作例では、信号を反転したバス以外のバスに故障が発生していた場合には2ビットエラーが検出されるため、通常運用時以外の期間においてバスの故障診断動作が実行されることが望ましい。
【0191】
なお、上記の第2の動作例および第3の動作例では、1つのバスのみ信号を反転したが、本実施の形態では、例えば、任意の複数のバスの信号を反転することも可能である。
また、他の動作例として、送信側と受信側の両方において、同じビットのバス信号を反転することで、反転したバスが故障しているか否かを受信側のエラー検出処理によって判定することもできる。ただし、この場合でも、受信側では2ビット以上のエラーが検出され得るため、通常運用時以外の期間においてバスの故障診断動作が実行されることが望ましい。
【0192】
このように、本実施の形態では、第2の実施の形態と同様のバス故障診断動作だけでなく、信号を反転するバスや信号を反転させる位置を任意に指定して様々なパターンのバス故障診断動作を実行することが可能である。
【0193】
なお、以上で説明した第2,第3の実施の形態では、情報処理装置間を接続するバスの故障診断動作を行う場合の例について説明した。しかし、上記各実施の形態における送信側のバスI/Fと受信側のバスI/Fとを1つの情報処理装置の内部に設け、この情報処理装置内のデバイス間を接続するバスの故障診断動作を行うようにしてもよい。
【0194】
以上の各実施の形態に関し、さらに以下の付記を開示する。
(付記1) 送信データと前記送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバスを通じて受信側デバイスに接続し、前記パラレルバスのすべてのバスに送信する信号を反転する信号反転部、
を有することを特徴とする情報処理装置。
【0195】
(付記2) 前記パラレルバスのすべてのバスからの受信信号を反転するように前記受信側デバイスに指示する反転指示情報と、前記反転指示情報に基づくエラー訂正符号とを前記パラレルバスに出力する指示情報出力部をさらに有し、
前記信号反転部は、前記反転指示情報が前記パラレルバスに出力された後に、前記パラレルバスのすべてのバスに送信される信号を反転する、
ことを特徴とする付記1記載の情報処理装置。
【0196】
(付記3) 前記指示情報出力部は、前記反転指示情報と当該反転指示情報に基づくエラー訂正符号とを生成し、生成した前記反転指示情報と当該判定指示情報に基づくエラー訂正符号とを前記信号反転部を通じて前記パラレルバスに送信し、
さらに、
前記信号反転部に入力する信号から前記反転指示情報を検出すると、検出した前記反転指示情報が前記信号反転部から出力された後に、前記信号反転部に、前記パラレルバスのすべてのバスに送信する信号を反転する動作を開始させる反転動作制御部を有することを特徴とする付記2記載の情報処理装置。
【0197】
(付記4) 前記指示情報出力部は、前記パラレルバスのすべてのバスに送信する信号を反転しないように前記受信側デバイスに指示する非反転指示情報と、前記非反転指示情報に基づくエラー訂正符号とを生成して、生成した前記非反転指示情報と当該非反転指示情報に基づくエラー訂正符号とを前記信号反転部を通じて前記パラレルバスに送信し、
前記反転動作制御部は、入力信号から前記非反転指示情報を検出すると、当該非反転指示情報が前記信号反転部から出力された後に、前記パラレルバスのすべてのバスに送信する信号を反転しないように前記信号反転部を制御する、
ことを特徴とする付記3記載の情報処理装置。
【0198】
(付記5) 前記指示情報出力部は、信号を反転するバスを指定するバス指定情報と、前記バス指定情報によって指定されたバスの信号を反転する動作を送信側と受信側のどちらで実行させるかを示す実行対象指定情報とを含む部分反転指示情報と、前記部分反転指示情報に基づくエラー訂正符号とを生成して、生成した前記部分反転指示情報と当該部分反転指示情報に基づくエラー訂正符号とを前記信号反転部を通じて前記パラレルバスに送信し、
前記反転動作制御部は、入力信号から前記部分反転指示情報を検出すると、当該部分反転指示情報に含まれる前記実行対象指定情報が送信側を示していた場合に、当該部分反転指示情報が前記信号反転部から出力された後に、当該部分反転指示情報に含まれる前記バス指定情報によって指定されたバスに送信する信号を反転するように前記信号反転部を制御する、
ことを特徴とする付記3または4記載の情報処理装置。
【0199】
(付記6) 送信データと前記送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバスに接続し、前記パラレルバスのすべてのバスから受信した信号を反転する信号反転部と、
前記信号反転部から出力された信号を基にエラー検出処理とエラー訂正処理とを実行するエラー検出部と、
を有することを特徴とする情報処理装置。
【0200】
(付記7) 前記パラレルバスのすべてのバスから受信した信号を反転するように指示する反転指示情報を、前記パラレルバスから前記信号反転部を通じて受信すると、当該反転指示情報が前記信号反転部から出力された後に、すべてのバスから受信した信号を反転する動作を前記信号反転部に開始させる反転動作制御部をさらに有することを特徴とする付記6記載の情報処理装置。
【0201】
(付記8) 前記反転動作制御部は、前記パラレルバスのすべてのバスから受信した信号を反転しないように指示する非反転指示情報を、前記パラレルバスから前記信号反転部を通じて受信すると、当該非反転指示情報が前記信号反転部から出力された後に、前記パラレルバスのすべてのバスから受信した信号を反転しないように前記信号反転部を制御することを特徴とする付記7記載の情報処理装置。
【0202】
(付記9) 前記反転動作制御部は、前記パラレルバスのバスのうち指定したバスから受信した信号を反転するように指示する部分反転指示情報を、前記パラレルバスから前記信号反転部を通じて受信すると、当該部分反転指示情報が前記信号反転部から出力された後に、当該部分反転指示情報によって指定されたバスから受信した信号を反転するように前記信号反転部を制御することを特徴とする付記7または8記載の情報処理装置。
【0203】
(付記10) 前記部分反転指示情報は、指定したバスから受信した信号を反転する動作を送信側と受信側のどちらで実行させるかを示す実行対象指示情報を含み、
前記反転動作制御部は、前記部分反転指示情報を受信したとき、当該部分反転指示情報に含まれる前記部分反転指示情報によって受信側が指定されていた場合に、当該部分反転指示情報によって指定されたバスから受信した信号を反転するように前記信号反転部を制御する、
ことを特徴とする付記9記載の情報処理装置。
【0204】
(付記11) 送信データと前記送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバスを通じて受信側デバイスに接続した送信側デバイスが、前記パラレルバスのすべてのバスに送信する信号を反転する、
ことを特徴とする情報送信方法。
【0205】
(付記12) 前記送信側デバイスは、
前記パラレルバスのすべてのバスから受信した信号を反転するように前記受信側デバイスに指示する反転指示情報と、前記反転指示情報に基づくエラー訂正符号とを前記パラレルバスに出力し、
前記反転指示情報が前記パラレルバスに出力された後に、前記パラレルバスのすべてのバスに送信される信号を反転する、
ことを特徴とする付記11記載の情報処理装置。
【0206】
(付記13) 送信データと前記送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバスに接続した受信側デバイスが、
前記パラレルバスのすべてのバスから受信した信号を、前記受信側デバイスが備える信号反転部によって反転し、
前記信号反転部から出力された信号を基にエラー検出処理とエラー訂正処理とを実行する、
ことを特徴とする情報受信方法。
【0207】
(付記14) 前記受信側デバイスは、
前記パラレルバスのすべてのバスから受信した信号を反転するように指示する反転指示情報を、前記パラレルバスから受信し、
受信した前記反転指示情報が前記信号反転部から出力された後に、すべてのバスから受信した信号を反転する動作を前記信号反転部に開始させる、
ことを特徴とする付記13記載の情報受信方法。
【符号の説明】
【0208】
10 送信側デバイス
11,21 信号反転部
12 指示情報出力部
13,23 反転動作制御部
20 受信側デバイス
22 エラー検出部
30 パラレルバス
【技術分野】
【0001】
本発明は、情報処理装置、情報送信方法および情報受信方法に関する。
【背景技術】
【0002】
高い信頼性の要求されるサーバなどの情報処理装置では、他の情報処理装置との間の接続バスや情報処理装置内のデバイス間の接続バスにおいて、ECC(Error-Correcting Code)を用いたデータ転送を行うものがある。ECCを用いてデータが転送されるバスを“ECCバス”と呼ぶ。ECCバスでは、データの受信側において、1ビットのエラー検出および訂正と、2ビットのエラー検出とを行うことが可能になる。
【0003】
ECCバスにおける故障を診断する方法としては、例えば、専用のプログラムまたはハードウェアにより送信データを明示的に変化させる機能を設け、受信側でデータを正常に受信できるか否かを確認する方法がある。この種の方法としては、例えば次の2通りの方法があり、1つは、故障診断の期間中にビットを変化させたパターンを転送し、受信側で期待値と一致するかを検証する方法である。ただし、この方法では、故障診断の期間中はECCによるエラー検出を停止させる必要がある。また、もう1つの方法は、ビットの値を少しずつ(例えば1ビットずつ)変化させながら送信データを送信し、受信側で正常に受信できるか否かを検証する方法である。この方法では、ECCパターンが変化するような送信データのパターンをあらかじめ作成する必要がある。
【0004】
また、ECCバスにおける故障を診断する別の方法としては、バスのデータ部やECC部における信号を1ビットのみ反転して送信し、受信側でエラーが検出されることを確認するという方法がある。この方法が適用されたシステム構成例を次の図21に示す。
【0005】
図21は、バスの故障診断機能を備えた情報処理装置の構成例を示す図である。
図21では、情報処理装置間をECCバスによって接続した場合の構成例を示している。信号送信側の情報処理装置である送信側装置910は、バス調停回路911、反転制御回路912、バス反転回路913、出力回路914およびエラー検出回路915を備えている。
【0006】
バス調停回路911には、内部回路からの複数のバスが接続されており、バス調停回路911は、これらのバスのうち1つから送信信号を選択し、バス反転回路913に出力する。反転制御回路912は、信号を反転するビットの位置をバス反転回路913に対して指定する。バス反転回路913は、バス調停回路911から入力された送信信号のビットのうち、反転制御回路912から指定されたビット位置のバスの信号を反転する。出力回路914は、バス反転回路913から出力された信号を、ECCバスを通じて受信側装置920に送信する。エラー検出回路915は、出力回路914に入力された信号からエラーを検出する。
【0007】
一方、信号受信側の情報処理装置である受信側装置920は、反転制御回路921、バス反転回路922、受信回路923およびエラー検出回路924を備えている。
反転制御回路921は、信号を反転するビットの位置をバス反転回路922に対して指定する。バス反転回路922は、送信側装置910から送信された信号のビットのうち、反転制御回路921から指定されたビット位置のバスの信号を反転する。受信回路923は、バス反転回路922から出力された信号を、受信側装置920の内部回路に出力する。エラー検出回路924は、受信回路923に入力された信号から、エラーの検出および訂正を行う。
【0008】
ここで、送信側装置910と受信側装置920とを接続するECCバスの故障診断を行うには、送信側装置910のバス反転回路913または受信側装置920のバス反転回路922のいずれか一方で、信号のうち1ビットが反転される。このとき、ECCバスに異常がなければ、受信側装置920のエラー検出回路924は1ビットエラーを検出する。しかし、ECCバスに異常がある場合には、エラー検出回路924は、エラーを検出しないか、あるいは、2ビットエラーを検出する。
【0009】
エラー検出回路924によって2ビットエラーが検出される場合とは、信号を反転したビットとは異なるビットに対応するバスに故障が発生している場合である。そして、このような場合には、2ビットエラーが検出されるので、エラー検出回路924は受信信号を訂正できない。すなわち、上記の故障診断方法では、訂正不能エラーが発生することがあるため、システムの通常運用中には故障診断を実行できない。
【0010】
なお、ビット反転手順を含む誤り訂正方法として、受信データの1ビットに誤りが発生した場合に対応する複数のシンドロームデータを記憶しておき、実際の受信データの1ビットを反転したデータと、記憶していたシンドロームに基づくデータとを比較して3ビットの誤り訂正位置を特定するものがあった。
【0011】
また、ビット反転手順を含むデータ伝送テスト方法としては、BIST(Built In Self Test)回路において、複数のテストデータを選択的に反転させ、これらのデータを論理的に結合してテストデータ値シーケンスを出力し、期待値に対応するか否かを判定するものがあった。
【0012】
さらに、デュアルエンコーディングを用いてデータを送信するシステムにおいて、前のデータから値が変化するビットが所定の数より多い場合にデータを反転して送信することで、グランドバウンスの発生を抑制するようにしたものがあった。
【先行技術文献】
【特許文献】
【0013】
【特許文献1】特開2002−26741号公報
【特許文献2】特表2008−541059号公報
【特許文献3】特表2007−526574号公報
【発明の概要】
【発明が解決しようとする課題】
【0014】
前述したECCバスの故障診断方法では、故障診断用のデータをあらかじめ作成して送信する必要があることや、訂正不能な2ビットエラーが発生する可能性があることから、いずれもシステムの通常運用中には故障診断を実行できないという問題があった。
【0015】
本発明はこのような点に鑑みてなされたものであり、通常の情報伝送動作中にバスの故障診断を実行できるようにした情報処理装置、情報送信方法および情報受信方法を提供することを目的とする。
【課題を解決するための手段】
【0016】
上記目的を達成するために、次のような信号反転部を有する情報処理装置が提供される。信号反転部は、送信データと前記送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバスを通じて受信側デバイスに接続し、前記パラレルバスのすべてのバスに送信する信号を反転する。
【0017】
また、上記目的を達成するために、次のような情報処理装置が提供される。この情報処理装置は、送信データと前記送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバスに接続し、前記パラレルバスのすべてのバスから受信した信号を反転する信号反転部と、前記信号反転部から出力された信号を基にエラー検出処理とエラー訂正処理とを実行するエラー検出部と、を有する。
【発明の効果】
【0018】
上記の情報処理装置によれば、通常の情報伝送動作中にパラレルバスの故障診断を実行できる。
【図面の簡単な説明】
【0019】
【図1】第1の実施の形態に係る情報伝送システムの構成を示す図である。
【図2】第2の実施の形態に係る情報伝送システムの構成を示す図である。
【図3】接続バスを通じて伝送されるパケットの構成例を示す図である。
【図4】バス制御パケットの構成例を示す図である。
【図5】送信側のバスI/Fの内部構成を示す図である。
【図6】パケット制御レジスタに設定される情報の例を示す図である。
【図7】パケット解析回路の動作手順を示すフローチャートである。
【図8】送信側のバスI/Fの動作例を示すタイムチャートである。
【図9】受信側のバスI/Fの内部構成例を示す図である。
【図10】パケット解析回路の動作手順を示すフローチャートである。
【図11】受信側のバスI/Fの動作例を示すタイムチャートである。
【図12】第3の実施の形態に係る情報伝送システムの構成を示す図である。
【図13】第3の実施の形態で使用されるバス制御パケットの構成例を示す図である。
【図14】送信側のバスI/Fの内部構成を示す図である。
【図15】パケット制御レジスタに設定される情報の例を示す図である。
【図16】パケット解析回路の動作手順を示すフローチャートである。
【図17】送信側のバスI/Fの動作例を示すタイムチャートである。
【図18】受信側のバスI/Fの内部構成例を示す図である。
【図19】パケット解析回路の動作手順を示すフローチャートである。
【図20】受信側のバスI/Fの動作例を示すタイムチャートである。
【図21】バスの故障診断機能を備えた情報処理装置の構成例を示す図である。
【発明を実施するための形態】
【0020】
以下、実施の形態を図面を参照して詳細に説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係る情報伝送システムの構成を示す図である。
【0021】
図1に示す情報伝送システムでは、送信側デバイス10と受信側デバイス20とが、パラレルバス30を通じて接続されている。送信側デバイス10および受信側デバイス20は、例えば、情報処理装置内で各種のデバイス間を接続するバスインタフェースである。また、情報処理装置間がパラレルバス30によって接続される場合には、送信側デバイス10および受信側デバイス20は、送信側、受信側の各情報処理装置に設けられたバスインタフェース回路であってもよい。
【0022】
パラレルバス30は、送信データと、この送信データを基に生成されたエラー訂正符号とをパラレル送信する。従って、パラレルバス30の受信側では、受信信号のエラー検出処理およびエラー訂正処理を実行できる。また、本実施の形態のパラレルバス30では、2ビットまでのエラー検出処理と、1ビットのエラー訂正処理とが実行できるものとする。
【0023】
送信側デバイス10は、パラレルバス30のすべてのバスに送信する信号を反転する信号反転部11を備えている。一方、受信側デバイス20は、パラレルバス30のすべてのバスから受信した信号を反転する信号反転部21と、信号反転部21から出力された信号を基にエラー検出処理およびエラー訂正処理を実行するエラー検出部22とを備えている。
【0024】
このような構成において、送信側の信号反転部11により、すべてのバスへの送信信号が反転され、受信側の信号反転部21により、すべてのバスから受信した信号が再度反転されることで、エラー検出部22は、パラレルバス30の故障診断を行うことができる。すなわち、この状態では、パラレルバス30のうち1つのバスにおいて故障が発生していた場合には、エラー検出部22は、故障したバスからの受信信号に基づいて、1ビットエラーを検出する。
【0025】
例えば、元の送信信号がローレベルであるとき、その送信信号は信号反転部11によって反転されてハイレベルとされ、パラレルバス30に送信される。このとき、送信されたバスが故障している場合には、受信側の信号反転部21は、故障したバスからローレベルの信号を受信し、受信信号を反転したハイレベルの信号をエラー検出部22に出力する。エラー検出部22は、受信した信号をエラーと判定する。このような動作により、例えば、故障したバスが信号送信に使用されていないなど、そのバスに対する元の信号がローレベルのまま変化しない場合でも、バスの故障を検出できるようになる。
【0026】
また、このようなバスの故障診断動作では、故障したバスが1つであれば、故障したバスからの受信信号のみが誤った値となり得るため、エラー検出部22では2ビット以上のエラーが検出されることはない。エラー検出部22は、検出したエラーが1ビットエラーであれば、エラーを訂正することができる。このため、故障したバスが1つであれば、故障診断動作を実行中でも、送信側デバイス10から受信側デバイス20への情報伝送動作が停止されない。従って、このような故障診断動作は、診断専用の期間に実行される必要はなく、通常の情報伝送動作の実行中に並行して実行することができる。
【0027】
ところで、送信側デバイス10は、さらに、指示情報出力部12と反転動作制御部13とを備えていてもよく、受信側デバイス20は、さらに、反転動作制御部23を備えていてもよい。なお、反転動作制御部23を備える場合、受信側デバイス20の信号反転部21は、バスからの受信信号を反転するか否かを切り替え可能であるものとする。
【0028】
指示情報出力部12は、パラレルバス30のすべてのバスからの受信信号を反転するように受信側デバイス20に指示する反転指示情報を生成し、パラレルバス30を通じて受信側デバイス20に送信する。このとき、指示情報出力部12は、反転指示情報に基づくエラー訂正符号も生成して、反転指示情報とともに受信側デバイス20に送信する。指示情報出力部12からの出力信号は、例えば、信号反転部11を通じてパラレルバス30に送信される。
【0029】
反転動作制御部13は、指示情報出力部12からの反転指示情報に基づいて、信号反転部11において信号を反転させるか否かを制御する。ここで、反転動作制御部13は、信号反転部11に入力される指示情報出力部12からの出力信号から反転指示情報を検出すると、信号反転部11に対して、すべてのバスへの送信信号を反転するように指示する。反転動作制御部13は、信号反転部11におけるこのような信号反転動作を、検出した反転指示情報が信号反転部11からパラレルバス30に出力された後に開始させる。
【0030】
一方、受信側デバイス20において、反転動作制御部23は、エラー検出部22から出力されたエラー訂正後の信号から反転指示情報を検出すると、信号反転部21に対して、すべてのバスからの受信信号を反転するように指示する。反転動作制御部23は、信号反転部21におけるこのような信号反転動作を、検出した反転指示情報が少なくとも信号反転部21から出力された後に開始させる。
【0031】
このように、パラレルバス30を通じて反転指示情報が伝送されることで、送信側デバイス10からの指示に応じて、受信側デバイス20での信号反転動作を開始させることができる。また、送信側デバイス10でも、反転動作制御部13の制御により、反転指示情報に応じて信号反転動作を開始させるようにすることで、反転指示情報に応じて前述のバスの故障検証動作を開始させることが可能になる。従って、任意のタイミングで、前述のバスの故障検証動作を開始できるようになる。
【0032】
なお、指示情報出力部12から、バスの信号を反転しないように指示する非反転指示情報を出力し、反転動作制御部13,23が非反転指示情報を検出すると、それぞれ信号反転部11,21に対して反転動作を終了させるようにしてもよい。このような非反転指示情報により、前述のバスの故障検証動作を終了させることが可能になる。
【0033】
次に、情報処理装置間を接続するパラレルバスの故障検証動作を実行可能なシステムの例について説明する。
〔第2の実施の形態〕
図2は、第2の実施の形態に係る情報伝送システムの構成を示す図である。
【0034】
図2に示す情報伝送システムは、情報処理装置100と情報処理装置200との間で、パラレルバスである接続バス300を通じてデータが送受信されるシステムである。情報処理装置100,200は、それぞれの内部のCPUによりプログラムが実行されることで動作するコンピュータである。接続バス300は、送信データと、この送信データに基づくECCとがパラレル転送されるECCバスである。
【0035】
情報処理装置100は、CPU(Central Processing Unit)101、RAM(Random Access Memory)102、HDD(Hard Disk Drive)103、バスインタフェース(I/F)104およびバスコントローラ105を備えている。
【0036】
CPU101は、HDD103などの記憶媒体に記憶された各種プログラムを実行することにより、この情報処理装置100全体を統括的に制御する。RAM102は、CPU101に実行させるプログラムの少なくとも一部や、このプログラムによる処理に必要な各種データを一時的に記憶する。HDD103は、CPU101により実行されるプログラムやその実行に必要な各種のデータなどを記憶する。
【0037】
バスI/F104は、接続バス300を通じて情報処理装置200などの外部装置との間でデータを送受信するインタフェース回路である。後述するように、バスI/F104には、接続バス300の故障診断機能を備えている。この故障診断機能には、接続バス300に送信する信号の全ビットを反転する機能や、接続バス300から受信した信号の全ビットを反転する機能、反転された受信信号のエラー検出およびエラー訂正を実行する機能などが含まれる。
【0038】
バスコントローラ105は、CPU101とRAM102、HDD103およびバスI/F104との間のデータ送受信動作を制御する。バスコントローラ105は、バスI/F104との間で、送信データとECCとがパラレル転送されるECCバスを通じてデータを送受信する。また、バスコントローラ105は、CPU101からバスI/F104に転送するデータを基にECCを算出する機能や、バスI/F204からの受信信号に基づくエラー検出およびエラー訂正を行う機能も備えている。
【0039】
情報処理装置200は、情報処理装置100と同様のハードウェア構成を持つコンピュータである。情報処理装置200は、CPU201、RAM202、HDD203、バスインタフェース(I/F)204およびバスコントローラ205を備えている。そして、これらはそれぞれ、情報処理装置100におけるCPU101、RAM102、HDD103、バスI/F104およびバスコントローラ105に対応している。
【0040】
図3は、接続バスを通じて伝送されるパケットの構成例を示す図である。
図3において、左右方向に並列された情報は、1クロックサイクルで接続バス300上にパラレル送信される。すなわち、本実施の形態の例では、接続バス300は、“TAG”を伝送するバスと、“ECC”を伝送するバスと、その他のバスであるデータバスとを含む。
【0041】
“TAG”は、データバスに伝送される情報が有効か無効かを示す情報である。“TAG”の値が“00”または“11”の場合、データバスが無効であることを示す。“TAG”の値が“01”の場合、データバスが有効であり、データバスにおいてパケット構成情報が伝送されることを示す。“TAG”の値が“10”の場合、データバスが有効であり、データバスにおいて実データである“DATA”が伝送されることを示す。
【0042】
“ECC”は、“TAG”の値とデータバスに流れる値とを基に算出されたエラー訂正符号である。このエラー訂正符号は、2ビットのエラー検出と1ビットの誤り訂正とを可能にするものであり、例えばハミング符号とされる。
【0043】
データバスにおいては、パケットの先頭では、図3の上段に示すように、ヘッダ情報としてパケット構成情報が伝送され、図3の下段に示すように、パケット構成情報に続いて、実データである“DATA”が1または複数のクロックサイクル分だけ伝送される。すなわち、パケットは、パケット構成情報と、それに続く実データとを含む。図3では、“DATA”が1クロックサイクルで伝送される場合を例示している。パケット構成情報は、“CODE”“ID”“LNG”の各情報を含む。
【0044】
“CODE”は、パケットの属性を示す制御コードである。本実施の形態では、“CODE”の値が16進数で“FF”以外であるパケットを“一般パケット”と呼ぶ。また、後述するように、制御コードの値が“FF”であるパケットを“バス制御パケット”と呼ぶ。
【0045】
“ID”は、パケットの通し番号を示す。“LNG”は、パケットのデータ長を示し、本実施の形態ではクロックサイクル数で表される。なお、データバスにおける“CODE”“ID”“LNG”以外のバスは、オプション領域である“Reserve”とされる。
【0046】
図4は、バス制御パケットの構成例を示す図である。
バス制御パケットは、例えば、1クロックサイクルで伝送され、前述の“CODE”“ID”“LNG”を含み、“CODE”の値が16進数で“FF”とされるとともに、“Reserve”の領域の一部に“CTL”が格納されたものである。本実施の形態では、“CTL”は1ビットのバス反転情報であり、値が“1”のとき、後続のパケットの全ビットが反転されることを示し、“0”のとき、後続のパケットの全ビットが反転されないことを示す。
【0047】
図2に示したシステム構成において、バス制御パケットは、バスI/F104,204のうち送信側の回路において生成され、接続バス300に送出される。“CTL”の値を“1”としたバス制御パケットを送出した送信側のバスI/Fは、後続のパケットを接続バス300に送出する際に、パケット内の全ビットを反転して送出する。また、バス制御パケットが受信側のバスI/Fに送信されることで、受信側のバスI/Fに対して、後続のパケットの全ビットが反転されていることが通知される。通知を受けた受信側のバスI/Fは、後続の受信パケットの全ビットを反転し、反転した信号を基にエラー検出を行う。バス制御パケットが送出された後の状態では、情報処理装置100と情報処理装置200との間のデータ伝送が実行されるとともに、受信側のバスI/Fにおいてバスの故障診断が実行される。
【0048】
なお、本実施の形態では、例として、バス制御パケットは1クロックサイクルで伝送される。この場合、バス制御パケット内の“LNG”の値は“1”とされる。しかしながら、バス制御パケットは、複数のクロックサイクルで伝送されてもよい。この場合、バス制御パケット内の“LNG”には、バス制御パケットが伝送されるクロックサイクル数が設定される。
【0049】
次に、情報処理装置100から情報処理装置200に対して接続バス300を通じてデータを送信する場合を想定し、このデータ送信の際に実行されるバスの故障診断処理のためにバスI/F104,204がそれぞれ備える機能について説明する。
【0050】
図5は、送信側のバスI/Fの内部構成を示す図である。
情報処理装置100内のバスI/F104は、パケット生成回路110、バス調停回路120、出力回路130、エラー検出回路140、パケット解析回路150およびバス反転回路160を備えている。
【0051】
パケット生成回路110は、前述のバス制御パケットを生成して、バス調停回路120に出力する。パケット生成回路110は、レジスタ設定部111、パケット制御レジスタ112、フォーマット変換部113およびECC生成部114を備えている。
【0052】
ここで、図6は、パケット制御レジスタに設定される情報の例を示す図である。
パケット制御レジスタ112には、例えば、それぞれ1ビットの情報である“V”と“CTL”とが設定される。“V”は、バス制御パケットを生成するか否かを指示するための情報であり、バス制御パケットを生成しない状態では“0”が設定され、バス制御パケットを生成する場合に“1”が設定される。“CTL”は、接続バス300の全ビットを反転させるか否かを指示する情報であり、全ビットを反転させる場合には“1”が設定され、全ビットを反転させない場合には“0”が設定される。パケット制御レジスタ112内の“CTL”の値は、出力されるバス制御パケットの“CTL”に設定される。
【0053】
以下、図5に戻って説明する。
レジスタ設定部111は、例えば、管理者による情報処理装置100に対する入力操作に応じて、パケット制御レジスタ112に対して値を設定する。バス制御パケットが生成される場合、レジスタ設定部111は、パケット制御レジスタ112の“V”に“1”を設定するとともに、“CTL”に“0”または“1”を設定する。なお、レジスタ設定部111は、例えば、接続バス300または他の通信線を通じて情報処理装置100に接続された他の情報処理装置からの要求に応じて、パケット制御レジスタ112に対して値を設定してもよい。
【0054】
フォーマット変換部113は、パケット制御レジスタ112の“V”に“1”が設定されると、バス制御パケットに設定すべき値を用意して、バス制御パケットを生成し、バス調停回路120に対してバス制御パケットの送信を要求する。フォーマット変換部113は、生成するバス制御パケットの“TAG”に“01”を設定するとともに、バス制御パケットの“CTL”にパケット制御レジスタ112の“CTL”の値を設定する。さらに、“TAG”の値とデータバスに伝送する値とをECC生成部114に通知し、エラー訂正符号の生成を要求する。
【0055】
ECC生成部114は、フォーマット変換部113から通知された値を基にエラー訂正符号を算出し、フォーマット変換部113に返信する。フォーマット変換部113は、ECC生成部114から返信されたエラー訂正符号をバス制御パケットの“ECC”に設定する。フォーマット変換部113は、バス調停回路120から送信の受付信号を受信すると、バス制御パケットをバス調停回路120に送信するとともに、パケット制御レジスタ112の“V”を“0”に更新する。
【0056】
バス調停回路120は、入力側に接続された複数のデバイスからパケットを受け付け、出力回路130に送信する。本実施の形態では、バス調停回路120は、バスコントローラ105から送信を要求された通常パケットと、パケット生成回路110から送信を要求されたバス制御パケットとを、選択的に出力回路130に出力する。
【0057】
出力回路130は、出力レジスタ131を備えており、バス調停回路120から出力された信号を出力レジスタ131に一旦保持した後、パケット解析回路150およびバス反転回路160に出力する。また、出力回路130に入力された信号はエラー検出回路140に転送される。
【0058】
エラー検出回路140は、出力回路130から入力された信号の値を基に2ビットまでのエラー検出処理を行う。エラー検出回路140は、1ビットエラーを検出した場合には、エラー訂正処理を行い、訂正後のデータを出力回路130に返信する。エラー訂正後のデータは、出力レジスタ131にセットされて出力される。また、エラー検出回路140は、2ビットエラーを検出した場合には、例えば、情報処理装置100のCPU101に対して訂正不能エラーの発生を通知し、バスコントローラ105とバスI/F104との間の通信を停止させる。
【0059】
パケット解析回路150は、出力回路130から出力されたパケットの内容に基づいて、バスの反転が指示されたか否かを判定する。パケット解析回路150は、パケットの内容を解析するフォーマット解析部151を備えている。パケット解析回路150は、出力回路130からバス制御パケットを受信すると、受信したパケット内の“CTL”の値を、バス反転信号としてバス反転回路160に出力する。
【0060】
バス反転回路160は、パケット解析回路150からのバス反転信号に基づき、必要に応じて、出力回路130から出力される出力信号の全ビットの極性を反転する。バス反転回路160は、バス反転情報レジスタ161と反転ゲート162とを備えている。
【0061】
バス反転情報レジスタ161は、パケット解析回路150のフォーマット解析部151から出力されたバス反転信号の値を保持する。反転ゲート162は、出力回路130から各バスに出力された信号とバス反転情報レジスタ161に保持された値とのEOR(排他的論理和)をとるゲート回路である。反転ゲート162は、バス反転情報レジスタ161の値が“0”のとき、出力回路130からの出力信号をそのまま接続バス300に送出する。一方、バス反転情報レジスタ161の値が“1”のとき、出力回路130からの全バスについての出力信号を反転して、接続バス300に送出する。
【0062】
なお、以上の図5に示したバスI/F104の機能は、情報処理装置200のバスI/F204も備えていてもよい。
図7は、パケット解析回路の動作手順を示すフローチャートである。
【0063】
[ステップS11]パケット解析回路150のフォーマット解析部151は、出力回路130から出力されるパケットを監視し、パケットを受信した場合に次のステップS12の処理を実行する。
【0064】
[ステップS12]フォーマット解析部151は、受信したパケットの内容を解析して、受信したパケットがバス制御パケットか否かを判定する。フォーマット解析部151は、受信したパケット内の“TAG”が“01”であり、なおかつ“CODE”の値が“FF”であった場合、バス制御パケットを受信したと判定し、ステップS13の処理を実行する。一方、受信したパケットがバス制御パケットではないと判定された場合には、ステップS11の処理が実行される。
【0065】
[ステップS13]フォーマット解析部151は、受信したバス制御パケットから“LNG”の値を抽出し、変数Lに設定する。なお、バス制御パケットが複数のクロックサイクルで受信される場合には、“LNG”の値は最初のクロックサイクルで受信されるものとする。
【0066】
[ステップS14]フォーマット解析部151は、バス制御パケットの末尾を受信したか否かを判定する。フォーマット解析部151は、変数Lから1を減算した値が0である場合に、バス制御パケットの末尾を受信したと判定して、ステップS16の処理を実行する。また、バス制御パケットの末尾が受信されていないと判定された場合には、ステップS15の処理が実行される。
【0067】
[ステップS15]フォーマット解析部151は、変数Lから1を減算する。そして、次のクロックサイクルにおいて、ステップS14の処理が再度実行される。
なお、バス制御パケットが1クロックサイクルで伝送される場合には、ステップS15の処理は実質的に実行されない。従って、制御パケットが1クロックサイクルで伝送される場合には、ステップS14の処理がスキップされて、ステップS13の次にステップS16が実行されてもよい。
【0068】
[ステップS16]フォーマット解析部151は、バス制御パケット内の“CTL”の値を、バス反転信号としてバス反転回路160に出力する。バス反転信号を受けたバス反転回路160は、バス反転情報レジスタ161の記憶値を、次のクロックサイクルでフォーマット解析部151から受けた“CTL”の値に更新する。この後、ステップS11の処理が実行され、次のパケットが監視される。
【0069】
以上の処理では、バス制御パケットがバス反転回路160の反転ゲート162から出力されるまでの間は、このバス制御パケットに基づくバス反転情報レジスタ161の更新は行われない。そして、バス制御パケットの次のパケットが反転ゲート162に入力される際に、バス反転情報レジスタ161の値が更新されて、反転ゲート162において反転動作を行うか否かが切り替えられる。
【0070】
図8は、送信側のバスI/Fの動作例を示すタイムチャートである。以下、図8を参照して、バス反転回路160の反転ゲート162が反転動作を行っていない状態から、反転動作を開始するまでのバスI/F104の動作について説明する。
【0071】
まず、レジスタ設定部111は、パケット制御レジスタ112の“V”に“1”を設定するとともに、“CTL”に“1”を設定する(タイミングT21)。フォーマット変換部113は、パケット制御レジスタ112の“V”が“1”になったことを検知すると、バス制御パケットを生成して、バス調停回路120に対してバス制御パケットの送信を要求する。このとき、生成されたバス制御パケットの“CTL”には、パケット制御レジスタ112の“CTL”と同じ“1”が設定される。
【0072】
バス調停回路120は、フォーマット変換部113に対して送信の受付信号を送信するとともに、フォーマット変換部113から出力されたバス制御パケットを、出力回路130の出力レジスタ131にセットする(タイミングT22)。このとき、受付信号を受信したフォーマット変換部113は、パケット制御レジスタ112の“V”の値を“0”に更新する。なお、ここでは、バス制御パケットは1クロックサイクルで伝送されるものとする。
【0073】
なお、図8の例では、フォーマット変換部113はタイミングT22において、パケット制御レジスタ112の“V”とともに“CTL”の値も“0”に更新する。ただし、“CTL”の値は、“V”が“1”とされるタイミングで所望の値に更新されるので、タイミングT22で“0”とされなくてもよい。
【0074】
出力レジスタ131にセットされたバス制御パケットは、パケット解析回路150およびバス反転回路160に出力される。バス反転回路160のバス反転情報レジスタ161に記憶された値は“0”であることから、反転ゲート162は、出力レジスタ131から出力されたバス制御パケットをそのまま接続バス300に送出する。
【0075】
パケット解析回路150のフォーマット解析部151は、“CTL”に“1”が設定されたバス制御パケットを受信すると、図7に示した処理に従い、バス反転回路160にバス反転情報の値を“1”に更新するよう指示する。これにより、バス反転情報レジスタ161の記憶値が、次のクロックサイクルにおいて“1”に更新される(タイミングT23)。このタイミング以降、反転ゲート162は、出力レジスタ131から出力される信号の全ビットを反転して、接続バス300に送出する。
【0076】
なお、反転ゲート162での反転動作を終了させる際には、次のような動作が実行される。まず、レジスタ設定部111は、パケット制御レジスタ112の“V”に“1”を設定するとともに、“CTL”に“0”を設定する。フォーマット変換部113は、パケット制御レジスタ112の“V”が“1”になったことを検知すると、“CTL”に“0”を設定したバス制御パケットを生成して、バス調停回路120に対してバス制御パケットの送信を要求する。
【0077】
バス調停回路120により、出力レジスタ131に“CTL”に“0”が設定されたバス制御パケットがセットされると、パケット解析回路150のフォーマット解析部151は、バス制御パケットが送出された次のクロックサイクルにおいて、バス反転情報レジスタ161の記憶値を、受信したバス制御パケットの“CTL”と同じ“0”に更新する。なお、“CTL”が“0”とされたバス制御パケットは、反転ゲート162により全ビットが反転された状態で、接続バス300に送出される。反転ゲート162は、バス反転情報レジスタ161の値が“0”に更新されると、それ以後に受信したパケットの全バスの信号を反転せずにそのまま接続バス300に送出する。
【0078】
次に、図9は、受信側のバスI/Fの内部構成例を示す図である。
情報処理装置200内のバスI/F204は、バス反転回路210、エラー検出回路220、受信回路230およびパケット解析回路240を備えている。
【0079】
バス反転回路210は、パケット解析回路240からのバス反転信号に基づき、必要に応じて、接続バス300を通じて受信した全バスについての信号の極性を反転する。バス反転回路210は、バス反転情報レジスタ211と反転ゲート212とを備えている。
【0080】
バス反転情報レジスタ211は、パケット解析回路240から出力されたバス反転信号の値を保持する。反転ゲート212は、接続バス300からの受信信号とバス反転情報レジスタ211に保持された値とのEORをとるゲート回路である。反転ゲート212は、バス反転情報レジスタ211の値が“0”のとき、接続バス300からの受信信号をそのまま受信回路230に出力する。一方、バス反転情報レジスタ211の値が“1”のとき、接続バス300からの全バスについての受信信号を反転して、受信回路230に出力する。なお、バス反転情報レジスタ211の値が“1”であることは、バスの故障診断処理中であることを示している。
【0081】
エラー検出回路220は、反転ゲート212から出力された信号、すなわち、“TAG”の信号、データバスの信号および“ECC”の信号を基に、2ビットまでのエラー検出処理を実行する。また、エラー検出回路220は、1ビットエラーを検出した場合には、エラー訂正処理を実行する。
【0082】
ここで、バスの故障診断処理中であるとき(例えば、バス反転情報レジスタ211の値が“1”であるとき)に、1ビットエラーを検出した場合、エラー検出回路220は、接続バス300のうち1つのバスに故障が発生したことを記述したエラー情報221を生成する。エラー情報221は、例えば、HDD203などの不揮発性記憶媒体に記憶される。なお、エラー情報221の内容は、例えば、情報処理装置200に接続された表示装置(図示せず)や、情報処理装置200に接続された他の装置を通じて、管理者に通知されてもよい。
【0083】
また、エラー検出回路220は、2ビットエラーを検出した場合には、例えば、情報処理装置200のCPU201に対して訂正不能エラーの発生を通知し、バスコントローラ205とバスI/F204との間の通信を停止させる。
【0084】
受信回路230は、受信レジスタ231を備えており、エラー検出回路220から出力された1クロックサイクル分の信号を受信レジスタ231に一旦保持した後、情報処理装置200内のバスコントローラ205に出力する。
【0085】
パケット解析回路240は、エラー検出回路220から出力されたパケットの内容に基づいて、バスの反転が指示されたか否かを判定する。パケット解析回路240は、パケットの内容を解析するフォーマット解析部241を備えている。パケット解析回路240は、エラー検出回路220からバス制御パケットを受信すると、受信パケット内の“CTL”の値を、バス反転信号としてバス反転回路210内のバス反転情報レジスタ211にセットする。
【0086】
なお、受信回路230は、例えば、バス反転回路210の前段に配置されてもよい。ただし、この場合でも、エラー検出回路220は、バス反転回路210からの出力信号を基にエラー検出および訂正の各処理を実行できる位置に配置される。
【0087】
また、以上の図9に示したバスI/F204の機能は、情報処理装置100のバスI/F104も備えていてもよい。
図10は、パケット解析回路の動作手順を示すフローチャートである。
【0088】
[ステップS31]パケット解析回路240のフォーマット解析部241は、エラー検出回路220から出力されるパケットを監視し、パケットを受信した場合に次のステップS32の処理を実行する。
【0089】
[ステップS32]フォーマット解析部241は、受信したパケットの内容を解析して、受信したパケットがバス制御パケットか否かを判定する。フォーマット解析部241は、受信したパケット内の“TAG”が“01”であり、なおかつ“CODE”の値が“FF”であった場合、バス制御パケットを受信したと判定し、ステップS33の処理を実行する。一方、受信したパケットがバス制御パケットではないと判定された場合には、ステップS31の処理が実行される。
【0090】
[ステップS33]フォーマット解析部241は、受信したバス制御パケットから“LNG”の値を抽出し、変数Lに設定する。なお、バス制御パケットが複数のクロックサイクルで受信される場合には、“LNG”の値は最初のクロックサイクルで受信されるものとする。
【0091】
[ステップS34]フォーマット解析部241は、バス制御パケットの末尾を受信したか否かを判定する。フォーマット解析部241は、変数Lから1を減算した値が0である場合に、バス制御パケットの末尾を受信したと判定して、ステップS36の処理を実行する。また、バス制御パケットの末尾が受信されていないと判定された場合には、ステップS35の処理が実行される。
【0092】
[ステップS35]フォーマット解析部241は、変数Lから1を減算する。そして、次のクロックサイクルにおいて、ステップS34の処理が再度実行される。
なお、送信側での処理と同様に、バス制御パケットが1クロックサイクルで伝送される場合には、ステップS35の処理は実行されない。従って、この場合には、ステップS33の次にステップS36が実行されてもよい。
【0093】
[ステップS36]フォーマット解析部241は、バス制御パケット内の“CTL”の値を、バス反転信号としてバス反転回路210に更新を指示する。更新指示を受けたバス反転回路210は、バス反転情報レジスタ211の記憶値を、次のクロックサイクルで“CTL”の値に更新する。この後、ステップS31の処理が実行され、次のパケットが待機される。
【0094】
以上の処理では、バス制御パケットがバス反転回路210の反転ゲート212を通過している間は、このバス制御パケットに基づくバス反転情報レジスタ211の更新は行われない。そして、バス制御パケットの次のパケットが反転ゲート212に入力される際に、バス反転情報レジスタ211の値が更新されて、反転ゲート212において反転動作を行うか否かが切り替えられる。
【0095】
図11は、受信側のバスI/Fの動作例を示すタイムチャートである。以下、図11を参照して、バス反転回路210の反転ゲート212が反転動作を行っていない状態から、反転動作を開始するまでのバスI/F204の動作について説明する。
【0096】
バス反転情報レジスタ211の記憶値が“0”の場合、反転ゲート212は接続バス300からの受信信号を反転せず、そのままエラー検出回路220に出力する。この状態において、接続バス300からバス制御パケットを受信すると、バス制御パケットは反転ゲート212およびエラー検出回路220を通過して、受信回路230およびパケット解析回路240に出力される(タイミングT41)。
【0097】
パケット解析回路240のフォーマット解析部241は、“CTL”に“1”が設定されたバス制御パケットを受信すると、図10に示した処理に従い、バス反転回路210にバス反転情報の値を“1”に更新するよう指示する。これにより、バス反転情報レジスタ211の記憶値が、次のクロックサイクルにおいて“1”に更新される(タイミングT42)。
【0098】
このタイミング以降、接続バス300からバス反転回路210に入力される信号は、すべてのバスについて元の信号の値を反転した信号となる。そして、反転ゲート212は、接続バス300から受信した全バスについての信号を反転して、エラー検出回路220を通じて受信回路230およびパケット解析回路240に出力する。従って、受信回路230およびパケット解析回路240は、接続バス300からの受信信号が元の信号を反転した信号となっていても、各ビットの値を元に戻した信号を受信できる。
【0099】
ここで、接続バス300に元の信号の値を反転した信号が伝送されている状態では、接続バス300のうち1つのバスに故障が発生した場合、エラー検出回路220により1ビットエラーが検出される。
【0100】
例えば、ある1つのバスにおいて、元の送信信号の値が“0”であるとき、バスには反転された値である“1”が伝送される。しかし、そのバスが故障していた場合、バスI/F204は故障したバスからの受信信号を“0”と認識し、エラー検出回路220には、受信した信号の値を反転した“1”が入力される。このため、エラー検出回路220は、故障したバスからの受信信号をエラーと判定する。このような判定処理では、例えば、故障したバスが信号送信に使用されていないなど、故障診断期間中にそのバスに対する元の信号が“0”のまま変化しない場合でも、バスの故障を検出できる。
【0101】
また、エラー検出回路220は、エラーの発生したバスの位置を特定してエラー情報221に記述するとともに、エラー訂正を行って、エラー訂正後の受信信号を受信回路230およびパケット解析回路240に出力する。このため、バスI/F204は、接続バス300のうち1つのバスに故障が発生した場合でも、エラー訂正を行うことで通常の信号伝送処理を続行可能であるとともに、故障の発生したバスの位置を特定することができる。
【0102】
なお、バスI/F204においては、反転動作を実行中の反転ゲート212から、“CTL”の値が“0”とされたバス制御パケットが出力されると、フォーマット解析部241の処理によりバス反転情報レジスタ211の記憶値が“0”に更新される。この更新処理に応じて、反転ゲート212は、全ビットが反転されたバス制御パケットの受信終了後に反転動作を停止して、それ以後の受信信号を反転することなく、そのままエラー検出回路220に出力する。
【0103】
以上説明した第2の実施の形態では、送信側のバスI/F104に、接続バス300のすべてのバスの信号を反転する機能を設けた。また、受信側のバスI/F204に、すべてのバスの受信信号を反転する機能と、反転後の受信信号を基にエラー検出および訂正を行う機能とを設けた。このような構成において、接続バス300に元の信号を反転した信号を伝送させることにより、通常の信号伝送処理を続行しながら、接続バス300の1つのバスにおける故障の発生を検出することができる。
【0104】
また、通常の信号伝送処理を続行しながらバスの故障診断動作を実行できることから、例えば、故障診断動作のための専用の送信データを生成する必要がなく、このような送信データを生成するためのハードウェアを送信側に搭載する必要もない。
【0105】
さらに、送信側のバスI/F104からバス制御パケットを送出することで、バスの故障診断動作を任意の期間だけ実行できるようになる。また、バス制御パケットを用いたことにより、例えば、受信側のバスI/F204に対して、バスの故障診断動作の開始を通知するための別の通信線などを設ける必要がなくなるので、システム構成の変更を小規模に留めることができる。
【0106】
〔第3の実施の形態〕
第3の実施の形態では、第2の実施の形態に係る情報伝送システムに、接続バス300に送出する信号のうち任意のバスの信号のみを反転させる機能を付加したシステムを例示する。
【0107】
図12は、第3の実施の形態に係る情報伝送システムの構成を示す図である。なお、図12では、図2に示した構成要素に対応する構成要素については同じ符号を付して示し、その説明を省略する。
【0108】
本実施の形態に係る情報伝送システムは、図12に示すように、情報処理装置100aと情報処理装置200aとの間で接続バス300を通じてデータ送受信されるシステムである。情報処理装置100a,200aの基本的なハードウェア構成は、ともに第2の実施の形態の情報処理装置100,200と同様である。
【0109】
ただし、情報処理装置100aを送信側としたとき、バスI/F104aは、接続バス300の全バスに送出する信号を反転する機能に加えて、任意のバスに送出する信号のみを反転する機能も備えている。また、受信側のバスI/F204aは、接続バス300のうち全バスから受信した信号を反転する機能に加えて、接続バス300を通じて受信した信号のうち任意のバスの信号のみを反転する機能も備えている。さらに、バスの信号反転動作を、受信側または送信側の一方でのみ行うことも可能になっている。
【0110】
接続バス300を通じて伝送される通常パケットの構成は、図3に示した通りである。また、本実施の形態でも、接続バス300における信号反転動作を制御するために、バス制御パケットが使用される。バス制御パケットは、バスI/F104a,204aのうち送信側の回路において生成され、接続バス300に送出される。
【0111】
図13は、第3の実施の形態で使用されるバス制御パケットの構成例を示す図である。
本実施の形態では、例として、2クロックサイクルで1つのバス制御パケットが伝送される。最初のクロックサイクルでは、図13の上段に示すように、データバスにおいて“CODE”、“ID”、“LNG”、“E”、“D”および“R”が伝送される。そして、次のクロックサイクルでは、図13の下段に示すように、データバスにおいて“CTL’”が伝送される。
【0112】
第2の実施の形態と同様に、“CODE”はパケットの属性を示し、“ID”はパケットの通し番号を示し、“LNG”はパケットの長さを示す。
“E”は、信号反転の対象とするバスの領域を指定する2ビットの情報である。“E”の値が“00”のとき、データバスを信号反転の領域とすることを示し、“01”のとき、“TAG”および“ECC”を伝送するバスを信号反転の領域とすることを示す。また、“1x”(xは0または1)のとき、すべてのバスを信号反転の領域とすることを示す。
【0113】
“D”は、送信側で信号反転動作を行うか否かを指定する1ビットの情報であり、値が“0”のとき、送信側で信号反転動作を行わないことを示し、“1”のとき、送信側で信号反転動作を行うことを示す。“R”は、受信側で信号反転動作を行うか否かを指定する1ビットの情報であり、値が“0”のとき、受信側で信号反転動作を行わないことを示し、“1”のとき、受信側で信号反転動作を行うことを示す。“D”および“R”を用いて、信号反転動作を実行させるか否かを受信側および送信側のそれぞれに対して個別に指示できるようにしたことで、様々なパターンのバス故障診断動作を実行できるようになる。
【0114】
“CTL’”は、信号を反転するバスの位置を指定する情報である。図13の例では、“CTL’”はデータバスの数と同じだけのビット数を有し、信号を反転するバスに対応するビットの値が“1”とされる。信号を反転するバスの位置は、“E”と“CTL’”との組み合わせにより指定される。“E”が“00”のとき、“CTL’”の各ビットがデータバスの各バスに対応付けられ、データバスの反転すべき位置に対応した“CTL’”のビットに“1”が設定される。“E”が“01”のとき、“CTL’”のうちの例えば下位領域の各ビットが“TAG”および“ECC”が伝送されるバスのそれぞれに対応付けられ、“TAG”および“ECC”の反転すべき位置に対応した“CTL’”のビットに“1”が設定される。“E”が“1x”のとき、“CTL’”の値は、例えば、全ビットが“0”あるいは全ビットが“1”の2つの値をとり、前者の場合、すべてのバスの信号を反転しないことが指示され、後者の場合、すべてのバスの信号を反転することが指示される。
【0115】
次に、情報処理装置100aから情報処理装置200aに対して接続バス300を通じてデータを送信する場合を想定し、このデータ送信の際に実行されるバスの故障診断処理のためにバスI/F104a,204aがそれぞれ備える機能について説明する。
【0116】
図14は、送信側のバスI/Fの内部構成を示す図である。なお、図14では、図5に示した構成要素に対応する構成要素については同じ符号を付して示している。
情報処理装置100a内のバスI/F104aは、パケット生成回路110a、バス調停回路120、出力回路130、エラー検出回路140、セレクタ141、パケット解析回路150aおよびバス反転回路160aを備えている。
【0117】
パケット生成回路110aは、図13に示すバス制御パケットを生成して、バス調停回路120に出力する。パケット生成回路110aは、レジスタ設定部111a、パケット制御レジスタ112a、フォーマット変換部113aおよびECC生成部114を備えている。
【0118】
ここで、図15は、パケット制御レジスタに設定される情報の例を示す図である。
パケット制御レジスタ112aには、 “V”、“CTL’”、“E”、“D”および“R”の各情報が設定される。“V”は、第2の実施の形態と同様に、バス制御パケットを生成するか否かを指示するための情報であり、バス制御パケットを生成しない状態では“0”が設定され、バス制御パケットを生成する場合に“1”が設定される。
【0119】
“CTL’”は、信号を反転するバスの位置を指定する情報である。“E”は、信号反転の対象とするバスの領域を指定する2ビットの情報である。“D”は、送信側で信号反転動作を行うか否かを指定する1ビットの情報である。“R”は、受信側で信号反転動作を行うか否かを指定する1ビットの情報である。バス制御パケットが出力される際には、パケット制御レジスタ112aの“CTL’”、“E”、“D”および“R”に設定された情報が、バス制御パケットの“CTL’”、“E”、“D”および“R”にそれぞれ設定される。
【0120】
以下、図14に戻って説明する。
レジスタ設定部111aは、例えば、管理者による情報処理装置100aに対する入力操作などに応じて、パケット制御レジスタ112aに対して値を設定する。バス制御パケットを生成する場合、レジスタ設定部111aは、パケット制御レジスタ112aの“V”に“1”を設定することで、バス制御パケットの送信を要求する。また、パケット制御レジスタ112aの“CTL’”、“E”、“D”および“R”のそれぞれに所望の値を設定することで、信号反転動作を実行させる装置とバスの位置とを指定する。
【0121】
フォーマット変換部113aは、パケット制御レジスタ112aの“V”に“1”が設定されると、バス制御パケットに設定すべき値を用意して、バス制御パケットを生成し、バス調停回路120に対してバス制御パケットの送信を要求する。フォーマット変換部113aは、バス制御パケットの2クロックサイクル分の“TAG”にそれぞれ“01”を設定する。これとともに、バス制御パケットの“CTL’”、“E”、“D”および“R”にパケット制御レジスタ112aの“CTL’”、“E”、“D”および“R”の値をそれぞれ設定する。さらに、各クロックサイクルの“TAG”の値とデータバスに伝送する値とをECC生成部114に通知し、エラー訂正符号の生成を要求する。
【0122】
ECC生成部114は、フォーマット変換部113aから通知された値を基にエラー訂正符号を算出し、フォーマット変換部113aに返信する。フォーマット変換部113aは、ECC生成部114から返信されたエラー訂正符号をバス制御パケットの“ECC”に設定する。フォーマット変換部113aは、バス調停回路120から送信の受付信号を受信すると、バス制御パケットを送信する。
【0123】
バス調停回路120は、バスコントローラ105から送信を要求された通常パケットと、パケット生成回路110aから送信を要求されたバス制御パケットとを、選択的に出力する。バス調停回路120からの出力信号は、セレクタ141、パケット解析回路150aおよびバス反転回路160aに出力される。
【0124】
パケット解析回路150aは、バス調停回路120から出力されたパケットの内容に基づいて、バス反転回路160aにおける信号反転動作を制御する。パケット解析回路150aは、パケットの内容を解析するフォーマット解析部151aと、バス制御パケットから抽出された情報を一時的に保持するコピーレジスタ152とを備えている。
【0125】
フォーマット解析部151aは、バス調停回路120からバス制御パケットを受信したとき、バス制御パケット内の“D”が“1”である場合には、“E”および“CTL’”の各値に基づいて、バス反転回路160aに対して、信号を反転するバスの位置を指定するバス反転信号を出力する。バス反転信号は、例えば、接続バス300のバスの数と同じビット数を有し、バス反転信号のそれぞれのビットが1つのバスに対応している。そして、信号反転動作を実行させるバスに対応するビットが“1”とされる。
【0126】
また、フォーマット解析部151aは、バス制御パケットの末尾を検出すると、パケット制御レジスタ112aの“V”を“0”に更新する。
コピーレジスタ152には、フォーマット解析部151aにより、バス制御パケットの前半部から抽出された“E”および“R”の各値がセットされる。コピーレジスタ152は、セットされた値を1クロックサイクルの間保持する。このコピーレジスタ152にセットされた値は、フォーマット解析部241aの処理において参照される。
【0127】
なお、パケット解析回路150aの詳細な動作手順については、後の図16において説明する。
バス反転回路160aは、パケット解析回路150aからのバス反転信号に基づき、バス調停回路120からの入力信号のうち指定されたバスの信号の極性を反転して出力する。バス反転回路160aは、バス反転情報レジスタ161aと反転ゲート162aとを備えている。
【0128】
バス反転情報レジスタ161aは、パケット解析回路150aからのバス反転信号の各ビットの値を保持する。そして、バス反転情報レジスタ161aの各ビットは、バス調停回路120から反転ゲート162aに入力されるバスのそれぞれに対応している。
【0129】
反転ゲート162aは、バス調停回路120からの各バスの信号と、バス反転情報レジスタ161aの各ビットの値とのEORをとるゲート回路である。反転ゲート162aは、バス反転情報レジスタ161aに“1”が設定されたビットに対応するバスからの入力信号の極性を反転して出力する。
【0130】
また、バス反転回路160aは、セレクタ141の入力チャネルの切り替えを制御する選択信号を出力する。この選択信号は、バス反転情報レジスタ161aの全ビットが“0”または全ビットが“1”の場合に“1”が出力される。
【0131】
出力回路130は、出力レジスタ131を備えており、バス反転回路160aの反転ゲート162aから出力された信号を出力レジスタ131に一旦保持した後、接続バス300に送出する。
【0132】
セレクタ141には、バス調停回路120からの出力信号と、バス反転回路160aの反転ゲート162aからの出力信号とが入力され、セレクタ141は、これらの入力信号を、エラー検出回路140に対して選択的に出力する。セレクタ141は、バス反転回路160aから選択信号“0”が入力された場合には、反転ゲート162aからの出力信号を選択し、選択信号“1”が入力されていた場合には、バス調停回路120からの出力信号を選択する。
【0133】
この切り替え動作を行うことにより、バス反転回路160aの反転ゲート162aで全バスの信号の反転/非反転が切り替えられる状態では、バス調停回路120からの出力信号がエラー検出回路140に入力される。この状態では、反転ゲート162aで反転される前の状態のパケットを基にエラー検出が実行されるようになる。
【0134】
一方、反転ゲート162aにおいて一部のバスの信号の反転/非反転が切り替えられる状態では、反転ゲート162aからの出力信号がエラー検出回路140に入力される。この状態では、例えば、反転ゲート162aにおいて所望のバスの信号を反転させてエラー検出回路140にパケットを入力し、反転ゲート162aより前のバスにおける故障の有無を検証する動作などを実現できる。
【0135】
エラー検出回路140は、セレクタ141により選択された入力信号の値を基に2ビットまでのエラー検出処理を行う。エラー検出回路140は、エラーが検出された場合、例えば、情報処理装置100aのCPU101に対してエラーの発生を通知し、バスコントローラ105とバスI/F104aとの間の通信を停止させる。
【0136】
また、エラー検出回路140は、1ビットエラーを検出した場合には、エラー訂正処理を行ってもよい。バス調停回路120からの出力信号を基にエラー訂正処理を行った場合には、エラー訂正後の信号をパケット解析回路150aおよびバス反転回路160aに出力する。また、バス反転回路160aからの出力信号を基にエラー訂正処理を行った場合には、エラー訂正後の信号を出力回路130の出力レジスタ131に設定する。
【0137】
なお、以上の図14に示したバスI/F104aの機能は、情報処理装置200aのバスI/F204aも備えていてもよい。
図16は、パケット解析回路の動作手順を示すフローチャートである。
【0138】
[ステップS51]パケット解析回路150aのフォーマット解析部151aは、バス調停回路120から出力されるパケットを監視し、パケットを受信した場合に次のステップS52の処理を実行する。
【0139】
[ステップS52]フォーマット解析部151aは、受信したパケットの内容を解析して、受信したパケットがバス制御パケットか否かを判定する。フォーマット解析部151aは、受信したパケット内の“TAG”が“01”であり、なおかつ“CODE”の値が“FF”であった場合、バス制御パケットの前半部を受信したと判定し、ステップS53の処理を実行する。一方、受信したパケットがバス制御パケットではないと判定された場合には、ステップS51の処理が実行される。
【0140】
[ステップS53]フォーマット解析部151aは、受信したバス制御パケットから“D”の値を抽出する。“D”が“1”の場合はステップS54の処理が実行され、“D”が“0”の場合はステップS51の処理が実行される。
【0141】
[ステップS54]フォーマット解析部151aは、受信したバス制御パケット内の“E”および“D”の各値を、コピーレジスタ152にセットする。コピーレジスタ152は、セットされた値を、例えば自律的に、1クロックサイクルの間保持する。なお、例えば、後のステップS57の実行後に、フォーマット解析部151aによりコピーレジスタ152の保持値がクリアされるようにしてもよい。
【0142】
[ステップS55]フォーマット解析部151aは、ステップS51でパケットの受信を開始したクロックサイクルの次のクロックサイクル、すなわち、バス制御パケットの後半部を受信したクロックサイクルにおいて、コピーレジスタ152を参照する。このとき、コピーレジスタ152の全ビットが“0”でないことを検知すると、フォーマット解析部151aは、現在受信中の信号がバス制御パケットの末尾であると判定する。ここでは、コピーレジスタ152において、少なくとも“D”の値“1”が保持されていた場合に、受信中の信号がバス制御パケットの末尾であると判定される。
【0143】
なお、バス制御パケットの末尾の受信を判定する方法としては、この他に例えば、バス制御パケット内の“LNG”の値を基に判定する方法も考えられる。この場合、フォーマット解析部151aは、例えば、ステップS52においてバス制御パケットの前半部を受信したと判定すると、クロックサイクルのカウント動作を開始する。そして、カウント数が“LNG”の値に達したときに、バス制御パケットの末尾を受信したと判定する。
【0144】
[ステップS56]フォーマット解析部151aは、コピーレジスタ152に保持された“E”の値と、ステップS55以降にバス制御パケットの後半部から抽出した“CTL’”の値とを基に、バス反転回路160aに対してバス反転信号を出力する。出力されたバス反転信号により、バス反転情報レジスタ161aの記憶値が更新される。
【0145】
例えば、“E”が“1x”の場合、“CTL’”の値に応じてバス反転信号の全ビットが“0”または“1”とされる。また、“E”が“00”の場合、バス反転信号中のデータバスに対応するビットのうち、“CTL’”の値により信号反転動作が指示されたビットが“1”とされる。また、“E”が“01”の場合、バス反転信号中の“TAG”および“ECC”のバスに対応するビットのうち、“CTL’”の値により信号反転動作が指示されたビットが“1”とされる。
【0146】
なお、“E”がどの値の場合でも、“CTL’”の全ビットが“0”とされて、バス反転信号の全ビットが“0”となることで、反転ゲート162aでの信号反転動作が終了される。すなわち、“D”に“1”が設定され、“CTL’”の全ビットに“0”が設定されたバス制御パケットは、送信側における信号反転動作の終了を指示するパケットとなる。
【0147】
[ステップS57]フォーマット解析部151aは、パケット制御レジスタ112aの“V”の値を“0”に更新する。この後、ステップS51の処理が実行され、次のパケットが待機される。
【0148】
図17は、送信側のバスI/Fの動作例を示すタイムチャートである。
図17のタイミングT71の直前では、バス反転回路160aの反転ゲート162aは、すべてのバスについて反転動作を行っていないものとする。すなわち、このとき、バス反転情報レジスタ161aの全ビットが“0”となっている。
【0149】
この状態から、まず、レジスタ設定部111aは、パケット制御レジスタ112aの“V”に“1”を設定するとともに、“E”および“CTL’”に所望の値を設定する(タイミングT71)。ここでは例として、パケット制御レジスタ112aの“D”にも“1”が設定されるものとする。
【0150】
フォーマット変換部113aは、パケット制御レジスタ112aの“V”が“1”になったことを検知すると、バス制御パケットを生成して、バス調停回路120に対してバス制御パケットの送信を要求する。このとき、生成されたバス制御パケットの“CTL’”には、パケット制御レジスタ112aに設定された“CTL’”と同じ値が設定される。
【0151】
バス調停回路120は、フォーマット変換部113aからの送信要求を受け付けると、フォーマット変換部113aから出力されたバス制御パケットを、セレクタ141、パケット解析回路150aおよびバス反転回路160aに対して出力する(タイミングT72)。本実施の形態では、バス制御パケットは、2クロックサイクルの期間(タイミングT72〜T74)に出力される。
【0152】
パケット解析回路150aのフォーマット解析部151aは、受信したバス制御パケットの前半部から“E”および“D”の値を抽出して、コピーレジスタ152にセットする(タイミングT73)。コピーレジスタ152にセットされた値は、1クロックサイクルの期間(タイミングT73〜T74)保持される。
【0153】
フォーマット解析部151aは、バス制御パケットの後半部を受信したとき、コピーレジスタ152の少なくとも“D”に“1”がセットされていることから、バス制御パケットの末尾を受信したと判定する。そして、フォーマット解析部151aは、受信したバス制御パケットの後半部から抽出した“CTL’”と、コピーレジスタ152にセットされた“E”の値とに基づくバス反転信号を出力する。フォーマット解析部151aが出力したバス反転信号の値により、バス反転情報レジスタ161aの値が更新される(タイミングT74)。図17では、バス反転情報レジスタ161a内の反転対象となる1ビットが、タイミングT74で“0”から“1”に変化したことを示している。
【0154】
なお、このとき、フォーマット解析部151aは、パケット制御レジスタ112aの“V”を“0”に更新する。
ところで、バス制御パケットの後半部が反転ゲート162aから出力されるまでの間(タイミングT72,T73)、バス反転情報レジスタ161aの全ビットが“0”である。このため、バス制御パケットは、各ビットの値が反転されることなくそのまま出力回路130に出力される。そして、バス反転情報レジスタ161aが更新されると、反転ゲート162aは、バス反転情報レジスタ161aにおいて“1”とされたビットに対応するバスの信号を反転して出力する(タイミングT74)。これにより、バス制御パケットに続いて送信されるパケットの信号のうち、反転を指示されたビット位置のバス信号が、反転された状態となる。
【0155】
以上のバスI/F104aでは、反転ゲート162aでの信号反転動作を切り替えるためにバス調停回路120からバス制御パケットが出力されたとき、バス制御パケットが反転ゲート162aを通過した後に、バス反転情報レジスタ161aが更新される。従って、反転ゲート162aでは、バス制御パケットが反転ゲート162aを通過した後に、通過したバス制御パケットで指示された動作切り替えが実行される。
【0156】
次に、図18は、受信側のバスI/Fの内部構成例を示す図である。なお、図18では、図9に示した構成要素に対応する構成要素については同じ符号を付して示している。
情報処理装置200a内のバスI/F204aは、バス反転回路210a、エラー検出回路220a、受信回路230およびパケット解析回路240aを備えている。
【0157】
バス反転回路210aは、パケット解析回路240aからのバス反転信号に基づき、接続バス300を通じて受信した信号のうち、バス制御パケットにより指示されたバスの信号の極性を反転する。バス反転回路210aは、バス反転情報レジスタ211aと反転ゲート212aとを備えている。
【0158】
バス反転情報レジスタ211aおよび反転ゲート212aは、図14に示したバス反転情報レジスタ161aおよび反転ゲート162aとそれぞれ同様の構成を有している。すなわち、バス反転情報レジスタ211aは、接続バス300のバスの数と同じビット数を有し、パケット解析回路240aから出力されたバス反転信号の値を保持する。反転ゲート212aは、接続バス300の各バスの信号と、バス反転情報レジスタ211aの各ビットの値とのEORをとるゲート回路である。反転ゲート212aは、バス反転情報レジスタ211aに“1”が設定されたビットに対応するバスからの入力信号の極性を反転して出力する。
【0159】
エラー検出回路220aは、反転ゲート212aから出力された信号、すなわち、“TAG”の信号、データバスの信号および“ECC”の信号を基に、2ビットまでのエラー検出処理を実行する。また、エラー検出回路220aは、1ビットエラーを検出した場合には、エラー訂正処理を実行する。
【0160】
また、エラー検出回路220aは、エラーを検出すると、エラーを検出したことを記述したエラー情報221aを生成する。エラー情報221aには、例えば、エラー検出時点でバス反転情報レジスタ211aに保持されていた信号が記述される。これにより、どのバスの信号を反転させていたときにエラーが検出されたかが識別できるようになる。なお、エラー情報221aは、例えば、HDD203などの不揮発性記憶媒体に記憶される。また、エラー情報221aの内容は、例えば、情報処理装置200aに接続された表示装置(図示せず)や、情報処理装置200aに接続された他の装置を通じて、管理者に通知されてもよい。
【0161】
受信回路230は、受信レジスタ231を備えており、エラー検出回路220aから出力された1クロックサイクル分の信号を受信レジスタ231に一旦保持した後、情報処理装置200a内のバスコントローラ205に出力する。
【0162】
パケット解析回路240aは、エラー検出回路220aから出力されたパケットの内容に基づいて、バス反転回路210aにおける信号反転動作を制御する。パケット解析回路240aは、パケットの内容を解析するフォーマット解析部241aと、バス制御パケットから抽出された情報を一時的に保持するコピーレジスタ242とを備えている。
【0163】
フォーマット解析部241aは、エラー検出回路220aからバス制御パケットを受信したとき、バス制御パケット内の“R”が“1”である場合には、“E”および“CTL’”の各値に基づいて、バス反転回路210aに対して、信号を反転するバスの位置を指定するバス反転信号を出力する。バス反転信号は、送信側のバスI/F204aで使用されたバス反転信号と同様に、接続バス300のバスの数と同じビット数を有し、バス反転信号のそれぞれのビットが1つのバスに対応している。そして、信号反転動作を実行させるバスに対応するビットが“1”とされる。
【0164】
コピーレジスタ242には、フォーマット解析部241aにより、バス制御パケットの前半部から抽出された“E”および“R”の各値がセットされる。コピーレジスタ242は、セットされた値を1クロックサイクルの間保持する。このコピーレジスタ242にセットされた値は、フォーマット解析部241aの処理において参照されるが、コピーレジスタ242の値に基づくフォーマット解析部241aの詳細な処理手順については、後の図19において説明する。
【0165】
なお、受信回路230は、例えば、バス反転回路210aの前段に配置されてもよい。ただし、この場合でも、エラー検出回路220aは、バス反転回路210aからの出力信号を基にエラー検出および訂正の各処理を実行できる位置に配置される。
【0166】
また、以上の図18に示したバスI/F204aの機能は、情報処理装置100aのバスI/F104aも備えていてもよい。
図19は、パケット解析回路の動作手順を示すフローチャートである。
【0167】
[ステップS81]パケット解析回路240aのフォーマット解析部241aは、エラー検出回路220aから出力されるパケットを監視し、パケットを受信した場合に次のステップS82の処理を実行する。
【0168】
[ステップS82]フォーマット解析部241aは、受信したパケットの内容を解析して、受信したパケットがバス制御パケットか否かを判定する。フォーマット解析部241aは、受信したパケット内の“TAG”が“01”であり、なおかつ“CODE”の値が“FF”であった場合、バス制御パケットの前半部を受信したと判定し、ステップS83の処理を実行する。一方、受信したパケットがバス制御パケットではないと判定された場合には、ステップS81の処理が実行される。
【0169】
[ステップS83]フォーマット解析部241aは、受信したバス制御パケットから“R”の値を抽出する。“R”が“1”の場合はステップS84の処理が実行され、“R”が“0”の場合はステップS81の処理が実行される。
【0170】
[ステップS84]フォーマット解析部241aは、受信したバス制御パケット内の“E”および“R”の各値を、コピーレジスタ242にセットする。コピーレジスタ242は、セットされた値を、例えば自律的に、1クロックサイクルの間保持する。なお、例えば、後のステップS86の実行後に、フォーマット解析部241aによりコピーレジスタ242の保持値がクリアされるようにしてもよい。
【0171】
[ステップS85]フォーマット解析部241aは、ステップS81でパケットの受信を開始したクロックサイクルの次のクロックサイクル、すなわち、バス制御パケットの後半部を受信したサイクルにおいて、コピーレジスタ242を参照する。このとき、コピーレジスタ242の全ビットが“0”でないことを検知すると、フォーマット解析部241aは、現在受信中の信号がバス制御パケットの末尾であると判定する。例えば、コピーレジスタ242において、少なくとも“R”の値“1”が保持されていた場合に、受信中の信号がバス制御パケットの末尾であると判定される。
【0172】
なお、送信側と同様に、バス制御パケットの末尾の受信を判定する方法としては、この他に例えば、バス制御パケット内の“LNG”の値を基に判定する方法が採用されてもよい。
【0173】
[ステップS86]フォーマット解析部241aは、コピーレジスタ242に保持された“E”の値と、バス制御パケットの後半部から抽出した“CTL’”の値とを基に、バス反転回路210aに対してバス反転信号を出力する。出力されたバス反転信号により、バス反転情報レジスタ211aの記憶値が更新される。
【0174】
例えば、“E”が“1x”の場合、“CTL’”の値に応じて、バス反転信号の全ビットが“0”または“1”とされる。また、“E”が“00”の場合、バス反転信号中のデータバスに対応するビットのうち、“CTL’”の値により信号反転動作を指示されたビットが“1”とされる。また、“E”が“01”の場合、バス反転信号中の“TAG”および“ECC”のバスに対応するビットのうち、“CTL’”の値により信号反転動作を指示されたビットが“1”とされる。
【0175】
なお、“E”がどの値の場合でも、バス反転信号の全ビットが“0”とされることで、反転ゲート212aでの信号反転動作が終了される。すなわち、“R”に“1”が設定され、“CTL’”の全ビットに“0”が設定されたバス制御パケットは、受信側における信号反転動作の終了を指示するパケットとなる。
【0176】
この後、ステップS81の処理が実行され、次のパケットが監視される。
図20は、受信側のバスI/Fの動作例を示すタイムチャートである。
図20のタイミングT91の直前では、接続バス300を通じて送信された信号は、すべてのバスについて元の信号を反転したものではなく、かつ、バス反転回路210aの反転ゲート212aは、すべてのバスについて反転動作を行っていないものとする。このとき、バス反転情報レジスタ211aの全ビットが“0”となっている。
【0177】
この状態において、接続バス300からバス制御パケットの前半部が受信されると、バス制御パケットの前半部は反転ゲート212aおよびエラー検出回路220aを通過して、受信回路230およびパケット解析回路240aに出力される(タイミングT91)。
【0178】
ここで、受信したバス制御パケットの前半部では、“R”が“1”であったものとする。なお、前述の通り、バス制御パケットは2クロックサイクルで伝送される。パケット解析回路240aのフォーマット解析部241aは、受信したバス制御パケットの前半部から“E”および“R”の値を抽出して、コピーレジスタ242にセットする(タイミングT92)。コピーレジスタ242にセットされた値は、1クロックサイクルの期間(タイミングT92〜T93)保持される。
【0179】
フォーマット解析部241aは、バス制御パケットの後半部をエラー検出回路220aから受信したとき、コピーレジスタ242の少なくとも“R”に“1”に値がセットされていることから、バス制御パケットの末尾を受信したと判定する。そして、フォーマット解析部241aは、受信したバス制御パケットの後半部から抽出した“CTL’”と、コピーレジスタ242にセットされた“E”の値とに基づくバス反転信号を出力する。フォーマット解析部241aが出力したバス反転信号の値により、バス反転情報レジスタ211aの値が更新される(タイミングT93)。図20では、バス反転情報レジスタ211a内の反転対象となるビットが、タイミングT93で“0”から“1”に変化したことを示している。
【0180】
ところで、バス制御パケットの後半部が反転ゲート212aから出力されるまでの間(タイミングT91,T92)、バス反転情報レジスタ211aの全ビットが“0”である。このため、バス制御パケットは、各ビットの値が反転されることなくそのままエラー検出回路220aに出力される。そして、バス反転情報レジスタ211aが更新されると、反転ゲート212aは、バス反転情報レジスタ211aにおいて“1”とされたビットに対応するバスの信号を反転して出力する(タイミングT93)。これにより、バス制御パケットに続いて送信されるパケットの信号のうち、反転を指示されたビット位置のバス信号が、反転ゲート212aによって反転される。
【0181】
以上のバスI/F204aでは、反転ゲート212aでの信号反転動作の切り替えを指示するバス制御パケットが受信されたとき、バス制御パケットが反転ゲート212aを通過した後に、バス反転情報レジスタ211aが更新される。従って、反転ゲート212aでは、バス制御パケットが反転ゲート212aを通過した後に、通過したバス制御パケットによって指示された動作切り替えが実行される。
【0182】
以上説明した第3の実施の形態の情報伝送システムは、例えば、次の3通りのバス故障診断動作を実行可能である。
第1の動作例としては、バス制御パケット内の“E”を“1x”とし、“D”および“R”をともに“1”とした場合が挙げられる。この場合、例えば、バス制御パケット内の“CTL’”の全ビットを“1”とすることで、送信側のバスI/F104aの反転ゲート162aは、バス制御パケットを受信した後の全バス上の信号を反転する。これとともに、受信側のバスI/F204aの反転ゲート212aは、バス制御パケットを受信した後の全バス上の信号を反転して、極性を元に戻す。反転ゲート212aで反転された信号は、エラー検出回路220aに入力され、これにより接続バス300上のバスに故障が発生しているか否かが検証される。
【0183】
また、全バスの信号反転処理の開始後に例えば、“CTL’”の全ビットが“0”とされたバス制御パケットが出力されることで、送信側のバスI/F104aの反転ゲート162aは、バス制御パケットを出力した後に、全バスの信号反転動作を停止する。また、受信側のバスI/F204aの反転ゲート212aは、バス制御パケットを出力した後、全バス上の信号反転動作を停止する。
【0184】
すなわち、この第1の動作例では、第2の実施の形態と同様のバス故障診断動作が実行される。このバス故障診断動作では、1つのバスに故障が発生したとき、受信側のエラー検出回路220aは、1ビットエラーを検出してエラー訂正処理を実行するが、エラー訂正不能な2ビット以上のエラーを検出することはない。このため、通常の信号伝送処理を続行しながら、接続バス300の1つのバスにおける故障の発生を検出することができる。
【0185】
第2の動作例としては、バス制御パケット内の“E”を“00”または“01”とし、“D”を“0”、“R”を“1”とした場合が挙げられる。この場合、送信側のバスI/F104aの反転ゲート162aは、信号反転動作を行わず、受信側のバスI/F204aの反転ゲート212aのみが、信号反転動作を行う。
【0186】
このとき、例えば、バス制御パケット内の“CTL’”のビットのうち1ビットのみを“1”とすることで、受信側のバスI/F204aにおいて、受信信号のうち“CTL’”が示す1つのバスの信号のみ反転させた状態が作り出される。エラー検出回路220aにより、信号を反転したバスのみからエラーが検出された場合、そのバスが正常であることを判定できる。一方、エラー検出回路220aにより、エラーが検出されないか、あるいは2ビットエラーが検出された場合、信号を反転したバスが故障していることを判定できる。
【0187】
第3の動作例としては、バス制御パケット内の“E”を“00”または“01”とし、“D”を“1”、“R”を“0”とした場合が挙げられる。この場合、送信側のバスI/F104aの反転ゲート162aのみが、信号反転動作を行い、受信側のバスI/F204aの反転ゲート212aは、信号反転動作を行わない。
【0188】
このとき、例えば、バス制御パケット内の“CTL’”のビットのうち1ビットのみを“1”とすることで、接続バス300に送信される信号のうち“CTL’”が示す1つのバスの信号のみ反転させた状態が作り出される。受信側のバスI/F204aでは、エラー検出回路220aにより、信号を反転したバスからエラーが検出された場合、そのバスが正常であることを判定できる。一方、エラー検出回路220aにより、エラーが検出されないか、あるいは2ビットエラーが検出された場合、信号を反転したバスが故障していることを判定できる。
【0189】
また、送信側のバスI/F104aでは、反転ゲート162aからの出力信号を基にエラー検出回路140がエラー検出を行うことで、反転ゲート162aより前におけるバスの故障を診断することもできる。なお、反転ゲート162aより前のバスの故障診断を目的とする場合には、バス制御パケット内の“R”は“0”、“1”のどちらでもよい。
【0190】
ただし、上記の第2の動作例および第3の動作例では、信号を反転したバス以外のバスに故障が発生していた場合には2ビットエラーが検出されるため、通常運用時以外の期間においてバスの故障診断動作が実行されることが望ましい。
【0191】
なお、上記の第2の動作例および第3の動作例では、1つのバスのみ信号を反転したが、本実施の形態では、例えば、任意の複数のバスの信号を反転することも可能である。
また、他の動作例として、送信側と受信側の両方において、同じビットのバス信号を反転することで、反転したバスが故障しているか否かを受信側のエラー検出処理によって判定することもできる。ただし、この場合でも、受信側では2ビット以上のエラーが検出され得るため、通常運用時以外の期間においてバスの故障診断動作が実行されることが望ましい。
【0192】
このように、本実施の形態では、第2の実施の形態と同様のバス故障診断動作だけでなく、信号を反転するバスや信号を反転させる位置を任意に指定して様々なパターンのバス故障診断動作を実行することが可能である。
【0193】
なお、以上で説明した第2,第3の実施の形態では、情報処理装置間を接続するバスの故障診断動作を行う場合の例について説明した。しかし、上記各実施の形態における送信側のバスI/Fと受信側のバスI/Fとを1つの情報処理装置の内部に設け、この情報処理装置内のデバイス間を接続するバスの故障診断動作を行うようにしてもよい。
【0194】
以上の各実施の形態に関し、さらに以下の付記を開示する。
(付記1) 送信データと前記送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバスを通じて受信側デバイスに接続し、前記パラレルバスのすべてのバスに送信する信号を反転する信号反転部、
を有することを特徴とする情報処理装置。
【0195】
(付記2) 前記パラレルバスのすべてのバスからの受信信号を反転するように前記受信側デバイスに指示する反転指示情報と、前記反転指示情報に基づくエラー訂正符号とを前記パラレルバスに出力する指示情報出力部をさらに有し、
前記信号反転部は、前記反転指示情報が前記パラレルバスに出力された後に、前記パラレルバスのすべてのバスに送信される信号を反転する、
ことを特徴とする付記1記載の情報処理装置。
【0196】
(付記3) 前記指示情報出力部は、前記反転指示情報と当該反転指示情報に基づくエラー訂正符号とを生成し、生成した前記反転指示情報と当該判定指示情報に基づくエラー訂正符号とを前記信号反転部を通じて前記パラレルバスに送信し、
さらに、
前記信号反転部に入力する信号から前記反転指示情報を検出すると、検出した前記反転指示情報が前記信号反転部から出力された後に、前記信号反転部に、前記パラレルバスのすべてのバスに送信する信号を反転する動作を開始させる反転動作制御部を有することを特徴とする付記2記載の情報処理装置。
【0197】
(付記4) 前記指示情報出力部は、前記パラレルバスのすべてのバスに送信する信号を反転しないように前記受信側デバイスに指示する非反転指示情報と、前記非反転指示情報に基づくエラー訂正符号とを生成して、生成した前記非反転指示情報と当該非反転指示情報に基づくエラー訂正符号とを前記信号反転部を通じて前記パラレルバスに送信し、
前記反転動作制御部は、入力信号から前記非反転指示情報を検出すると、当該非反転指示情報が前記信号反転部から出力された後に、前記パラレルバスのすべてのバスに送信する信号を反転しないように前記信号反転部を制御する、
ことを特徴とする付記3記載の情報処理装置。
【0198】
(付記5) 前記指示情報出力部は、信号を反転するバスを指定するバス指定情報と、前記バス指定情報によって指定されたバスの信号を反転する動作を送信側と受信側のどちらで実行させるかを示す実行対象指定情報とを含む部分反転指示情報と、前記部分反転指示情報に基づくエラー訂正符号とを生成して、生成した前記部分反転指示情報と当該部分反転指示情報に基づくエラー訂正符号とを前記信号反転部を通じて前記パラレルバスに送信し、
前記反転動作制御部は、入力信号から前記部分反転指示情報を検出すると、当該部分反転指示情報に含まれる前記実行対象指定情報が送信側を示していた場合に、当該部分反転指示情報が前記信号反転部から出力された後に、当該部分反転指示情報に含まれる前記バス指定情報によって指定されたバスに送信する信号を反転するように前記信号反転部を制御する、
ことを特徴とする付記3または4記載の情報処理装置。
【0199】
(付記6) 送信データと前記送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバスに接続し、前記パラレルバスのすべてのバスから受信した信号を反転する信号反転部と、
前記信号反転部から出力された信号を基にエラー検出処理とエラー訂正処理とを実行するエラー検出部と、
を有することを特徴とする情報処理装置。
【0200】
(付記7) 前記パラレルバスのすべてのバスから受信した信号を反転するように指示する反転指示情報を、前記パラレルバスから前記信号反転部を通じて受信すると、当該反転指示情報が前記信号反転部から出力された後に、すべてのバスから受信した信号を反転する動作を前記信号反転部に開始させる反転動作制御部をさらに有することを特徴とする付記6記載の情報処理装置。
【0201】
(付記8) 前記反転動作制御部は、前記パラレルバスのすべてのバスから受信した信号を反転しないように指示する非反転指示情報を、前記パラレルバスから前記信号反転部を通じて受信すると、当該非反転指示情報が前記信号反転部から出力された後に、前記パラレルバスのすべてのバスから受信した信号を反転しないように前記信号反転部を制御することを特徴とする付記7記載の情報処理装置。
【0202】
(付記9) 前記反転動作制御部は、前記パラレルバスのバスのうち指定したバスから受信した信号を反転するように指示する部分反転指示情報を、前記パラレルバスから前記信号反転部を通じて受信すると、当該部分反転指示情報が前記信号反転部から出力された後に、当該部分反転指示情報によって指定されたバスから受信した信号を反転するように前記信号反転部を制御することを特徴とする付記7または8記載の情報処理装置。
【0203】
(付記10) 前記部分反転指示情報は、指定したバスから受信した信号を反転する動作を送信側と受信側のどちらで実行させるかを示す実行対象指示情報を含み、
前記反転動作制御部は、前記部分反転指示情報を受信したとき、当該部分反転指示情報に含まれる前記部分反転指示情報によって受信側が指定されていた場合に、当該部分反転指示情報によって指定されたバスから受信した信号を反転するように前記信号反転部を制御する、
ことを特徴とする付記9記載の情報処理装置。
【0204】
(付記11) 送信データと前記送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバスを通じて受信側デバイスに接続した送信側デバイスが、前記パラレルバスのすべてのバスに送信する信号を反転する、
ことを特徴とする情報送信方法。
【0205】
(付記12) 前記送信側デバイスは、
前記パラレルバスのすべてのバスから受信した信号を反転するように前記受信側デバイスに指示する反転指示情報と、前記反転指示情報に基づくエラー訂正符号とを前記パラレルバスに出力し、
前記反転指示情報が前記パラレルバスに出力された後に、前記パラレルバスのすべてのバスに送信される信号を反転する、
ことを特徴とする付記11記載の情報処理装置。
【0206】
(付記13) 送信データと前記送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバスに接続した受信側デバイスが、
前記パラレルバスのすべてのバスから受信した信号を、前記受信側デバイスが備える信号反転部によって反転し、
前記信号反転部から出力された信号を基にエラー検出処理とエラー訂正処理とを実行する、
ことを特徴とする情報受信方法。
【0207】
(付記14) 前記受信側デバイスは、
前記パラレルバスのすべてのバスから受信した信号を反転するように指示する反転指示情報を、前記パラレルバスから受信し、
受信した前記反転指示情報が前記信号反転部から出力された後に、すべてのバスから受信した信号を反転する動作を前記信号反転部に開始させる、
ことを特徴とする付記13記載の情報受信方法。
【符号の説明】
【0208】
10 送信側デバイス
11,21 信号反転部
12 指示情報出力部
13,23 反転動作制御部
20 受信側デバイス
22 エラー検出部
30 パラレルバス
【特許請求の範囲】
【請求項1】
送信データと前記送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバスを通じて受信側デバイスに接続し、前記パラレルバスのすべてのバスに送信する信号を反転する信号反転部、
を有することを特徴とする情報処理装置。
【請求項2】
前記パラレルバスのすべてのバスからの受信信号を反転するように前記受信側デバイスに指示する反転指示情報と、前記反転指示情報に基づくエラー訂正符号とを前記パラレルバスに出力する指示情報出力部をさらに有し、
前記信号反転部は、前記反転指示情報が前記パラレルバスに出力された後に、前記パラレルバスのすべてのバスに送信される信号を反転する、
ことを特徴とする請求項1記載の情報処理装置。
【請求項3】
前記指示情報出力部は、前記反転指示情報と当該反転指示情報に基づくエラー訂正符号とを生成し、生成した前記反転指示情報と当該判定指示情報に基づくエラー訂正符号とを前記信号反転部を通じて前記パラレルバスに送信し、
さらに、
前記信号反転部に入力する信号から前記反転指示情報を検出すると、検出した前記反転指示情報が前記信号反転部から出力された後に、前記信号反転部に、前記パラレルバスのすべてのバスに送信する信号を反転する動作を開始させる反転動作制御部を有することを特徴とする請求項2記載の情報処理装置。
【請求項4】
前記指示情報出力部は、信号を反転するバスを指定するバス指定情報と、前記バス指定情報によって指定されたバスの信号を反転する動作を送信側と受信側のどちらで実行させるかを示す実行対象指定情報とを含む部分反転指示情報と、前記部分反転指示情報に基づくエラー訂正符号とを生成して、生成した前記部分反転指示情報と当該部分反転指示情報に基づくエラー訂正符号とを前記信号反転部を通じて前記パラレルバスに送信し、
前記反転動作制御部は、入力信号から前記部分反転指示情報を検出すると、当該部分反転指示情報に含まれる前記実行対象指定情報が送信側を示していた場合に、当該部分反転指示情報が前記信号反転部から出力された後に、当該部分反転指示情報に含まれる前記バス指定情報によって指定されたバスに送信する信号を反転するように前記信号反転部を制御する、
ことを特徴とする請求項3記載の情報処理装置。
【請求項5】
送信データと前記送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバスに接続し、前記パラレルバスのすべてのバスから受信した信号を反転する信号反転部と、
前記信号反転部から出力された信号を基にエラー検出処理とエラー訂正処理とを実行するエラー検出部と、
を有することを特徴とする情報処理装置。
【請求項6】
前記パラレルバスのすべてのバスから受信した信号を反転するように指示する反転指示情報を、前記パラレルバスから前記信号反転部を通じて受信すると、当該反転指示情報が前記信号反転部から出力された後に、すべてのバスから受信した信号を反転する動作を前記信号反転部に開始させる反転動作制御部をさらに有することを特徴とする請求項5記載の情報処理装置。
【請求項7】
送信データと前記送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバスを通じて受信側デバイスに接続した送信側デバイスが、前記パラレルバスのすべてのバスに送信する信号を反転する、
ことを特徴とする情報送信方法。
【請求項8】
送信データと前記送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバスに接続した受信側デバイスが、
前記パラレルバスのすべてのバスから受信した信号を、前記受信側デバイスが備える信号反転部によって反転し、
前記信号反転部から出力された信号を基にエラー検出処理とエラー訂正処理とを実行する、
ことを特徴とする情報受信方法。
【請求項1】
送信データと前記送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバスを通じて受信側デバイスに接続し、前記パラレルバスのすべてのバスに送信する信号を反転する信号反転部、
を有することを特徴とする情報処理装置。
【請求項2】
前記パラレルバスのすべてのバスからの受信信号を反転するように前記受信側デバイスに指示する反転指示情報と、前記反転指示情報に基づくエラー訂正符号とを前記パラレルバスに出力する指示情報出力部をさらに有し、
前記信号反転部は、前記反転指示情報が前記パラレルバスに出力された後に、前記パラレルバスのすべてのバスに送信される信号を反転する、
ことを特徴とする請求項1記載の情報処理装置。
【請求項3】
前記指示情報出力部は、前記反転指示情報と当該反転指示情報に基づくエラー訂正符号とを生成し、生成した前記反転指示情報と当該判定指示情報に基づくエラー訂正符号とを前記信号反転部を通じて前記パラレルバスに送信し、
さらに、
前記信号反転部に入力する信号から前記反転指示情報を検出すると、検出した前記反転指示情報が前記信号反転部から出力された後に、前記信号反転部に、前記パラレルバスのすべてのバスに送信する信号を反転する動作を開始させる反転動作制御部を有することを特徴とする請求項2記載の情報処理装置。
【請求項4】
前記指示情報出力部は、信号を反転するバスを指定するバス指定情報と、前記バス指定情報によって指定されたバスの信号を反転する動作を送信側と受信側のどちらで実行させるかを示す実行対象指定情報とを含む部分反転指示情報と、前記部分反転指示情報に基づくエラー訂正符号とを生成して、生成した前記部分反転指示情報と当該部分反転指示情報に基づくエラー訂正符号とを前記信号反転部を通じて前記パラレルバスに送信し、
前記反転動作制御部は、入力信号から前記部分反転指示情報を検出すると、当該部分反転指示情報に含まれる前記実行対象指定情報が送信側を示していた場合に、当該部分反転指示情報が前記信号反転部から出力された後に、当該部分反転指示情報に含まれる前記バス指定情報によって指定されたバスに送信する信号を反転するように前記信号反転部を制御する、
ことを特徴とする請求項3記載の情報処理装置。
【請求項5】
送信データと前記送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバスに接続し、前記パラレルバスのすべてのバスから受信した信号を反転する信号反転部と、
前記信号反転部から出力された信号を基にエラー検出処理とエラー訂正処理とを実行するエラー検出部と、
を有することを特徴とする情報処理装置。
【請求項6】
前記パラレルバスのすべてのバスから受信した信号を反転するように指示する反転指示情報を、前記パラレルバスから前記信号反転部を通じて受信すると、当該反転指示情報が前記信号反転部から出力された後に、すべてのバスから受信した信号を反転する動作を前記信号反転部に開始させる反転動作制御部をさらに有することを特徴とする請求項5記載の情報処理装置。
【請求項7】
送信データと前記送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバスを通じて受信側デバイスに接続した送信側デバイスが、前記パラレルバスのすべてのバスに送信する信号を反転する、
ことを特徴とする情報送信方法。
【請求項8】
送信データと前記送信データに基づくエラー訂正符号とがパラレル送信されるパラレルバスに接続した受信側デバイスが、
前記パラレルバスのすべてのバスから受信した信号を、前記受信側デバイスが備える信号反転部によって反転し、
前記信号反転部から出力された信号を基にエラー検出処理とエラー訂正処理とを実行する、
ことを特徴とする情報受信方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【公開番号】特開2011−159119(P2011−159119A)
【公開日】平成23年8月18日(2011.8.18)
【国際特許分類】
【出願番号】特願2010−20480(P2010−20480)
【出願日】平成22年2月1日(2010.2.1)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
【公開日】平成23年8月18日(2011.8.18)
【国際特許分類】
【出願日】平成22年2月1日(2010.2.1)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
[ Back to top ]