(57)【要約】【課題】  ホストからターゲットへの共通バッファを介したデータ供給処理において、コマンド／メッセージの通信シーケンスが異常になった場合でも、エラー検出とリカバリ処理を行ってデータ供給処理を停止させないようにする。【解決手段】  ホスト１は、ターゲット２に出力する一連のコマンドについて照会可能なように管理されたコマンド管理部１１と、ターゲット２から供給されたメッセージにつき少なくとも最新のメッセージと１回前のメッセージとをそれぞれ一時記憶するメッセージ受信部１２と、前記管理された一連のコマンドと前記一時記憶されたメッセージとの比較に基づき、ホスト１とターゲット２間の通信エラーを検出するエラー検出部１４と、前記通信エラーを検出した場合に前記通信シーケンスをリカバリするコマンド制御部１４とを具備する共通バッファ管理手段。【選択図】      図１
2005190268.tif 000002
【特許請求の範囲】
【請求項１】
ホストと、ターゲットと、１つ以上のバッファメモリから構成された共通メモリとがデータバスを介してそれぞれ接続され、前記ターゲットが発行する空きバッファのアドレスを示したメッセージと前記ホストが発行するアクセスすべきバッファのアドレスを示したコマンドとの通信制御によって、前記ホストから前記ターゲットに対してデータを供給するよう構成された共通バッファ管理手段において、
前記ホストは、前記ターゲットに発行する一連のコマンドをその発行する順番で予め記憶したコマンド管理部と、前記ターゲットから供給されたメッセージについて少なくとも最新のメッセージと１回前のメッセージとをそれぞれ一時記憶するメッセージ受信部と、前記コマンド管理部に記憶された一連のコマンドと前記メッセージ受信部に一時記憶されたメッセージとの同一発行順番位置で各アドレス比較を行ってエラーの有無を検出するエラー検出部と、この検出結果に基づき次にアクセスするバッファメモリを指定してこれに係るコマンドか、又は前記ホストとターゲット間の通信異常を正常復帰させるコマンドかのいずれかを発行するよう制御するコマンド制御部とを具備し、
前記コマンド制御部は、前記エラー検出部において検出結果にエラーが無かった場合には、前記コマンド及びメッセージの通信シーケンスは正常であると判断され、前記メッセージ受信部に一時記憶された最新のメッセージに基づき、前記次にアクセスするバッファメモリを指定してこの指定したバッファメモリに係るコマンドを前記ターゲットに出力する一方、
前記エラー検出部における検出結果にエラーが検出された場合には、前記通信異常を正常復帰させるための新たなコマンドをターゲットに設定し直すよう制御する
ことを特徴とする共通バッファ管理手段。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共通バッファメモリを介して行うデータ送信元から受信先へのデータ伝送における、共通バッファメモリのバッファ管理手段に関する。
【背景技術】
【０００２】
データ送信元（以下、ホストという。）からデータ受信先（以下、ターゲットという。）へのデータ伝送において、従来はデータバス等のデータ通信路のみを設けて単純なバス伝送を行うだけでなく、特許文献１（特公平７−７３８０号公報）のようにホストとターゲットとの間に（本文献ではプロセッサＰ１とＰ２との間に）共通メモリＣＭを備え、この共通メモリＣＭを前記両プロセッサの共通リソースとして使用するバッファ管理方法が知られている。このバッファ管理方法は、共通メモリＣＭの内部に共通バッファ管理領域を設けると共に、この領域の参照に必要な排他制御の実行回数を削減して両プロセッサの処理能力低下を防ぐことを目的としたものである。
【０００３】
また、特許文献２（特許第３３１２３６１号公報）のように複数のプロセッサモジュール間のデータ通信路上に分散共有メモリを設け、特に大規模分散処理システムにおける効率的なデータ送受信を行う分散共有メモリシステムが考えられている。
【０００４】
上述の従来技術によれば、例えばホストからターゲットへ共通バッファを介してデータを引渡す場合、ホストはターゲットから空きバッファのアドレスを示すメッセージを得て前記供給するデータを前記空きバッファに格納してこのバッファアドレスを示すコマンドを前記ターゲットに送信し、このターゲットは前記供給されたコマンドに基づいて前記バッファのみを処理するといった機能を有することを前提としたものである。
【０００５】
ここで、本願が解決すべき従来技術について、上述の従来技術を用いた共通バッファ管理について更に具体的な例をあげて説明する。図５は、それを説明するためのホストとターゲットとのデータ通信路の構成例である。同図において、ホスト５１、ターゲット５２、及び共通メモリ５４はデータバス５３で接続される。更に、ホスト５１は、ターゲット５２から供給された前記メッセージを受信するメッセージ受信部５１ａと、この受信したメッセージに基づき次にアクセスすべき共通メモリ５４の所定のバッファアドレスを取得し、この取得したアドレスについて次に発行すべきコマンドを設定してターゲット５２に出力するコマンド制御部５１ｂと、前記取得した所定のバッファのアドレスを参照して該当するバッファにデータバス５３を介してデータの書き込みを行うメモリ制御部５１ｃとから構成されている。
【０００６】
また、ターゲット５２は、ホスト５１から供給された前記コマンドを受信するコマンド受信部５２ａと、この受信したコマンドに基づきアクセスすべき共通メモリ５４の所定のバッファのアドレスを取得すると共に、既に処理を終了させた空きバッファのアドレスを示すメッセージをホスト５１に出力するメッセージ制御部５２ｂと、前記取得した所定のバッファのアドレスを参照して該当するバッファにデータバス５３を介してデータの読み出しを行うメモリ制御部５２ｃとから構成されている。
【０００７】
そしてまた、共通メモリ５４の内部は固有のアドレスを有した１つ以上の前記バッファに区分され、同図においてはバッファ５４−１，バッファ５４−２乃至バッファ５４−ｎ（ｎは自然数）と区分している。
【０００８】
なお、説明を容易にするために、便宜上上記バッファを２つ（バッファ５４−１及びバッファ５４−２）として説明する。
【０００９】
図６は、ホスト５１からターゲット５２への共通メモリ５４を介したデータ供給動作を説明するための図で、データバス５３上で送受されるバッファ指定コマンド及び空きバッファメッセージの送受シーケンスを示したものである。同図において、ＳｔａｔｕｓＢｕｆｆｅｒ［Ｉ］（Ｉは０以上の整数。以下同じ。）は、既に処理が終了した空きバッファのバッファアドレスを指定するようターゲット５２のメッセージ制御部５２ｂで制御されて発行される空きバッファメッセージ、ＨｏｓｔＢｕｆｆｅｒ［Ｉ］はアクセスすべきバッファアドレスを指定するようホスト５１のコマンド制御部５１ｂで制御されて発行されるバッファ指定コマンド、ＴａｒｇｅｔＢｕｆｆｅｒ［Ｉ］はターゲット５２のコマンド受信部５２ａで受信され、アクセスすべきバッファアドレスを取得するよう管理されるバッファ指定コマンド、ａｄｄｒ＿ｂｕｆ＿Ａはバッファ５４ａを指定する第１のバッファアドレス、ａｄｄｒ＿ｂｕｆ＿Ｂはバッファ５４ｂを指定する第２のバッファアドレスである。
【００１０】
まず、ホスト５１のコマンド制御部５１ｂは、初期化処理としてＨｏｓｔＢｕｆｆｅｒ［０］＝ａｄｄｒ＿ｂｕｆ＿Ａ及びＨｏｓｔＢｕｆｆｅｒ［１］＝ａｄｄｒ＿Ｂｕｆ＿Ｂを自身に設定し、そしてバッファ指定コマンドとしてデータバス５３を介してターゲット５２に出力する。そして、ターゲット５２は供給された前記バッファ指定コマンドをＴａｒｇｅｔＢｕｆｆｅｒ［０］＝ａｄｄｒ＿ｂｕｆ＿Ａ及びＴａｒｇｅｔＢｕｆｆｅｒ［１］＝ａｄｄｒ＿ｂｕｆ＿Ｂとしてコマンド受信部５２ａで受信する。
【００１１】
そして、上記初期化処理に続くホスト５１からターゲット５２への共通メモリ５４を介したデータ供給は、一連のバッファ指定コマンド及び空きバッファメッセージの送受信をもって以下のように行われる。つまり、ターゲット５２のメッセージ制御部５２ｂは、前記第１のアドレスａｄｄｒ＿ｂｕｆ＿Ａで示されるバッファ５４−１又は前記第２のアドレスａｄｄｒ＿ｂｕｆ＿Ｂで示されるバッファ５４−２の内、既に処理が終了した空きバッファであって所定の順番に基づく１つのバッファにつき、そのバッファアドレスを示した空きバッファメッセージＳｔａｔｕｓＢｕｆｆｅｒ［Ｊ］＝バッファアドレス（Ｊは０以上の整数。以下同じ。）をデータバス５３を介してホスト５１に送信するようにしている。
【００１２】
ホスト５１のメッセージ受信部５１ａでは、前記空きバッファメッセージを受信してコマンド制御部５１ｂに供給し、メモリ制御部５１ｃがコマンド制御部５１ｂから供給された前記空きバッファメッセージを参照してそれに示されたバッファにターゲット５２に供給すべきデータを格納すると共に、コマンド制御部５１ｂは前記バッファアドレスを指定したバッファ指定コマンドＨｏｓｔＢｕｆｆｅｒ［Ｊ＋２］＝バッファアドレスをデータバス５３を介してターゲット５２に送信する。
【００１３】
さらに、ターゲット５２のコマンド受信部５２ａは前記送信されたバッファ指定コマンドをＴａｒｇｅｔＢｕｆｆｅｒ［Ｊ＋２］として受信してメッセージ制御部５２ｂに供給し、メモリ制御部５２ｃがメッセージ制御部５２ｂに供給された前記バッファアドレスを参照して該当するバッファから受け取るべきデータを読み出すと共に、メッセージ制御部５２ｂは前述したように既に処理が終了した空きバッファであって所定の順番に基づく１つバッファにつき、そのバッファアドレスを示した空きバッファメッセージの処理に移行する。
以上のように、ホスト５１からターゲット５２への共通メモリ５４を介したデータ供給が行われる構成とされているものである。
【特許文献１】特公平７−７３８０号公報
【特許文献２】特許第３３１２３６１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
しかしながら、上述した従来技術によるバッファ管理の例によると、データバス５３上の何らかの障害によってターゲット５２がバッファ指定コマンドを受信できないエラーが発生した場合、ターゲット５２が管理するバッファ指定コマンドＴａｒｇｅｔＢｕｆｆｅｒ［Ｊ］のコマンド数の不足が発生し、更に前記エラーの回数が増えると最終的にはターゲット５２が管理するバッファ指定コマンドが無くなるため、ホスト５１〜ターゲット５２間のデータ供給ができなくなるという問題がある。また、ホスト５１がターゲット５２からのメッセージを処理できなかった場合、データ通信が途絶えたり間違ったバッファの受け渡しになる等の問題がある。
【００１５】
そして、前述の従来技術によるバッファ管理の例においては、上記のようなエラーが発生した場合のデータ供給について次のような問題が発生する。図７はその動作を説明するための図で、ホスト５１からターゲット５２へ共通メモリ５４を介してデータを供給する際の、ホスト５１とターゲット５２間で送受されるバッファ指定コマンド及び空きバッファメッセージの送受シーケンスを示したもののうち、ターゲット５２で前記バッファ指定コマンドの受信エラーが発生した場合について図示したものである。
【００１６】
７１はターゲット５２がバッファ指定コマンドを最初に取得できなかった第１の受信エラー、７２は第１の受信エラー７１によりバッファアドレスがずれてしまったミスバッファ指定コマンド、７３は第１の受信エラー７１によりバッファアドレスがずれて発生したミス空きバッファメッセージ、７４は第１の受信エラー７１と同様に２回目に発生した第２の受信エラーを示したものである。同図が示すように、ターゲット５２で第１の受信エラー７１が発生すると、本来コマンド受信部５２ａが受信すべきバッファ指定コマンドＴａｒｇｅｔＢｕｆｆｅｒ［３］＝ａｄｄｒ＿ｂｕｆ＿Ｂを受信できないこととなる。このため、ミスバッファ指定コマンド７２は本来設定されるべきＴａｒｇｅｔＢｕｆｆｅｒ［４］＝ａｄｄｒ＿ｂｕｆ＿ＡでなくＴａｒｇｅｔＢｕｆｆｅｒ［３］＝ａｄｄｒ＿ｂｕｆ＿Ａが設定されることとなり、メッセージ制御部５２ｂが管理する空きバッファ数がホスト５１の管理する空きバッファ数よりも１つ少なくなる。
【００１７】
これにより、同図の例ではミスバッファ指定コマンド７２に基づき本来ホスト５１に供給すべき空きバッファメッセージＳｔａｔｕｓＢｕｆｆｅｒ［３］＝ａｄｄｒ＿ｂｕｆ＿Ｂが発行できずアドレスがａｄｄｒ＿ｂｕｆ＿Ａにずれてしまうこととなり（ミス空きバッファメッセージ７３）、それ以降はバッファ５４−１のみを使用し続けることとなる。
【００１８】
更に第２の受信エラー７４が発生すると、本来コマンド受信部５２ａが受信すべきバッファ指定コマンドＴａｒｇｅｔＢｕｆｆｅｒ［７］＝ａｄｄｒ＿ｂｕｆ＿Ａが受信できないこととなる。この場合、ターゲット５２にはついに空きバッファがなくなってしまったためメッセージ制御部５２ｂはホスト５１への空きバッファメッセージの送信ができなくなる。そして、ついにはホスト５１もターゲット５２へ新たなバッファ指定コマンドの送信ができなくなり、ホスト５１からターゲット５２へのデータ供給が停止することとなる。
【００１９】
本発明は、上述したようなホスト５１とターゲット５２間に発生する通信エラー等によるデータ供給の停止問題を解決するためになされたものであり、ターゲット５２がバッファ指定コマンドの受け取りに失敗した場合や、ホスト５１が空きバッファメッセージの処理に失敗した場合等について、このようなエラー事象を的確に検出してリカバリ処理を行うことにより、バッファ指定コマンド及び空きバッファメッセージの通信を途絶えさせないように制御して、信頼性の高いデータ供給の処理を実現させる共通バッファ管理手段を提供することを目的とする。
【課題を解決するための手段】
【００２０】
すなわち、本発明は上述した課題を解決するために以下の手段より構成したものである。
ホストと、ターゲットと、１つ以上のバッファメモリから構成された共通メモリとがデータバスを介してそれぞれ接続され、前記ターゲットが発行する空きバッファのアドレスを示したメッセージと前記ホストが発行するアクセスすべきバッファのアドレスを示したコマンドとの通信制御によって、前記ホストから前記ターゲットに対してデータを供給するよう構成された共通バッファ管理手段において、前記ホストは、前記ターゲットに発行する一連のコマンドをその発行する順番で予め記憶したコマンド管理部と、前記ターゲットから供給されたメッセージについて少なくとも最新のメッセージと１回前のメッセージとをそれぞれ一時記憶するメッセージ受信部と、前記コマンド管理部に記憶された一連のコマンドと前記メッセージ受信部に一時記憶されたメッセージとの同一発行順番位置で各アドレス比較を行ってエラーの有無を検出するエラー検出部と、この検出結果に基づき次にアクセスするバッファメモリを指定してこれに係るコマンドか、又は前記ホストとターゲット間の通信異常を正常復帰させるコマンドかのいずれかを発行するよう制御するコマンド制御部とを具備し、前記コマンド制御部は、前記エラー検出部において検出結果にエラーが無かった場合には、前記コマンド及びメッセージの通信シーケンスは正常であると判断され、前記メッセージ受信部に一時記憶された最新のメッセージに基づき、前記次にアクセスするバッファメモリを指定してこの指定したバッファメモリに係るコマンドを前記ターゲットに出力する一方、前記エラー検出部における検出結果にエラーが検出された場合には、前記通信異常を正常復帰させるための新たなコマンドをターゲットに設定し直すよう制御することを特徴とする共通バッファ管理手段。
【発明の効果】
【００２１】
本発明によれば、ホストからターゲットへの共通メモリを介したデータ供給における前記ホストからのコマンド発行と、このコマンドを受信した前記ターゲットからの空きバッファメモリに係るメッセージの返信において、前記ホストが発行したコマンドが前記ターゲットに伝わらない、又は前記ターゲットから返信されたメッセージが処理できない等の前記コマンド及びメッセージの通信シーケンス異常に基づくデータ供給の処理停止という致命的な問題を回避できる格別な効果を有するものである。
【発明を実施するための最良の形態】
【００２２】
以下、本発明を実施するための最良の形態につき図を用いて詳細に説明する。まず、図１は本発明に係る共通バッファ管理を実現するための構成例を示した図である。同図において、ホスト１、ターゲット２、及び共通メモリ４はデータバス３で接続される。更にホスト１は、後述するコマンド制御部１４が発行するバッファ指定コマンドを予め発行する順番で記憶したコマンド管理部１１と、ターゲット２から供給された空きバッファメッセージを一時記憶するメッセージ受信部１２と、コマンド管理部１１及びメッセージ受信部１２から供給される比較情報に基づきホスト１とターゲット２間の通信エラーを検出するエラー検出部１３と、前記空きバッファメッセージに基づき次にアクセスすべきバッファを指定するバッファ指定コマンドを発行し、また前記通信エラーが検出された場合は前記通信を正常復帰させるためのコマンド制御部１４と、前記次にアクセスすべき共通メモリ４のバッファにデータの書き込み又は読み出しを行うメモリ制御部１５とから構成される。
【００２３】
また、ターゲット２は前述した背景技術で述べたように、ホスト１から供給された前記バッファ指定コマンドを受信するコマンド受信部２ａと、この受信したバッファ指定コマンドに基づき共通メモリ４の所定のバッファアドレスを取得すると共に空きバッファのバッファアドレスを示す空きバッファメッセージをホスト１に出力するメッセージ制御部２ｂと、前記取得したバッファアドレスで示されるバッファにデータの書き込み又は読み出しを行うメモリ制御部２ｃとから構成される。
【００２４】
そしてまた、上述したように共通メモリ４の内部は固有のバッファアドレスを有した１つ以上のバッファに区分され、同図においてはバッファ４−１，バッファ４−２乃至バッファ４−ｎ（ｎは自然数）と区分されるものとする。
【００２５】
なお、本形態例では説明を容易にするために、便宜上上記バッファを２つ（バッファ４−１及びバッファ４−２）として以下を説明する。
【００２６】
次に、上記の構成例におけるホスト１からターゲット２への共通メモリ４を介したデータ供給動作について図２及び図３を用いて説明する。図２はホスト１からターゲット２へ共通メモリ４を介してデータを供給する際のデータバス３上で送受させるバッファ指定コマンド及び空きバッファメッセージの送受シーケンスを示したものである。また、図３は図２の例におけるコマンド管理部１１、メッセージ受信部１２、及びエラー検出部１３の手順及び内部データ構造を示した図である。
【００２７】
まず、図２において、ＳｔａｔｕｓＢｕｆｆｅｒ［Ｉ］（Ｉは０以上の整数、以下同じ。）は、ターゲット２において初期化されたか又は既にアクセス処理が完了して空きバッファとなった空きバッファアドレスを指定するようターゲット２のメッセージ制御部２ｂで制御されて発行される空きバッファメッセージ、ＨｏｓｔＢｕｆｆｅｒ［Ｉ］はターゲット２がアクセスすべきバッファの指定バッファアドレスを指定するようホスト１のコマンド制御部１４で制御されて発行されるバッファ指定コマンド、ＴａｒｇｅｔＢｕｆｆｅｒ［Ｉ］はターゲット２のコマンド受信部２ａで受信され、ターゲット２が次にアクセスすべきバッファの指定バッファアドレスを示すバッファ指定コマンド、ａｄｄｒ＿ｂｕｆ＿Ａはバッファ４−１を指定する第１の指定バッファアドレス、ａｄｄｒ＿ｂｕｆ＿Ｂはバッファ４−２を指定する第２の指定バッファアドレスを示したものである。
【００２８】
まず、ホスト１のコマンド制御部１４は、初期化処理としてＨｏｓｔＢｕｆｆｅｒ［０］＝ａｄｄｒ＿ｂｕｆ＿Ａ及びＨｏｓｔＢｕｆｆｅｒ［１］＝ａｄｄｒ＿Ｂｕｆ＿Ｂを自身に設定してバッファ指定コマンドとしてターゲット２に出力する。そして、ターゲット２は入来した前記バッファ指定コマンドをそれぞれＴａｒｇｅｔＢｕｆｆｅｒ［０］＝ａｄｄｒ＿ｂｕｆ＿Ａ及びＴａｒｇｅｔＢｕｆｆｅｒ［１］＝ａｄｄｒ＿ｂｕｆ＿Ｂとしてコマンド受信部２ａで受信する。
【００２９】
次に、上記初期化処理に続くホスト１からターゲット２への共通メモリ４を介したデータ供給は、一連のバッファ指定コマンド及び空きバッファメッセージの送受信をもって以下のように行われる。つまり、ターゲット２のメッセージ制御部２ｂは、前記第１の指定バッファアドレスａｄｄｒ＿ｂｕｆ＿Ａで示されるバッファ４−１又は前記第２の指定バッファアドレスａｄｄｒ＿ｂｕｆ＿Ｂで示されるバッファ４−２の内、前記初期化されたか又は既にアクセス処理が終了した空きバッファであって前記アクセス処理の古い順番による１つのバッファにつき、その空きバッファアドレスを示した空きバッファメッセージＳｔａｔｕｓＢｕｆｆｅｒ［Ｊ］＝前記空きバッファアドレス（Ｊは０以上の整数。以下同じ。）をデータバス３を介してホスト１に送信する。
【００３０】
次に、ホスト１のメッセージ受信部１２は、図３に示すように前記空きバッファメッセージを受信してその空きバッファアドレスを最新のメッセージとして記憶する。このとき、予め記憶されていた最新のメッセージは１回前のメッセージとして記憶し直させる。そして、前記最新のメッセージに格納された空きバッファアドレスとコマンド管理部１１に予め発行する順番で記憶されたバッファ指定コマンド、すなわち指定バッファアドレスとを前記発行する順番位置に対応させて比較し、また同様に前記１回前のメッセージとして記憶し直した空きバッファメッセージについても、コマンド管理部１１に予め発行する順番で記憶されたバッファ指定コマンドに係る指定バッファアドレスとを前記発行する順番位置に対応させて比較する。つまり、例えば図３における前記最新のメッセージについてはＨｏｓｔＢｕｆｆｅｒ［３］とＳｔａｔｕｓＢｕｆｆｅｒ［３］との比較であり、前記１回前のメッセージについてはＨｏｓｔＢｕｆｆｅｒ［２］とＳｔａｔｕｓＢｕｆｆｅｒ［２］との比較である。
【００３１】
上記のようなそれぞれのアドレス比較において、エラー検出部１３は前記各メッセージに示された空きバッファアドレスとコマンド管理部１１で管理された同一順番位置に該当するバッファ指定コマンドで示された指定バッファアドレスとが両方とも一致した場合、ホスト１とターゲット２間の前記通信シーケンスは正常であると判断し、その正常を示す結果を前記最新のメッセージと共にコマンド制御部１４に供給する。
【００３２】
一方、前記１回前のメッセージに記憶された空きバッファアドレスとコマンド管理部１１で管理された同一順番位置に該当するバッファ指定コマンドで示された指定バッファアドレスとは一致したが、前記最新のメッセージに記憶された空きバッファアドレスとコマンド管理部１１で管理された同一順番位置に該当するバッファ指定コマンドで示された指定バッファアドレスとが一致しなかった場合、１回前の通信シーケンスまでは正常であったが今回の通信シーケンスは正常ではなく、これに係るバッファ領域は正常に処理されていないと判断し、その異常を示す結果を前記最新のメッセージと共にコマンド制御部１４に供給する。
【００３３】
次に、コマンド制御部１４は、エラー検出部１３から供給された前記判断結果に基づき以下のような処理を行う。つまり、前記判断結果が正常であった場合は、コマンド制御部１４はエラー検出部１３から供給された前記最新のメッセージに係る空きバッファアドレスを次の指定バッファアドレスとしてメモリ制御部１５に参照させ、後述するようにメモリ制御部１５から共通メモリ４へのアクセスを終了したステータスを受信した後、前記指定バッファアドレスを示したバッファ指定コマンドＨｏｓｔＢｕｆｆｅｒ［Ｊ＋２］＝前記指定バッファアドレスをデータバス３を介してターゲット２に発行する。これにおいては、上述したようにメモリ制御部１５はコマンド制御部１４の前記空きバッファメッセージを参照して、それに示されたバッファにターゲット２に供給すべきデータを格納し、アクセスを終了した後前記ステータスをコマンド制御部１４に返す。
【００３４】
そして、ターゲット２のコマンド受信部２ａは前記発行されたバッファ指定コマンドをＴａｒｇｅｔＢｕｆｆｅｒ［Ｊ＋２］として受信してメッセージ制御部２ｂに供給し、メモリ制御部２ｃは前記供給されたバッファアドレスを参照して該当するバッファから受け取るべきデータを読み出した後、メッセージ制御部２ｂへアクセスを終了したステータスを出力し、メッセージ制御部２ｂは前述したように既に処理が終了した空きバッファであってバッファアドレスの所定の順番、例えばバッファアドレスの小さい順番に基づく１つのバッファにつき、そのバッファアドレスを示した空きバッファメッセージの処理に移行する。
【００３５】
一方、前述したエラー検出部１３での判断結果が異常であった場合、通信シーケンスを正常化させるために復帰処理を行う。その際の動作について図３及び図４を用いて説明する。図４は、ホスト１からターゲット２へ共通メモリ４を介してデータを供給する際のホスト１とターゲット２間で送受されるバッファ指定コマンド及び空きバッファメッセージの送受シーケンスを示したもののうち、ターゲット２で前記バッファ指定コマンドの受信エラーが発生した場合について図示したものである。同図において、４１はターゲット２がバッファ指定コマンドを取得できなかった受信エラー、４２は受信エラー４１によりバッファアドレスがずれてしまったミスバッファ指定コマンド、４３は受信エラー４１によりバッファアドレスがずれて発生したミス空きバッファメッセージ、４４はエラー検出部１３が受信エラーを検出した後コマンド制御部１４が発行する再初期化データを示したものである。
【００３６】
同図が示すように、ターゲット２で受信エラー４１が発生すると、本来コマンド受信部２ａが受信すべきバッファ指定コマンドＴａｒｇｅｔＢｕｆｆｅｒ［３］＝ａｄｄｒ＿ｂｕｆ＿Ｂを受信できないこととなる。このため、ミスバッファ指定コマンド４２は本来設定されるべきＴａｒｇｅｔＢｕｆｆｅｒ［４］＝ａｄｄｒ＿ｂｕｆ＿ＡでなくＴａｒｇｅｔＢｕｆｆｅｒ［３］＝ａｄｄｒ＿ｂｕｆ＿Ａが設定されることとなり、メッセージ制御部２ｂが管理する空きバッファ数がホスト１の管理する空きバッファ数よりも１つ少なくなる。これにより、同図の例ではミスバッファ指定コマンド４２に基づき本来ホスト１に供給すべき空きバッファメッセージＳｔａｔｕｓＢｕｆｆｅｒ［３］＝ａｄｄｒ＿ｂｕｆ＿Ｂが発行できず、アドレスがａｄｄｒ＿ｂｕｆ＿Ａにずれてしまうこととなり（ミス空きバッファメッセージ４３）、以降はバッファ４−１のみを使用し続けることとなる。
【００３７】
そして、ターゲット２が発行したミス空きバッファメッセージ４３を受信したホスト１では、メッセージ受信部１２の内部データ構造が図３に例示したように設定され、エラー検出部１３での最新のメッセージについてのＨｏｓｔＢｕｆｆｅｒ［３］とＳｔａｔｕｓＢｕｆｆｅｒ［３］との比較において、ＨｏｓｔＢｕｆｆｅｒ「３」＝ａｄｄｒ＿ｂｕｆ＿ＢとＳｔａｔｕｓＢｕｆｆｅｒ［３］＝ａｄｄｒ＿ｂｕｆ＿Ａとはバッファアドレスが異なるため、エラーを検出することとなる。
【００３８】
前記エラーを検出したエラー検出部１３は、異常を知らせる情報とミス空きバッファメッセージ４３をコマンド制御部１４に出力し、コマンド制御部１４はミス空きバッファメッセージ４３が含まれるグループの次のグループを再初期化データとして自身に設定し、そしてターゲット２に対して新たなバッファ指定コマンドとして出力する。図４の例においては、エラー検出部１３からエラー検出結果と一緒に供給されるメッセージはＳｔａｔｕｓＢｕｆｆｅｒ［３］＝ａｄｄｒ＿ｂｕｆ＿Ａであるので、ＳｔａｔｕｓＢｕｆｆｅｒ［３］が含まれるグループの次のグループであるＨｏｓｔＢｕｆｆｅｒ［４］＝ａｄｄｒ＿ｂｕｆ＿Ａ及びＨｏｓｔＢｕｆｆｅｒ［５］＝ａｄｄｒ＿Ｂｕｆ＿Ｂが前記再初期化データ４４として設定されることとなる。
【００３９】
これにおいて、本例では前述したようにバッファ数を２つとした場合であるため前記グループの組み合わせは（０，１），（２，３），（４，５）．．．となるが、バッファ数がｎ個である場合の前記グループは、説明するまでもなく（０，１，２．．．ｎ−１），（ｎ，ｎ＋１，ｎ＋２．．．２＊ｎ−１）．．．となる。
【００４０】
以上のように、本実施の形態のバッファ管理手段によれば、ホスト１からターゲット２へのデータ供給が、通信エラーを検出しながら共通メモリ４を介して行われることにより、ターゲット２がバッファ指定コマンドの受け取りに失敗した場合や、ホスト１が空きバッファメッセージの処理に失敗した場合について、このような通信エラーをホスト１のエラー検出部１３にて的確に検出してその結果に基づきコマンド制御部１４にてリカバリ処理を行うことにより、バッファ指定コマンド及び空きバッファメッセージの通信シーケンスを途絶えさせなずに、信頼性の高いデータ供給の処理を実現させる共通バッファ管理手段を提供することができる。
【００４１】
なお、本実施の形態において、共通メモリ４を介したデータの供給はホスト１からターゲット２への供給についてのみ述べたが、ホスト１及びターゲット２共にコマンド管理部１１とエラー検出部１３とをそれぞれ具備した構成とすることでターゲット２からホスト１へのデータ供給も可能となり、これによって双方向の通信においてエラーを検出可能とすることができる。
【産業上の利用可能性】
【００４２】
以上のように、本発明に係る共通バッファ管理手段は共通メモリを介して特に連続データを送受するマルチプロセッサシステムの通信路に有効であり、特にコマンド／メッセージによる通信シーケンスが通信路の障害等によって途絶えてしまうことを防ぐべき高信頼なデータ通信路の提供に有用である。
【図面の簡単な説明】
【００４３】
【図１】本発明の実施の形態に係る共通バッファ管理を実現するための構成例を示した図である。
【図２】ホスト１からターゲット２へ共通メモリ４を介してデータを供給する際の、データバス３上で送受させるバッファ指定コマンド及び空きバッファメッセージの送受シーケンスを示した図である。
【図３】図２の例におけるコマンド管理部１１、メッセージ受信部１２、及びエラー検出部１３の手順及び内部データ構造を示した図である。
【図４】ホスト１からターゲット２へ共通メモリ４を介してデータを供給する際の、ホスト１〜ターゲット２間で送受されるバッファ指定コマンド及び空きバッファメッセージの送受シーケンスを示したもののうち、ターゲット２で前記バッファ指定コマンドの受信エラーが発生した場合について図示したものである。
【図５】ホストからターゲットへの共通メモリを介したデータ供給における、ホスト〜ターゲット間データ通信路の従来の構成例である。
【図６】ホスト５１からターゲット５２へ共通メモリ５４を介してデータを供給する際の、データバス５３上で送受されるバッファ指定コマンド及び空きバッファメッセージの送受シーケンスを示した図である。
【図７】ホスト５１からターゲット５２へ共通メモリ５４を介してデータを供給する際の、ホスト５１〜ターゲット５２間で送受されるバッファ指定コマンド及び空きバッファメッセージの送受シーケンスを示したもののうち、ターゲット５２で前記バッファ指定コマンドの受信エラーが発生した場合について図示したものである。
【符号の説明】
【００４４】
１  ホスト
２  ターゲット
２ａ  コマンド受信部
２ｂ  メッセージ制御部
２ｃ  メモリ制御部
３  データバス
４  共通メモリ
４−１  第１のバッファ
４−２  第２のバッファ
４−ｎ  第ｎのバッファ
１１  コマンド管理部
１２  メッセージ受信部
１３  エラー検出部
１４  コマンド制御部
１５  メモリ制御部
【図１】
2005190268.tif 000003
【図２】
2005190268.tif 000004
【図３】
2005190268.tif 000005
【図４】
2005190268.tif 000006
【図５】
2005190268.tif 000007
【図６】
2005190268.tif 000008
【図７】
2005190268.tif 000009