(57)【特許請求の範囲】
【請求項１】
複数の処理装置にそれぞれ接続するとともに、互いにバスを介して接続された複数の転送装置を有する情報処理装置において、
前記複数の転送装置の各々は、
前記複数の処理装置のうち対応する処理装置からの一つのデータを、前記一つのデータから分割されたパケット毎に受信するとともに、正常にパケットが受信できた場合、前記正常に受信できた正常パケットをデータ記憶部に書込み、正常にパケットが受信できなかった場合、前記正常に受信できなかったパケットに対応するエラー情報をエラー情報記憶部に書き込む書込制御部と、対応するエラー情報が前記エラー情報記憶部に保持されていない場合、前記データ記憶部から読み出した正常パケットを出力し、対応するエラー情報が前記エラー情報記憶部に保持されている場合、前記正常に受信できなかったパケットの変わりに生成した補完パケットを出力することにより、正常パケット又は補完パケットを含んだ一つのデータとして出力する読出制御部とを備える複数の送信制御部と、
前記複数の送信制御部に接続されるとともに、前記複数の送信制御部のいずれかからの前記正常パケット又は補完パケットを含んだ一つのデータを他の転送装置から送信する切替部とを備えたことを特徴とする情報処理装置。
【請求項２】
前記複数の送信制御部のいずれかは、前記バスの使用権を獲得するとともに、前記切替部は、前記複数の送信制御部のうち、前記使用権を獲得した送信制御部からの正常パケット又は補完パケットを含んだ一つのデータとして出力することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記複数の送信制御部のそれぞれが有する読出制御部は、前記正常な受信ができなかったパケットの代わりに生成した補完パケットに前記対応するエラー情報を含めて出力することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記複数の送信制御部のそれぞれが有する受信部は、前記受信したパケットにエラーがあると前記書込制御部が判断した場合、それ以降のパケットを受信しないことを特徴とする請求項１〜３のいずれか一つに記載の情報処理装置。
【請求項５】
複数の処理装置にそれぞれ接続するとともに、互いにバスを介して接続された複数の転送装置に各々において、
前記複数の処理装置のうち対応する処理装置からの一つのデータを、前記一つのデータから分割されたパケット毎に受信するとともに、正常にパケットが受信できた場合、前記正常に受信できた正常パケットをデータ記憶部に書込み、正常にパケットが受信できなかった場合、前記正常に受信できなかったパケットに対応するエラー情報をエラー情報記憶部に書き込む書込制御部と、対応するエラー情報が前記エラー情報記憶部に保持されていない場合、前記データ記憶部から読み出した正常パケットを出力し、対応するエラー情報が前記エラー情報記憶部に保持されている場合、前記正常に受信できなかったパケットの変わりに生成した補完パケットを出力することにより、正常パケット又は補完パケットを含んだ一つのデータとして出力する読出制御部とを備える複数の送信制御部と、
前記複数の送信制御部に接続されるとともに、前記複数の送信制御部のいずれかからの前記正常パケット又は補完パケットを含んだ一つのデータを他の転送装置から送信する切替部とを備えたことを特徴とする転送装置。
【請求項６】
前記複数の送信制御部のいずれかは、前記バスの使用権を獲得するとともに、前記切替部は、前記複数の送信制御部のうち、前記使用権を獲得した送信制御部からの正常パケット又は補完パケットを含んだ一つのデータとして出力することを特徴とする請求項５に記載の転送装置。
【請求項７】
前記複数の送信制御部のそれぞれが有する読出制御部は、前記正常な受信ができなかったパケットの代わりに生成した補完パケットに前記対応するエラー情報を含めて出力することを特徴とする請求項５又は６に記載の転送装置。
【請求項８】
前記複数の送信制御部のそれぞれが有する受信部は、前記受信したパケットにエラーがあると前記書込制御部が判断した場合、それ以降のパケットを受信しないことを特徴とする請求項５〜７のいずれか一つに記載の転送装置。
【請求項９】
複数の処理装置にそれぞれ接続するとともに、互いにバスを介して接続された複数の転送装置を有する情報処理装置の制御方法において、
前記複数の転送装置の各々が有する複数の送信制御部が、前記複数の処理装置のうち対応する処理装置からの一つのデータを、前記一つのデータから分割されたパケット毎に受信するステップと、
前記送信制御部が有する書込み制御部が、正常にパケットが受信できた場合、前記正常に受信できた正常パケットをデータ記憶部に書込み、正常にパケットが受信できなかった場合、前記正常に受信できなかったパケットに対応するエラー情報をエラー情報記憶部に書き込むステップと、
前記送信制御部が有する読出し制御部が、対応するエラー情報が前記エラー情報記憶部に保持されていない場合、前記データ記憶部から読み出した正常パケットを出力し、対応するエラー情報が前記エラー情報記憶部に保持されている場合、前記正常に受信できなかったパケットの変わりに生成した補完パケットを出力することにより、正常パケット又は補完パケットを含んだ一つのデータとして出力するステップと、
前記複数の送信制御部に接続された切替部が、前記複数の送信制御部のいずれかからの前記正常パケット又は補完パケットを含んだ一つのデータを他の転送装置から送信する切替部とを有することを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、転送装置および情報処理装置の制御方法に関するものである。
【背景技術】
【０００２】
従来から複数のプロセッサを有するシステムモジュール間をバスで接続した構造のマルチプロセッサシステムが提案されている（たとえば、特許文献１参照）。図１は、マルチプロセッサシステムの構成例を示すブロック図である。この例では、マルチプロセッサを有する２つのシステムモジュール１０ａ，１０ｂがバス３１を介して接続されている。２つのシステムモジュールは同一の構造を有しており、所定の命令列の入力に基づいて所定の演算処理を実行し、キャッシュメモリを有する２つの中央演算処理装置（Central  Processing  Unit、以下、ＣＰＵという）１１と、ＤＩＭＭ（Dual  Inline  Memory  Module）などからなるメインメモリ１２と、メインメモリ１２へのアクセス信号などを制御するメモリアクセスコントローラ（Memory  Access  Controller、以下、ＭＡＣという）１３と、複数のシステムモジュール１０ａ，１０ｂに跨ってデータパケットを伝送する場合にパケットの中継を行うシステムコントローラ１４と、を有する。システムコントローラ１４と、ＣＰＵ１１、ＭＡＣ１３とは、バス２１を介して接続されている。
【０００３】
このようなマルチプロセッサシステムでの複数のシステムモジュール１０ａ，１０ｂ間における従来のデータパケットの伝送方法について説明する。まず、あるシステムモジュール１０内のＣＰＵ１１やＭＡＣ１３などの処理部から他のシステムモジュール１０内のＭＡＣ１３やＣＰＵ１１へのデータがパケット化され、システムコントローラ１４に送信される。システムコントローラ１４は、パケットを受信すると、送信先のシステムモジュール１０に送信するためにバス３１のプライオリティ（使用権）を取得し、処理部から受信したパケットを受信するとすぐに送信先のシステムモジュール１０に送信する処理を行う。一方、送信先のシステムモジュール１０のシステムコントローラ１４はパケットを受信すると、パケットの宛て先情報に基づいて送信先の処理部にパケットを送信する。そして、すべてのデータ（パケット）の送信が終了すると、バス３１が解放される。
【０００４】
このようなデータパケットの伝送方法では、たとえば、システムモジュール１０ａのＣＰＵ１１ａからシステムコントローラ１４ａへパケット伝送中に、ＣＰＵ１１ａまたはバス２１ａに故障が発生し、システムコントローラ１４ａがＣＰＵ１１ａからのパケットを最後まで正常に受けきれなかった場合に、システムコントローラ１４ａは、ＣＰＵ１１ａからのパケットをいつまでたってもシステムコントローラ１４ａ，１４ｂ間を結ぶバス３１上に伝送することがない。そのため、システムコントローラ１４ａからシステムコントローラ１４ｂへのパケットの伝送も中断されることとなる。システムコントローラ１４ａから見ると、ＣＰＵ１１ａのパケットの伝送が完了できないために、システムコントローラ１４ｂに対するバス３１を解放できなくなる。その結果、たとえば、その後に、システムモジュール１０ａのＣＰＵ１１ｂ→システムコントローラ１４ｂ→システムモジュール１０ｂのシステムコントローラ１４ｂ→ＣＰＵ１１ｃ宛てといった故障箇所とは直接関係のないデータパケットの伝送もできなくなる。つまり、ＣＰＵ１１ａまたはＣＰＵ１１ａとシステムコントローラ１４ａとの間のバス２１ａの故障によって、システムコントローラ１４ａ，１４ｂ間を結ぶバス３１の閉塞が発生し、システム全体でパケットの伝送が不可能になっていた。
【０００５】
このようなバス３１の閉塞を回避するために、システムコントローラ１４ａ側でＣＰＵ１１ａからのパケットの伝送中に異常を発見した場合に、システムコントローラ１４ａからシステムコントローラ１４ｂへのパケットの伝送を打ち切る方法がある。つまり、あるＣＰＵ１１からのパケットの伝送中に異常を発見した場合には、そのＣＰＵ１１からのパケットの伝送を打ち切り、他のＣＰＵ１１とシステムコントローラ１４との間に送出された異なるデータの第１のパケットを、異常なパケットとして打ち切ったパケットの後に送信するようにしている。
【０００６】
図２は、この方法を用いてシステムコントローラ間でデータパケットを伝送する場合のタイムチャートを示す図である。このタイムチャートでは、（１）システムモジュール１０ａのＣＰＵ１１ａからシステムモジュール１０ｂへの正常な第１のデータ１００Ａの送信処理、（２）システムモジュール１０ａのＣＰＵ１１ａからシステムモジュール１０ｂへの異常な第２のデータ１００Ｂの送信処理、（３）システムモジュール１０ａのＣＰＵ１１ｂからシステムモジュール１０ｂへの正常な第３のデータ１００Ｃの送信処理、が続けて行われる場合を示している。また、このタイムチャートにおいて、システムコントローラ１４内におけるレイテンシを５τ（サイクル）としている。
【０００７】
まず、（１）のシステムモジュール１０ａのＣＰＵ１１ａからシステムモジュール１０ｂへ第１のデータ１００Ａが送信される場合について説明する。この場合、ＣＰＵ１１ａからシステムモジュール１０ｂに送信される第１のデータ１００Ａは５つのパケットに分割されて送信されるものとする。時間＝「１」でＣＰＵ１１ａから第１のデータ１００Ａの第１のパケットがバス２１ａに送出され、最後の第５のパケットが時間＝「５」でバス２１ａに送出される。システムコントローラ１４内のレイテンシは５τであるので、第１のパケットは、時間＝「６」でシステムコントローラ１４ａ，１４ｂ間を結ぶバス３１に送出され、最後の第５のパケットは、時間＝「１０」でバス３１に送出される。
【０００８】
つぎに、（２）のシステムモジュール１０ａのＣＰＵ１１ａからシステムモジュール１０ｂへ第２のデータ１００Ｂが送信される場合について説明する。この場合も、ＣＰＵ１１ａからシステムモジュール１０ｂに送信される第２のデータ１００Ｂは５つのパケットに分割されて送信されるものとする。時間＝「７」でＣＰＵ１１ａから第２のデータ１００Ｂの第１のパケットがバス３１に送出され、第４のパケットが時間＝「１０」でバス３１に送出される。その後、ＣＰＵ１１ａまたはバス２１ａの故障によって、第５のパケットがシステムコントローラ１４ａに到着しなかったものとする。このとき、第１のパケットは、時間＝「１２」でシステムコントローラ１４ａ，１４ｂ間を結ぶバスに送出され、第４のパケットは、時間＝「１５」でバス３１に送出される。
【０００９】
そして、（３）のシステムモジュール１０ａのＣＰＵ１１ｂからシステムモジュール１０ｂへ第３のデータ１００Ｃが送信される場合について説明する。この場合も、ＣＰＵ１１ｂからシステムモジュール１０ｂに送信される第３のデータ１００Ｃは５つのパケットに分割されて送信されるものとする。時間＝「８」でＣＰＵ１１ｂから第３のデータ１００Ｃの第１のパケットが、ＣＰＵ１１ｂとシステムコントローラ１４ｂを結ぶバス２１ｂに送出され、第５のパケットが時間＝「１２」でバス２１ｂに送出される。システムコントローラ１４ａは、ＣＰＵ１１ｂからのパケットを受信するが、受信時にシステムコントローラ１４ａ，１４ｂ間を結ぶバスが（２）のＣＰＵ１１ａからシステムモジュール１０ｂへのデータ伝送に使用されているために、バッファに一時記憶される状態となる。
【００１０】
ここで、システムコントローラ１４ａは、第２のデータ１００Ｂの第４のパケットを受信した後、たとえば期待するタイミングで第５のパケットが到着しないので、ＣＰＵ１１ａまたはＣＰＵ１１ａとシステムコントローラ１４ａとを結ぶバス２１ａに故障が発生したものと判断し、ＣＰＵ１１ａからのデータの伝送を打ち切る処理を行う。そして、システムコントローラ１４ａは時間＝「１６」で、第３のデータ１００Ｃの第１のパケットをバス３１に送出する処理を開始し、時間＝「２０」で第５のパケットをバス３１に送出する。以上のようにして、システムモジュール１０ａ，１０ｂ間のデータの伝送が行われる。
【００１１】
しかし、このようなデータ伝送の打ち切り方法では、システムコントローラ１４ｂから見ると、ＣＰＵ１１ａからの異常なパケットとＣＰＵ１１ｂからの正常なパケットとが連続した形のパケットを受取るので、より具体的には、ＣＰＵ１１ａからの全てのパケットが届けられないで、ＣＰＵ１１ｂからのパケットが届けられるので、異常なプロトコルでパケットを受取ってしまうことになる。つまり、システムコントローラ１４ｂにとってはシステムコントローラ１４ａ，１４ｂ間で故障が起きたように見えてしまう。その結果、この場合でも、ＣＰＵ１１ａまたはＣＰＵ１１ａとシステムコントローラ１４ａとの間の伝送経路（バス２１ａ）の故障がシステム全体に波及してしまう。
【００１２】
さらに、図１のような複数のＣＰＵ１１により構成されるシステムは、パーティショニングなどによってＣＰＵ１１ごとに論理的には分割された状態で使用されることも想定される。そのような場合において、ＣＰＵ１１ａの故障においてＣＰＵで共通に使用されているバスが閉塞したり、エラーが連鎖して起こったりすることはシステムの信頼性という観点からは望ましくない。
【００１３】
【特許文献１】特開２００１−１６７０６９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
以上の様な従来の問題点を解決するための確実な手法は、システムコントローラ１４などの中継を担当するチップは、システムモジュール１０内の各処理部からのデータパケットを最後まで受信した後に、異常なパケットを有するデータは破棄し、正常なパケットのみを有するデータをつぎの経路上のチップ（システムコントローラ１４）に伝送させることである。
【００１５】
図３は、処理部からのパケットをすべて受信した後に送信先のシステムモジュールへパケットの送信処理を行う場合のタイムチャートの一例を示す図である。このタイムチャートも図２の場合と同様に、（１）〜（３）の処理が行われるものとする。また、このタイムチャートにおいて、システムコントローラ１４内におけるレイテンシを５τ（サイクル）としている。
【００１６】
まず、（１）のシステムモジュール１０ａのＣＰＵ１１ａからシステムモジュール１０ｂへ第１のデータ１００Ａが送信される場合について説明する。この場合、ＣＰＵ１１ａからシステムモジュール１０ｂに送信される第１のデータ１００Ａは５つのパケットに分割されて送信されるものとする。時間＝「１」でＣＰＵ１１ａから第１のデータ１００Ａの第１のパケットがバス２１ａに送出され、最後の第５のパケットが時間＝「５」でバス２１ａに送出される。この伝送方法では、システムコントローラ１４ａは、データを構成するすべてのパケットを受信してから、正常なパケットからなるデータのみを送信するとともに、システムコントローラ１４内のレイテンシは５τであるため、第５のパケットを正常に受信した後に、第１のパケットの送信処理が開始され、第１のパケットは、時間＝「１０」でシステムコントローラ１４ａ，１４ｂ間を結ぶバス３１に送出され、最後の第５のパケットは、時間＝「１４」でバス３１に送出される。
【００１７】
つぎに、（２）のシステムモジュール１０ａのＣＰＵ１１ａからシステムモジュール１０ｂへ第２のデータ１００Ｂが送信される場合について説明する。この場合も、ＣＰＵ１１ａからシステムモジュール１０ｂに送信される第２のデータ１００Ｂは５つのパケットに分割されて送信されるものとする。時間＝「７」でＣＰＵ１１ａから第２のデータ１００Ｂの第１のパケットがバス２１ａに送出され、第４のパケットが時間＝「１０」でバス２１ａに送出される。その後、ＣＰＵ１１ａまたはＣＰＵ１１ａとシステムコントローラ１４ａ間を結ぶバス２１ａの故障によって、第５のパケットがシステムコントローラ１４ａに到着しなかったものとする。このとき、システムコントローラ１４ａは、第４のパケットを受信した後に、期待される時間内に第５のパケットを受信しないので、異常であると判断し、その異常な第２のデータ１００Ｂとして受信した第１〜第４のパケットを破棄する。そのため、この第２のパケットはシステムコントローラ１４ａ，１４ｂ間を結ぶバス３１には送出されない。
【００１８】
そして、（３）のシステムモジュール１０ａのＣＰＵ１１ｂからシステムモジュール１０ｂへ第３のデータ１００Ｃが送信される場合について説明する。この場合も、ＣＰＵ１１ｂからシステムモジュール１０ｂに送信される第３のデータ１００Ｃは５つのパケットに分割されて送信されるものとする。時間＝「８」でＣＰＵ１１ｂから第３のデータ１００Ｃの第１のパケットが、ＣＰＵ１１ｂとシステムコントローラ１４ａを結ぶバス２１ｂに送出され、第５のパケットが時間＝「１２」でバス２１ｂに送出される。システムコントローラ１４ａは、ＣＰＵ１１ｂからの第１〜第５のパケットを正常に受信する。そして、最後の第５のパケットを受信した後に、第３のデータ１００Ｃの送信処理が開始され、時間＝「１７」でシステムコントローラ１４ａ，１４ｂ間を結ぶバス３１に送出され、最後の第５のパケットは、時間＝「２１」でバスに送出される。
【００１９】
しかしながら、この手法は、信頼性の観点からは望ましいが、パケットを最後まで受け取ってから他のチップ（システムコントローラ１４）に送出する必要があるので、パケット転送のレイテンシが増加してしまうという問題点があった。つまり、ＣＰＵ１１やＣＰＵ１１とシステムコントローラ１４を結ぶバス２１に異常がない場合には、送信するデータサイズが大きいほど、システムコントローラ１４ですべてのデータの到着を待つ必要があるので、レイテンシが増加してしまうという問題点があった。
【００２０】
本発明は、上記に鑑みてなされたものであって、複数の処理部に第１の伝送路を介して接続されるシステムコントローラを有する複数のシステムモジュールが第２の伝送路を介して接続されるマルチプロセッサシステムで使用されるシステムモジュールにおいて、処理部がデータをパケットに分割して送出する処理を行っている最中に、その処理部またはその処理部につながる第１の伝送路上に異常が発生した場合でも、マルチプロセッサシステム全体を停止させることなくマルチプロセッサシステム全体での処理を実行することができるとともに、システムコントローラでパケットを最後まで受け取ってから他のシステムコントローラにデータを転送する場合に比してデータ転送のレイテンシを小さくすることができるシステムモジュールを提供することを目的とする。また、このシステムモジュールにおけるデータ中継方法を提供することも目的とする。
【課題を解決するための手段】
【００２１】
上述した課題を解決し、目的を達成するために、複数の処理装置にそれぞれ接続するとともに、互いにバスを介して接続された複数の転送装置を有する情報処理装置において、前記複数の転送装置の各々は、前記複数の処理装置のうち対応する処理装置からの一つのデータを、前記一つのデータから分割されたパケット毎に受信するとともに、正常にパケットが受信できた場合、前記正常に受信できた正常パケットをデータ記憶部に書込み、正常にパケットが受信できなかった場合、前記正常に受信できなかったパケットに対応するエラー情報をエラー情報記憶部に書き込む書込制御部と、対応するエラー情報が前記エラー情報記憶部に保持されていない場合、前記データ記憶部から読み出した正常パケットを出力し、対応するエラー情報が前記エラー情報記憶部に保持されている場合、前記正常に受信できなかったパケットの変わりに生成した補完パケットを出力することにより、正常パケット又は補完パケットを含んだ一つのデータとして出力する読出制御部とを備える複数の送信制御部と、前記複数の送信制御部に接続されるとともに、前記複数の送信制御部のいずれかからの前記正常パケット又は補完パケットを含んだ一つのデータを他の転送装置から送信する切替部とを備える。
【発明の効果】
【００２２】
システムコントローラにおける第２の伝送路を用いたパケットの送信処理を送信先のシステムコントローラとの間でプロトコル的に正常に終了させることができる。その結果、処理部または第１の伝送路の故障が、マルチプロセッサシステム全体の処理を停滞させることがないという効果を奏する。
【発明を実施するための最良の形態】
【００２３】
以下に添付図面を参照して、本発明にかかるデータ制御回路の好適な実施例を詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００２４】
図１は、本発明にかかるマルチプロセッサシステムの構成を模式的に示すブロック図である。このマルチプロセッサシステムは、マルチプロセッサを有するシステムモジュール１０ａ，１０ｂがバス３１を介して互いに接続される。システムモジュール１０ａは、所定の命令列の入力に基づいて所定の演算処理を実行し、キャッシュメモリを有する２つのＣＰＵ１１ａ，１１ｂと、ＤＩＭＭなどからなるメインメモリ１２ａ，１２ｂと、メインメモリ１２ａ，１２ｂへのアクセス信号などを制御するＭＡＣ（メモリアクセスコントローラ）１３ａ，１３ｂと、他のシステムモジュール１０ｂにパケットを伝送する場合にパケットの中継を行うシステムコントローラ１４ａと、を備える。このシステムモジュール１０ａ内において、ＣＰＵ１１ａ，１１ｂ、ＭＡＣ１３ａ，１３ｂおよびシステムコントローラ１４ａは、互いにバス２１を介して接続されている。この図１では模式的に、ＣＰＵ１１ａとシステムコントローラ１４ａを結ぶ伝送路をバス２１ａとし、ＣＰＵ１１ｂとシステムコントローラ１４ａを結ぶ伝送路をバス２１ｂとしている。ここで、ＣＰＵ１１ａ，１１ｂ，ＭＡＣ１３ａ，１３ｂは請求の範囲の処理部に対応し、バス２１，２１ａ，２１ｂは同じく第１の伝送路に対応し、バス３１は同じく第２の伝送路に対応している。
【００２５】
同様に、システムモジュール１０ｂは、ＣＰＵ１１ｃ，１１ｄ、メインメモリ１２ｃ，１２ｄ、ＭＡＣ１３ｃ，１３ｄ、およびシステムコントローラ１４ｂを備え、ＣＰＵ１１ｃ，１１ｄ、ＭＡＣ１３ｃ，１３ｄとシステムコントローラ１４ｂとは、互いにバスを介して接続される。ここで、ＣＰＵ１１ｃ，１１ｄ、ＭＡＣ１３ｃ，１３ｄは請求の範囲の処理部に対応し、バスは同じく第１の伝送路に対応している。なお、以下では、システムモジュール１０ａの符号を用いて、各部の説明を行う。
【００２６】
システムコントローラ１４ａは、複数のシステムモジュール１０ａ，１０ｂに跨ってパケットを伝送する場合に、受信したパケットを１つ以上の送信先に対して送信する機能を有し、他のシステムモジュール１０ｂのシステムコントローラ１４ｂから受信するパケットを処理する受信処理部と、自システムモジュール１０ａ内の処理部（ＣＰＵ１１ａ，１１ｂ、ＭＡＣ１３ａ，１３ｂ）からのパケットを他のシステムモジュール１０ｂに送信する送信処理部とを有する。この実施例では、システムコントローラ１４ａは、自システムモジュール１０ａ内の処理部が他のシステムモジュール１０ｂに向けてパケットを送信している際に、その処理部またはその処理部とシステムコントローラ１４ａ間のバス（伝送路）２１に異常が発生した場合に、システム全体を停止させずに、システムコントローラ１４ａ，１４ｂ間のバス３１を利用可能な状態を維持させることができるデータ送信制御部を、システムコントローラに接続される処理部ごとに送信処理部に備えることを特徴とする。このデータ送信制御部は、請求の範囲におけるデータ送信制御手段に対応する。
【００２７】
図４は、システムコントローラの送信処理部の構成を模式的に示すブロック図である。この送信処理部５０は、バス２１を介して接続されるシステムモジュール１０ａ内の処理部ごとに設けられるデータ送信制御部５１ａ〜５１ｄと、システムコントローラ１４ａ，１４ｂ間を結ぶバス３１のプライオリティ（使用権）に基づいて他のシステムモジュール１０ｂとの間のバス３１に送出するパケットの切替えを行うデータ伝送調整部５７と、データ伝送調整部５７から送られるパケットをバス３１を介して目的とするシステムモジュール１０ｂのシステムコントローラ１４ｂに送信するパケット送信部５８と、を備える。
【００２８】
また、データ送信制御部５１は、パケット受信部５２と、受信パケット書込制御部５３と、パケット一時記憶部５４と、エラー情報記憶部５５と、送信パケット読出制御部５６と、を有する。なお、図４では、各処理部に対応して設けられる送信処理部の機能構成は同じであるので、データ送信制御部５１ｂ〜５１ｄの内部の機能ブロック図は省略している。この図４では、データ送信制御部５１ａはＣＰＵ１１ａに接続され、データ送信制御部５１ｂはＣＰＵ１１ｂに接続され、データ送信制御部５１ｃはＭＡＣ１３ａに接続され、データ送信制御部５１ｄはＭＡＣ１３ｂに接続される。ここで、受信パケット書込制御部５３は、請求の範囲の受信パケット書込制御手段に対応し、パケット一時記憶部５４は、同じくパケット一時記憶手段に対応し、エラー情報記憶部５５は、同じくエラー情報記憶手段に対応し、送信パケット読出制御部５６は、同じく送信パケット読出制御手段に対応している。
【００２９】
パケット受信部５２は、システムモジュール１０ａ内の自システムコントローラ１４ａと接続される他のＣＰＵ１１ａ，１１ｂやＭＡＣ１３ａ，１３ｂなどの処理部からのパケットを、バス２１ａ，２１ｂ，２１を介して受信する。
【００３０】
受信パケット書込制御部５３は、パケット受信部５２で受信したパケットが、正常なパケットか異常なパケットかを監視し、正常なパケットである場合には、そのパケットをパケット一時記憶部５４に書込み、異常なパケットである場合には、そのパケットが異常であることを示すエラー情報をエラー情報記憶部５５に書込む。この受信パケット書込制御部５３による処理は、パケット受信部５２でパケットを受信するとすぐに実行される。また、受信パケット書込制御部５３による受信したパケットの正常か異常かの判定は、システムコントローラ１４ａのインタフェース上の取り決めに合ったパケットであるか否かに基づいて判定を行う。この実施例では、受信パケット書込制御部５３は、処理部から送信されたデータを構成する１以上のパケットについて、その先頭のパケットが保持するヘッダ情報から全パケット数を抽出し、全パケット数を受信する前に、その処理部からのパケットが所定の時間内に到達しない場合には、異常であると判定する場合を例に挙げる。このような異常の原因として、パケットの送信元である処理部の異常（故障）、処理部とシステムコントローラ１４ａとの間のバス２１の異常、受信パケット書込制御部５３自身の異常、などを例示することができる。
【００３１】
パケット一時記憶部５４は、パケット受信部５２で受信した正常なパケットを記憶する。また、エラー情報記憶部５５は、受信パケット書込制御部５３により受信異常と判定されたパケットについて、そのパケットが受信異常であることを示すエラー情報を書込む。
【００３２】
送信パケット読出制御部５６は、エラー情報記憶部５５を参照しながら、送信すべきパケットをパケット一時記憶部５４から読出して、またはエラー情報記憶部５５にエラー情報が記憶されたパケットについては、そのパケットがエラーである旨を示すエラーパケット（以下、補完パケットという）を補完して、パケット送信部５８に向けて出力する。たとえば、実際には存在するはずのパケットがシステムコントローラ１４ａに届かなかった場合に、そのパケットの代わりにエラー情報を含む補完パケットを補完して、パケット送信部５８に向けて送信する。この送信パケット読出制御部５６は、パケット一時記憶部５４にパケットが記憶されると、すぐに送信処理を行う。
【００３３】
データ伝送調整部５７は、システムモジュール１０ａ，１０ｂ間を結ぶバス３１の使用権に基づいて、システムコントローラ１４ａとバス２１を介して接続される処理部ごとに設けられるデータ送信制御部５１ａ〜５１ｄからのパケットをバス３１に送出するための切替え処理を行って、パケットをパケット送信部５８に流す機能を有する。また、パケット送信部５８は、データ伝送調整部５７から渡されたパケットを、システムモジュール１０ａ，１０ｂ間を結ぶバス３１に送信する機能を有する。
【００３４】
つぎに、このような構成を有するシステムコントローラ１４ａの送信処理について説明する。まず、データ送信制御部の受信パケット書込制御部による受信パケット書込処理について、図５のフローチャートを参照しながら説明する。なお、ここでは、データ送信制御部５１に接続される処理部から送信されるデータが、ｎ個（ｎは自然数）の第１〜第ｎのパケットに分割されて送信されるものとする。また、第１のパケットは、エラーが発生していないものとして扱うものとする。
【００３５】
まず、所定の処理部に接続されるデータ送信制御部５１は、パケット受信部５２でその処理部からのパケットを受信しない状態（ステップＳ１０１でＮｏの場合）には、待ち状態となる。一方、パケット受信部５２でパケットを受信すると（ステップＳ１０１でＹｅｓの場合）には、受信パケット書込制御部５３は、パケット受信部５２から受取ったパケット、つまり第１のパケットのヘッダ情報を読取り、その処理部から送信される全パケット数ｎを取得する（ステップＳ１０２）とともに、受信パケット数をカウントする（ステップＳ１０３）。ついで、その第１のパケットをパケット一時記憶部５４に書込む（ステップＳ１０４）。
【００３６】
ついで、受信パケット書込制御部５３は、受信パケット数が全パケット数ｎに達したか否かを判定する（ステップＳ１０５）。受信パケット数が全パケット数ｎに達した場合（ステップＳ１０５でＹｅｓの場合）には、ステップＳ１０１へと戻り、つぎの新たなデータを構成するパケットの受信待ちの状態となる。一方、受信パケット数が全パケット数ｎに満たない場合（ステップＳ１０５でＮｏの場合）には、受信パケット書込制御部５３は、つぎのパケットを、その前のパケットを受信してから所定の時間内で受信したか否かを判定する（ステップＳ１０６）。
【００３７】
所定の時間内でつぎのパケットを受信した場合（ステップＳ１０６でＹｅｓの場合）には、受信パケット数をカウントし（ステップＳ１０７）、そのパケットをパケット一時記憶部５４に書込んで記憶させる（ステップＳ１０８）。その後、ステップＳ１０５へと戻り、上述した工程を繰り返し実行する。
【００３８】
一方、所定の時間内でつぎのパケットを受信しなかった場合（ステップＳ１０６でＮｏの場合）には、受信パケット書込制御部５３は、そのパケットを送信した処理部、その処理部との間のバス２１または受信パケット書込制御部５３自身に（つまり、パケットの受信経路上に）異常が発生したと判定し（ステップＳ１０９）、エラー情報記憶部５５にその番号のパケットが異常である旨のエラー情報を書込む（ステップＳ１１０）。その後、受信パケット書込制御部５３は、エラーが発生したパケットであるが、処理したパケットとして受信パケット数をカウントして（ステップＳ１１１）、ステップＳ１０５へと戻り、上述した処理が繰り返し実行される。以上のようにして、受信パケット書込制御部５３による受信パケット書込処理が行われる。
【００３９】
なお、上述した受信パケット書込処理の説明では、全パケット数に達するまで、受信したパケットの１つ１つについて、異常か否かを判定し、パケット数をカウントする処理を行っていた。しかし、受信したパケットのうち１つでも異常であれば、そのパケットを含むデータは、受信側で使い物にならない。そこで、最初に異常なパケットと判定された場合には、その後のパケットの受信処理を行わず、以後の全パケットをすべて異常なパケットとして処理するようにしてもよい。
【００４０】
つぎに、データ送信制御部の送信パケット読出制御部による送信パケット読出処理について、図６のフローチャートを参照しながら説明する。なお、ここでは、図５と同様に、データがｎ個（ｎは自然数）の第１〜第ｎのパケットに分割されて送信されるものとする。また、第１のパケットは、エラーが発生していないものとして扱うものとする。
【００４１】
最初に、データ送信制御部５１に接続される処理部からパケットを受信せず、パケット一時記憶部５４にパケットが記憶されていない場合（ステップＳ１３１でＮｏの場合）には、送信パケット読出制御部５６は、待ち状態となる。一方、パケット一時記憶部５４にパケットが一時的に記憶されている場合（ステップＳ１３１でＹｅｓの場合）には、送信パケット読出制御部５６は、処理部から受信した第１のパケットをパケット一時記憶部５４から読出し、ヘッダ情報を示すタグをパケットに付加する（ステップＳ１３２）。
【００４２】
図７は、送信するパケットに付すタグの一例を示す図であり、図８−１は、正常なパケットにタグを付した一例を示す図であり、図８−２は、異常なパケットにタグを付した一例を示す図である。この例では、パケットの種類に応じて２ビットのタグ（パケット異常状態表示情報）を付すようにしている。たとえば、タグ「０１」は、パケットの内容がそのパケットを含むデータについてのパケット数を含むヘッダ情報であることを示しており、タグ「１０」は、正常にパケット受信部５２によって受信されたパケットであることを示しており、タグ「１１」は、正常にパケット受信部５２で受信されなかったパケットであること、すなわち、データ送信制御部５１に接続される処理部、その処理部との間のバス２１または受信パケット書込制御部５３の故障によってパケットを受信できず、補完された補完パケットであることを示している。図８−１と図８−２に示されるように、第１のパケット１１１−１，１２１−１は、ヘッダ情報であるので、パケット一時記憶部５４から読出されたパケット１１１ａの先頭にタグ１１１ｂとして「０１」が付されることになる。
【００４３】
また、送信パケット読出制御部５６は、読出したパケットを送信するために送信先のシステムコントローラ１４ａ，１４ｂ間を結ぶバス３１の使用権を確保する（ステップＳ１３３）。その後、送信パケット読出制御部５６は、第１のパケットをデータ伝送調整部５７に送出する（ステップＳ１３４）。
【００４４】
ついで、送信パケット読出制御部５６は、エラー情報記憶部５５のつぎのパケットについてのエラー情報を参照し（ステップＳ１３５）、このエラー情報に基づいてつぎのパケットが異常であるか否かを判定する（ステップＳ１３６）。つぎのパケットのエラー情報が異常でない場合（ステップＳ１３６でＮｏの場合）には、パケット一時記憶部５４につぎのパケットが書込まれたか判定する（ステップＳ１３７）。パケット一時記憶部５４につぎのパケットが書込まれない場合（ステップＳ１３７でＮｏの場合）には、待ち状態となる。そして、パケット一時記憶部５４につぎのパケットが書込まれると（ステップＳ１３７でＹｅｓの場合）、送信パケット読出制御部５６は、パケット一時記憶部５４からつぎのパケットを読出し、正常に受信されたパケットであることを示すタグを付加する（ステップＳ１３８）。この場合、正常なパケットであるので、パケット一時記憶部５４から読出されたパケットの先頭には、図８−１の第２〜第５のパケット１１１−２〜１１１−５や図８−２の第２〜第４のパケット１２１−２〜１２１−４のようにタグ１１１ｂとして「１０」が付加される。その後、タグを付加されたパケットがデータ伝送調整部５７へと送出される（ステップＳ１３９）。
【００４５】
また、ステップＳ１３６でつぎのパケットのエラー情報が異常である場合（ステップＳ１３６でＹｅｓの場合）には、送信パケット読出制御部５６は、予め定められた形式のエラーを示す補完パケットを生成して（ステップＳ１４０）、エラーパケットであることを示すタグを生成した補完パケットに付加する（ステップＳ１４１）。この場合、補完パケットであるので、生成された補完パケット１１１ａの先頭には、図７や図８−２の第５のパケット１２１−５のようにタグ１１１ｂとして「１１」が付加される。その後、このエラーパケットがデータ伝送調整部５７へと送出される（ステップＳ１４２）。
【００４６】
その後またはステップＳ１３９の後、送信パケット読出制御部５６は、ステップＳ１３９またはステップＳ１４２で送出したパケットは最後のパケットか否かを判定する（ステップＳ１４３）。この判定は、ステップＳ１３２で読出した第１のパケットに含まれる全パケット数に、送出したパケット数が達したか否かによって判定される。送出したパケットが最後のパケットではない場合（ステップＳ１４３でＮｏの場合）には、ステップＳ１３５へと戻り、上述した処理が繰り返し実行される。また、送出したパケットが最後のパケットである場合（ステップＳ１４３でＹｅｓの場合）には、ステップＳ１３１へと戻り、つぎの新たなデータのパケットがパケット一時記憶部５４に記憶されるまで待ち状態となり、上述した処理が繰り返し実行される。以上のようにして、送信パケット読出制御部５６による送信パケットの読出処理が行われる。
【００４７】
なお、上述した受信パケット書込処理の説明では、全パケット数に達するまで、受信したパケットの１つ１つについて、異常か否かを判定し、パケット数をカウントする処理を行っていた。しかし、受信したパケットのうち１つでも異常であれば、そのパケットを含むデータは、受信側で使い物にならない。そこで、最初に異常なパケットと判定された場合には、その後のパケットの受信処理を行わず、以後の全パケットをすべて異常なパケットとして処理するようにしてもよい。
【００４８】
以上のようにして、システムモジュール１０ａ内の処理部から来るべきパケットが来ない場合でも、その来るべきパケットを補完してエラー情報を含む補完パケットを他のシステムモジュール１０ｂに送信するようにしたので、その処理部からのパケットの送信処理をシステムモジュール１０ａ，１０ｂ間でプロトコル的に正常に終わらせることができる。
【００４９】
以下に、このような機能構成を有するシステムコントローラについて、さらに具体的な例を挙げて説明する。図９は、図４に示されるシステムコントローラの送信処理部の回路構成の一例を示す回路ブロック図である。この送信処理部は、各処理部に対応して存在するデータ送信制御部５１ａ〜５１ｄと、各データ送信制御部５１ａ〜５１ｄから送信されるパケットの切替えを行うデータ切替回路８１と、パケットを送信する送信フリップフロップ回路（以下、送信ＦＦという）８２と、を備える。ここで、データ切替回路８１は、図４のデータ伝送調整部５７に対応し、送信ＦＦ８２は、同じくパケット送信部５８に対応する。
【００５０】
また、各データ送信制御部５１ａ〜５１ｄは、対応する処理部からのパケットを受信する受信フリップフロップ回路（以下、受信ＦＦという）７２と、受信したパケットの内容が一時的に記憶されるＲＡＭ（Random  Access  Memory）７３と、ＲＡＭ７３内に記憶されたパケットを読出すＲＡＭ読出フリップフロップ回路（以下、ＲＡＭ読出ＦＦという）７４と、受信したパケットの異常の有無を監視してＲＡＭ７３への書込みを制御するパケット書込制御回路７５と、受信したパケットのエラー状態を記憶するエラー状態記憶フリップフロップ回路（以下、エラー状態ＦＦという）７６と、ＲＡＭ７３から読込むパケットに同期して異常状態の有無をフラグで示すラッチ回路７７と、ラッチ回路７７を参照してＲＡＭ読出ＦＦ７４によるＲＡＭ７３からのパケットの読出しの制御を行い、異常なパケットの場合にはエラー情報を含む補完パケットを生成して送信するパケット読出制御回路７８と、ラッチ回路７７の情報に基づいてＲＡＭ読出ＦＦ７４からのパケットかパケット読出制御回路７８からの補完パケットかを選択するセレクタ７９と、を備える。
【００５１】
ここで、受信ＦＦ７２は、図４のパケット受信部５２に対応し、ＲＡＭ７３は、同じくパケット一時記憶部５４に対応し、パケット書込制御回路７５は、同じく受信パケット書込制御部５３に対応し、エラー状態ＦＦ７６とラッチ回路７７は、同じくエラー情報記憶部５５に対応し、ＲＡＭ読出ＦＦ７４とパケット読出制御回路７８とセレクタ７９は、送信パケット読出制御部５６に対応している。
【００５２】
エラー状態ＦＦ７６は、ＲＡＭ７３のパケット記憶領域に記憶されたパケット（データ）が正常か否かを、ＲＡＭ７３のパケット記憶領域に対応付けて記憶する回路である。ここでは、正常なパケットの場合には「０」が記憶され、異常なパケットの場合には「１」が記憶されるものとする。図１０は、ＲＡＭの記憶領域とエラー状態ＦＦの対応を模式的に示す図である。ＲＡＭ７３には、受信したパケットを記憶するパケット記憶領域７３１ａ〜７３１ｄが予め割り当てられている。そして、それぞれのパケット記憶領域７３１にアドレスが付されている。たとえば、第１のパケット記憶領域７３１ａのアドレス（２進数）は、「００○○○」で表され、第２のパケット記憶領域７３１ｂのアドレスは、「０１○○○」で表され、第３のパケット記憶領域７３１ｃのアドレスは、「１０○○○」で表され、第４のパケット記憶領域７３１ｄのアドレスは、「１１○○○」で表されるものとする。ただし、「○○○」は、任意の２進数を表している。このようにパケット記憶領域７３１ａ〜７３１ｄが設けられたＲＡＭ７３に対して、エラー状態ＦＦ７６は、ＲＡＭ７３に設けられたパケット記憶領域７３１に対応する１ビットの記憶領域７６１を有している。ここで、上記ＲＡＭのパケット記憶領域７３１ａ〜７３１ｄは、そのアドレスの上位２ビットで識別することができる。そこで、そのパケット記憶領域７３１ａ〜７３１ｄのアドレスの上位２ビットを識別子として用いて、この識別子をエラー状態ＦＦ７６の各記憶領域７６１ａ〜７６１ｄに対応付けている。この図１０の例では、エラー状態ＦＦ７６の上位ビット（記憶領域７６１ａ〜７６１ｄ）から順に、「００」、「０１」、「１０」、「１１」が対応付けられている。
【００５３】
ラッチ回路７７は、後述するパケット読出制御回路７８がＲＡＭ７３からパケットを読出す際に、そのパケットの異常状態の有無をフラグで示す。この例では、正常なパケットである場合には「０」が記憶され、異常なパケットである場合には「１」が記憶される。
【００５４】
パケット読出制御回路７８は、ラッチ回路７７のフラグに基づいて、送出するパケットの制御を行う。具体的には、ＲＡＭ７３からＲＡＭ読出ＦＦ７４へのパケットの読出時に、ラッチ回路７７が「０」を示している場合には、読出すパケットが正常であることを示しているので、パケット読出制御回路７８はＲＡＭ７３からＲＡＭ読出ＦＦ７４へパケットの読出しを行う。一方、ＲＡＭ７３からＲＡＭ読出ＦＦ７４へのパケットの読出時に、ラッチ回路７７が「１」を示している場合には、読出すパケットが異常であること（パケットがないこと）を示しているので、パケット読出制御回路７８はエラーを示す内容を有し、本来あるはずのパケットを補完する補完パケットを生成する。また、パケット読出制御回路７８は、ＲＡＭ７３からのあるデータの第１のパケットの読出し処理が行われると、送信先のシステムモジュール１０ｂに接続されるバス３１の使用権を確保する処理を行う。
【００５５】
ＲＡＭ読出ＦＦ７４は、パケット読出制御回路７８によって読出されたパケットを一時的に記憶する。また、セレクタ７９は、ラッチ回路７７のエラー情報を参照して、ＲＡＭ読出ＦＦ７４からのパケットかパケット読出制御回路７８からの補完パケットかを選択して、データ切替回路８１に渡す。
【００５６】
なお、その他の構成要素は、基本的に図４で説明した対応する構成要素と同一の機能を有するので詳細な説明を省略する。
【００５７】
つぎに、１つのデータが第１〜第５のパケットの５つのパケットに分割されてシステムモジュール１０ａのＣＰＵ１１ａから他のシステムモジュール１０ｂのＭＡＣ１３ｃに送信される場合を例に挙げて、より具体的なパケット送信処理部の動作処理について説明する。
【００５８】
最初に、パケット書込制御回路７５による受信パケットの処理について説明する。図１１は、パケット書込制御回路の状態遷移を示す図である。この図に示されるように、ＣＰＵ１１ａから他のシステムモジュール１０ｂ宛のデータを受信しない場合には、アイドル状態（図中、IDLEと表記）にある（ＳＴ１０１）。その後、受信ＦＦ７２に第１のパケットが正常に到着すると、パケット書込制御回路７５は、第１のパケット受信状態（図中、1st  RCVと表記）となる（ＳＴ１０２）。ここで、パケット書込制御回路７５は、第１のパケットのヘッダ情報から一連のパケットの総数（全パケット数）を抽出する。そして、第１のパケットをＲＡＭに書込むとともに、書込んだＲＡＭのパケット記憶領域に対応するエラー状態ＦＦ７６の記憶領域には、正常なパケットであることを示すエラー情報「０」が記憶される。
【００５９】
この第１のパケット受信状態で、第１のパケットが受信されてから期待するタイミングで受信ＦＦ７２に第２のパケットが正常に（異常なく）到着すると、パケット書込制御回路７５は、第２のパケット受信状態（図中、2nd  RCVと表記）となる（ＳＴ１０３）。ここで、パケット書込み制御回路は、第２のパケットをＲＡＭ７３に書込むとともに、書込んだＲＡＭ７３のパケット記憶領域７３１に対応するエラー状態ＦＦ７６の記憶領域７６１には、正常なパケットであることを示すエラー情報「０」が記憶される。ただし、アイドル状態（初期状態）では、エラー状態ＦＦ７６の記憶領域７６１はリセットされた状態にあるとすると、実際には記憶領域７６１にはエラー情報を書込む処理は何も行われない。
【００６０】
その後、第３のパケットから第５のパケットまで、その前のパケットが受信されてから期待するタイミングで受信ＦＦ７２に正常に（異常なく）到着した場合にも、パケット書込制御回路７５は、同様の状態となり、同様の処理を行う（ＳＴ１０３〜ＳＴ１０６）。ただし、一連のパケットの最後のパケット、すなわちこの例では第５のパケットを受信した第５のパケット受信状態（図中、5th  RCVと表記）の後では、パケット書込制御回路７５は、ＳＴ１０１のアイドル状態に遷移する。
【００６１】
一方、第１のパケット受信状態（ＳＴ１０２）で、第１のパケットが受信されてから期待するタイミングで（所定の時間内に）受信ＦＦ７２に第２のパケットが到着しないかまたは他の異常を検出した場合には、パケット書込制御回路７５は、エラー状態ＦＦ７６の第２のパケットに対応する記憶領域に異常を示す「１」をセットし、また、以降のパケット（ここでは第３〜第５のパケット）に対応するエラー状態ＦＦ７６の記憶領域にも異常を示す「１」を書き込んで、ＳＴ１０１のアイドル状態に遷移する。
【００６２】
同様に、第２〜第４のパケット受信状態（ＳＴ１０３〜ＳＴ１０５）でも、その前のパケットが受信されてから期待するタイミングで（所定の時間内に）受信ＦＦ７２に第３〜第５のパケットが到着しないかまたは他の異常を検出した場合には、パケット書込制御回路７５は、エラー状態ＦＦ７６の第３〜第５のパケットに対応する記憶領域に異常を示す「１」をセットし、また、以降のパケットに対応するエラー状態ＦＦ７６の記憶領域にも異常を示す「１」を書き込んで、ＳＴ１０１のアイドル状態に遷移する。なお、この図１１の例では、パケット書込制御回路７５がエラーを検出すると、それ以降のパケットの分までエラー状態ＦＦ７６に異常を示す「１」を書き込むようにしているが、パケット読出制御回路７８側のラッチ回路７７は、異常を示す「１」を一度検出すると、そのデータ送信が完了するまで「１」を保持するように動作させてもよい。
【００６３】
つぎに、パケット読出制御回路７８によるパケットの送信処理について説明する。図１２は、パケット読出制御回路の状態遷移を示す図である。この図に示されるように、パケット読出制御回路７８は、ＲＡＭ７３にパケットが記憶されていない状態にある場合には、アイドル状態（図中、IDLEと表記）にある（ＳＴ１２１）。その後、ＲＡＭ７３に第１のパケットが書込まれると、パケット読出制御回路７８は、ＲＡＭ７３に記憶された第１のパケットを読出してＲＡＭ読出ＦＦ７４に格納するとともに、送信先のシステムコントローラ１４ｂとの間のバス３１の使用権を確保する。そして、パケット読出制御回路７８は、第１のパケットを送信して、第１のパケットの送信状態（図中、1st  SENDと表記）に移る（ＳＴ１２２）。
【００６４】
ここで、パケット読出制御回路の第１のパケット送信状態以降の処理手順について図１３のフローチャートを参照しながら説明する。最初に、パケット読出制御回路７８は、ＲＡＭ７３につぎのパケットが書込まれているか否かを判定する（ステップＳ２０１）。ＲＡＭ７３につぎのパケットが書込まれている場合（ステップＳ２０１でＹｅｓの場合）には、パケット読出制御回路７８は、つぎのパケットをＲＡＭ７３から読出してＲＡＭ読出ＦＦ７４に格納する（ステップＳ２０２）。そして、パケット読出制御回路７８は、ＲＡＭ読出ＦＦ７４に格納されたつぎのパケットに正常なパケットであることを示すタグを付加して送信し（ステップＳ２０３）、処理を終了する。このとき送信されるパケットは、図８−１の第２〜第５のパケット１１１−２〜１１１−５や図８−２の第２〜第４のパケット１２１−２〜１２１−４のように、ＲＡＭ７３に書込まれたパケット１１１ａの先頭に、タグ１１１ｂとして正常なデータであることを示す「１０」（２ビット）が付加されたものとなる。
【００６５】
一方、ＲＡＭ読出ＦＦ７４につぎのパケットが格納されていない場合（ステップＳ２０１でＮｏの場合）には、パケット読出制御回路７８は、ラッチ回路７７の値が「１」であるか否かを判定する（ステップＳ２０４）。ラッチ回路７７の値が「１」でない場合（ステップＳ２０４でＮｏの場合）には、ステップＳ２０１へと戻り、つぎのパケットがＲＡＭ読出ＦＦ７４に格納されるまで待ち状態となる。また、ラッチ回路７７の値が「１」である場合（ステップＳ２０４でＹｅｓの場合）には、パケット読出制御回路７８は、エラー情報を含む補完パケットを生成して送信し（ステップＳ２０５）、処理を終了する。このとき送信される補完パケットは、図８−２の第５のパケット１２１−５に示されるように、エラー情報を含む補完パケット１１１ａの先頭に、タグ１１１ｂとして異常なデータであることを示す「１１」（２ビット）が付加されたものとなる。
【００６６】
ここで再び図１２に戻り、パケット読出制御回路７８の状態遷移とそのときの処理について説明する。ＳＴ１２２の第１のパケット送信状態では、図１３のフローチャートにしたがった処理を行う。すなわち、第２のパケットがＲＡＭ７３に書込まれると、パケット読出制御回路７８は、第２のパケットをＲＡＭ７３から読出してＲＡＭ読出ＦＦ７４に格納し、第２のパケットを送信して第２のパケット送信状態（図中、2nd  SENDと表記）に移る（ＳＴ１２４）。一方、ＲＡＭ７３に第２のパケットが書込まれない状態で、第２のパケットに対応するラッチ回路７７が正常を示す「０」である場合には、パケット読出制御回路７８は、待ち状態（図中、WAITと表記）に移る（ＳＴ１２３）。この待ち状態で、第２のパケットがＲＡＭ７３に書込まれると、パケット読出制御回路７８は、第２のパケットをＲＡＭ７３から読出してＲＡＭ読出ＦＦ７４に格納し、第２のパケットを送信する第２のパケット送信状態に移る（ＳＴ１２４）。
【００６７】
第２のパケット送信状態から第４のパケット送信状態における正常なパケットの送信処理についても、上述した第１のパケット送信状態のＳＴ１２３またはＳＴ１２４の状態に対応して、ＲＡＭ７３に書込まれた第３〜第５のパケットをＲＡＭ読出ＦＦ７４に格納した後に送信する処理を行う（ＳＴ１２５〜ＳＴ１３０）。ただし、最後のパケット、すなわちこの例では第５のパケットを送信した第５のパケット送信状態（ＳＴ１３０）の後では、パケット読出制御回路７８は、ＳＴ１２１のアイドル状態に戻る。
【００６８】
一方、第１〜第４のパケット送信状態（ＳＴ１２２，ＳＴ１２４，ＳＴ１２６，ＳＴ１２８）の各状態で、ラッチ回路７７に異常を示すフラグ「１」が立てられている場合には、パケット読出制御回路７８は、図１３のフローチャートのステップＳ２０４〜Ｓ２０５に示される処理を行う。つまり、パケット読出制御回路７８は、ラッチ回路７７の値が「１」である場合には、補完パケットを送信して、第２〜第５の送信状態に遷移する（ＳＴ１２４，ＳＴ１２６，ＳＴ１２８，ＳＴ１３０）。
【００６９】
また、待ち状態（ＳＴ１２３，ＳＴ１２５，ＳＴ１２７，ＳＴ１２９）の各状態で、ラッチ回路７７に異常を示すフラグ「１」が立てられている場合にも、パケット読出制御回路７８は、図１３のフローチャートのステップＳ２０４〜Ｓ２０５に示される処理を行う。つまり、パケット読出制御回路７８は、ラッチ回路７７の値が「１」である場合には、補完パケットを送信して、第２〜第５の送信状態に遷移する（ＳＴ１２４，ＳＴ１２６，ＳＴ１２８，ＳＴ１３０）。
【００７０】
以上のようにして、正常なパケットの場合には図８−１に示されるパケットが１１１−１〜１１１−５、パケット読出制御回路７８から送信され、第５のパケットが異常な場合には図８−２に示されるパケット１２１−１〜１２１−５が、パケット読出制御回路７８から送信される。
【００７１】
ここで、図９に示されるシステムコントローラでの各処理部における処理の流れの様子を図１４のタイムチャートを参照しながら説明する。なお、図１４の縦軸には、パケットが流れていく経路上の処理部（回路）が順に記載されている。つまり、ＣＰＵ１１ａとシステムコントローラを結ぶバス（図中、BUSと表記）２１ａ、受信ＦＦ７２、エラー状態ＦＦ７６、ＲＡＭ７３、ＲＡＭ読出ＦＦ７４、パケット読出制御回路７８の状態（ステータス）、ラッチ回路７７、送信ＦＦ８２におけるタイムチャートが示されている。また、横軸はサイクル（時間）を示している。
【００７２】
また、この例では、最初にシステムモジュール１０ａのＣＰＵ１１ａからバス２１ａに５つのパケットからなる第１のデータ１００Ａの第１〜第５のパケットが正常に流され、また、その１サイクル後に、システムモジュール１０ａのＣＰＵ１１ａからバス２１ａに５つのパケットからなる第２のデータ１００Ｂの第１〜第５のパケットが流されたものとする。ただし、第２のデータ１００Ｂは、第４のパケットの転送後にＣＰＵ１１ａまたはバス２１ａ上で故障が発生して第５のパケットがシステムコントローラ１４ａに到達しない場合を以下に示す。つまり、正常な第１のデータ１００Ａの送信後に、異常なパケットを含む第２のデータ１００Ｂがシステムモジュール１０ａ，１０ｂ間で送信される場合の処理について説明する。
【００７３】
まず、受信ＦＦ７２では、バス２１ａより１サイクル遅れてＣＰＵ１１ａからの第１のデータ１００Ａの第１のパケットを受信する。パケット書込制御回路７５は、受信された第１のデータ１００Ａについて監視するが、第１のデータ１００Ａの第２〜第５のパケットについては、その前のパケットを受信してから所定の時間内につぎのパケットを受信しているので異常とは判定しない。そのため、エラー状態ＦＦ７６には何の状態も書込まれない。また、パケット書込制御回路７５は、受信したパケットに異常が無いことから、受信ＦＦ７２から１サイクル遅れてＲＡＭ７３に受信した第１〜第５のパケットを順に書込む。なお、ここでは、エラー状態ＦＦ７６には何も書込まれないが、図に示すように、ＲＡＭ７３へのパケットの書込みと同期して、「０」が設定されている状態にある。
【００７４】
ＲＡＭ読出ＦＦ７４では、ＲＡＭ７３から２サイクル遅れてＲＡＭ７３に書込まれたパケットが読出されて格納される。また、ラッチ回路７７には、エラー状態ＦＦ７６から１サイクル遅れて、ＲＡＭ読出ＦＦ７４に格納されたパケットに対応するエラー状態ＦＦ７６の内容が書込まれる。
【００７５】
一方、パケット読出制御回路７８は、ＲＡＭ読出ＦＦ７４にパケットが格納されるまでアイドル状態にあるが、ＲＡＭ読出ＦＦ７４に第１のパケットのデータが書込まれると、ラッチ回路７７の値を参照して、そのパケットを送信する状態となる。つまり、パケット読出制御回路７８は、第１のデータ１００Ａの第１のパケットに対応する時間「４」でラッチ回路７７の値が「０」であるので、時間「５」において第１のパケットを送信し、第２のパケットに対応する時間「５」でラッチ回路７７の値が「０」であるので、時間「６」で第２のパケットを送信する、という処理を第５のパケットを送信するまで繰り返して行う。送信ＦＦ８２では、ＲＡＭ読出ＦＦ７４よりも１サイクル遅れて、バス３１上に第１〜第５のパケットを順に送信する。以上で、正常に受信したパケットからなる第１のデータ１００Ａの送信処理が終了する。
【００７６】
その後、時間「７」からＣＰＵ１１ａからバス２１ａに送出された第２のデータ１００Ｂの第１〜第４のパケットについても同様にしてバス３１に送出される。しかし、本来時間「１０」でＣＰＵ１１ａから送出されるはずの第５のパケットは、受信ＦＦ７２に届かない。そのため、パケット書込制御回路７５は、時間「１２」で本来到着すると期待される第５のパケットが到着しないために、時間「１３」でエラー状態ＦＦ７６の第５のパケットに対応する記憶領域７６１にフラグを立てる（エラー状態ＦＦ７６を「有効（図中では、validと表記）」にする）。同時に、ＲＡＭ７３にはデータが到着しないので、時間「１３」ではパケット書込制御回路７５による書込処理が行われない。その後、この第５のパケットに対応するエラー状態ＦＦ７６の記憶領域７６１のフラグは、１サイクル後（すなわち時間「１４」）にラッチ回路７７に反映される。
【００７７】
これにより、パケット読出制御回路７８は、時間「１４」で第５のパケットについて、ラッチ回路７７にフラグが立っている（「有効」になっている）ことを確認し、時間「１５」でＲＡＭ読出ＦＦ７４に格納されない第５のパケットの代わりに、エラー情報を含む補完パケットを生成し、送信する。その後、パケット読出制御回路７８はアイドル状態となり、時間「１６」でエラーデータを含む補完パケットがバス３１に送信されることになる。以上で、異常なパケットを含む第２のデータ１００Ｂ１の送信処理が終了する。
【００７８】
本実施例によれば、パケットの送信元の処理部または処理部とシステムコントローラ１４ａ間のバス２１ａが異常によって本来送信されるべきパケットがシステムコントローラ１４ａに受信されない場合でも、その異常を検知して補完パケットを生成して、そのパケットの代わりに送信先のシステムコントローラ１４ｂに送信するようにしたので、異常が発生したデータでも、システムモジュール１０ａ，１０ｂ間のバスが異常の所為で解放されない状態を防ぐことができ、その異常でシステム全体の処理を停止させてしまうことがないという効果を有する。その結果、複数の処理部（ＬＳＩ）またはその処理部とシステムコントローラ１４ａ，１４ｂとを結ぶバス２１（伝送路）の故障によるパケットの消失があった場合でも、その影響をマルチプロセッサシステム内で限定的にすることができる。
【００７９】
また、この実施例によれば、受信したパケットがパケット一時記憶部５４（ＲＡＭ７３）に書込まれるとすぐに、送信処理を開始するので、すべてのパケットを受信できてからパケットの送信処理を開始する場合に比して、システムコントローラ１４ａ，１４ｂにおけるレイテンシの増加を抑えることができるという効果も有する。
【００８０】
また、処理部または第１の伝送路の故障によって正常に受信されないパケットに代えて、そのパケットの異常を示す内容を含む補完パケットを生成して第２の伝送路上に送信するようにしたので、システムコントローラにおける第２の伝送路を用いたパケットの送信処理を送信先のシステムコントローラとの間でプロトコル的に正常に終了させることができる。その結果、処理部または第１の伝送路の故障が、マルチプロセッサシステム全体の処理を停滞させることがないという効果を奏する。
【００８１】
また、正常に受信できなかったパケットについてエラー情報を保持し、このエラー情報に基づいて、処理部から受信したパケットを第２の伝送路上に送信するようにしたので、個々のパケットについて、第２の伝送路への送信処理を個別に行うことができるという効果を有する。また、受信したパケットをすぐに送信するように処理しているので、すべてのパケットを受信して、異常なパケットを含まないデータのみ第２の伝送路に送信する場合に比して、システムコントローラにおけるレイテンシを抑えることができるという効果も有する。
【００８２】
さらに、受信パケット書込制御手段で、処理部から送信される一連のデータを構成する複数のパケットのうち、正常に受信できなかった最初のパケットよりも後のパケットのすべてを受信異常として処理するようにしたので、一つでも受信異常となったパケットを含む一連のデータにおける処理部からの受信処理を簡略化することができるという効果を有する。
【産業上の利用可能性】
【００８３】
以上のように、本発明にかかるマルチプロセッサシステムは、システムモジュール間を跨ってデータ伝送を行う場合に有用である。
【図面の簡単な説明】
【００８４】
【図１】図１は、マルチプロセッサシステムの構成例を示すブロック図である。
【図２】図２は、システムコントローラ間でデータパケットを伝送する場合のタイムチャートの従来例を示す図である。
【図３】図３は、システムコントローラ間でデータパケットを伝送する場合のタイムチャートの従来例を示す図である。
【図４】図４は、システムコントローラの送信処理部の構成を模式的に示すブロック図である。
【図５】図５は、データ送信制御部の受信パケット書込制御部による受信パケット書込処理の一例を示すフローチャートである。
【図６】図６は、データ送信制御部の送信パケット読出制御部による送信パケット読出処理の一例を示すフローチャートである。
【図７】図７は、送信するパケットに付すタグの一例を示す図である。
【図８−１】図８−１は、正常なパケットにタグを付した一例を示す図である。
【図８−２】図８−２は、異常なパケットにタグを付した一例を示す図である。
【図９】図９は、図４に示されるシステムコントローラの送信処理部の回路構成の一例を示す回路ブロック図である。
【図１０】図１０は、ＲＡＭの記憶領域とエラー状態ＦＦの対応を模式的に示す図である。
【図１１】図１１は、パケット書込制御回路の状態遷移を示す図である。
【図１２】図１２は、パケット読出制御回路の状態遷移を示す図である。
【図１３】パケット読出制御回路の第１のパケット送信状態以降の処理手順の一例を示すフローチャートである。
【図１４】図９に示されるシステムコントローラでの各処理部における処理の流れの様子を示すタイムチャートである。
【符号の説明】
【００８５】
１０ａ，１０ｂ  システムモジュール
１１ａ，１１ｂ，１１ｃ，１１ｄ  ＣＰＵ
１２ａ，１２ｂ，１２ｃ，１２ｄ  メインメモリ
１３ａ，１３ｂ，１３ｃ，１３ｄ  ＭＡＣ（メモリアクセスコントローラ）
１４ａ，１４ｂ  システムコントローラ
２１，２１ａ，２１ｂ，３１  バス
５０  送信処理部
５１ａ，５１ｂ，５１ｃ，５１ｄ  データ送信制御部
５２  パケット受信部
５３  受信パケット書込制御部
５４  パケット一時記憶部
５５  エラー情報記憶部
５６  送信パケット読出制御部
５７  データ伝送調整部
５８  パケット送信部
７２  受信ＦＦ
７３  ＲＡＭ
７４  ＲＡＭ読出ＦＦ
７５  パケット書込制御回路
７６  エラー状態ＦＦ
７７  ラッチ回路
７８  パケット読出制御回路
８１  データ切替回路
８２  送信ＦＦ
【図１】
0004653837.tif 000002
【図２】
0004653837.tif 000003
【図３】
0004653837.tif 000004
【図４】
0004653837.tif 000005
【図５】
0004653837.tif 000006
【図６】
0004653837.tif 000007
【図７】
0004653837.tif 000008
【図８−１】
0004653837.tif 000009
【図８−２】
0004653837.tif 000010
【図９】
0004653837.tif 000011
【図１０】
0004653837.tif 000012
【図１１】
0004653837.tif 000013
【図１２】
0004653837.tif 000014
【図１３】
0004653837.tif 000015
【図１４】
0004653837.tif 000016