(57)【要約】【課題】複数のバスを利用したデータ送信において、送信側のみで故障バスを回避して経路割り当てを行なうこと。【解決手段】複数のシリアルバスＢｓ０〜Ｂｓ３を持つシステムにおいて、バス選択回路２０は、リクエストＩＤと送信に使用したバスＩＤとを対応付けてタグレジスタ２１ｃに保持する。そして、バス選択回路２０が新規のデータ送信要求を受け付けた場合には、タグレジスタ２１ｃを参照し、同一のリクエストＩＤに前回割り当てたバスＩＤ以外のバスＩＤを割り当てる。【選択図】        図１
2010033188.tif 000002
【特許請求の範囲】
【請求項１】
データ送信要求とともに、前記データ送信要求を識別する送信要求識別情報を受け付ける受付部と、
前記送信要求識別情報と、前記送信要求識別情報に対して過去に割り当てた送信経路とを対応付けて保持する保持部と、
前記受付部が前記データ送信要求を受け付けた場合に、前記受付部が前記データ送信要求とともに受け付けた送信要求識別情報に基づいて前記保持部を検索する検索部と、
複数の送信経路のうち、前記検索部の検索結果として得られた送信経路以外の送信経路から、前記データ送信要求に割り当てる送信経路を選択する送信経路選択部と、
前記送信経路選択部による選択結果に基づいて前記保持部の保持内容を更新する更新部と、
を備えたことを特徴とする送信経路選択装置。
【請求項２】
前記送信経路選択部は、前記保持部に保持された送出経路の次の送信経路から順に、前記データ送信要求を割り当て可能であるか否かを判定することを特徴とする請求項１に記載の送信経路選択装置。
【請求項３】
前記複数の送信経路におけるデータの送信待機状況を管理する管理部をさらに備え、前記送信経路選択部は、待機可能なデータ量が送信するデータ量に比して大きい送信経路を前記データ送信要求に割り当てることを特徴とする請求項１または２に記載の送信経路選択装置。
【請求項４】
前記受付部は、前記データ送信要求とともに、送信するデータの種別を示す種別情報をさらに受け付け、前記送信経路選択部は、前記データの種別に基づいて前記送信するデータ量を求めることを特徴とする請求項３に記載の送信経路選択装置。
【請求項５】
前記複数の送信経路の各々は、シリアルバスであることを特徴とする請求項１〜４のいずれかひとつに記載の送信経路選択装置。
【請求項６】
データ送信装置が作成した送信データを送信する際に、送信経路選択装置が複数の送信経路のいずれを前記送信データの送信に使用するかを選択するデータ送信システムであって、
前記データ送信装置は、データ送信要求と、前記データ送信要求を識別する送信要求識別情報と、を前記送信経路選択装置に送り、
前記送信経路選択装置は、
前記データ送信装置から前記データ送信要求と前記送信要求識別情報を受け付ける受付部と、
前記送信要求識別情報と、前記送信要求識別情報に対して過去に割り当てた送信経路とを対応付けて保持する保持部と、
前記受付部が前記データ送信要求を受け付けた場合に、前記受付部が前記データ送信要求とともに受け付けた送信要求識別情報に基づいて前記保持部を検索する検索部と、
前記複数の送信経路のうち、前記検索部の検索結果として得られた送信経路以外の送信経路から前記データ送信要求に割り当てる送信経路を選択し、選択した送信経路を前記データ装置に通知する送信経路選択部と、
前記送信経路選択部による選択結果に基づいて前記保持部の保持内容を更新する更新部と、
を備えたことを特徴とするデータ送信システム。
【請求項７】
前記データ送信装置は、自装置内で前記送信データの識別に使用する情報を前記送信要求識別情報として前記送信選択装置に提供することを特徴とする請求項６に記載のデータ送信システム。
【請求項８】
演算処理部と入出力処理部との間を複数の伝送経路で接続し、前記複数の伝送路におけるデータ送信を送信制御部が制御するコンピュータ装置であって、
演算処理部と入出力処理部の少なくとも一方は、他方へのデータ送信に際し、データ送信要求と、前記データ送信要求を識別する送信要求識別情報と、前記送信制御部に出力し、
前記送信制御部は、
前記データ送信要求と前記送信要求識別情報を受け付ける受付部と、
前記送信要求識別情報と、前記送信要求識別情報に対して過去に割り当てた送信経路とを対応付けて保持する保持部と、
前記受付部が前記データ送信要求を受け付けた場合に、前記受付部が前記データ送信要求とともに受け付けた送信要求識別情報に基づいて前記保持部を検索する検索部と、
前記複数の送信経路のうち、前記検索部の検索結果として得られた送信経路以外の送信経路から、前記データ送信要求に割り当てる送信経路を選択する送信経路選択部と、
前記送信経路選択部による選択結果に基づいて前記保持部の保持内容を更新する更新部と、
を備えたことを特徴とするコンピュータ装置。
【請求項９】
データ送信要求とともに、前記データ送信要求を識別する送信要求識別情報を受け付ける受付ステップと、
前記受付ステップが前記データ送信要求を受け付けた場合に、前記受付ステップが前記データ送信要求とともに受け付けた送信要求識別情報に基づいて、前記送信要求識別情報に対して過去に割り当てた送信経路を対応付けて保持する保持部を検索する検索ステップと、
複数の送信経路のうち、前記検索ステップの検索結果として得られた送信経路以外の送信経路から、前記データ送信要求に割り当てる送信経路を選択する送信経路選択ステップと、
前記送信経路選択ステップによる選択結果に基づいて前記保持部の保持内容を更新する更新ステップと、
を含んだことを特徴とする送信経路選択方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の伝送経路からデータ送信に使用する経路を選択する送信経路選択装置、送信経路選択方法およびこれを用いたデータ送信システム、コンピュータ装置に関する。
【背景技術】
【０００２】
従来からシリアル転送バスなどにおいて、複数の伝送経路を利用してデータ送信を行なう技術が用いられている。通常、複数のデータ転送バスを持つシステムでは、リクエスト転送ごとに循環式に利用可能なバスをリクエスト転送バスとして使用している。
【０００３】
複数のバスのいずれかに故障が発生すると、故障が発生したバスを避けてバスの割り当て、すなわちリクエスト転送バスの選択を行なう必要がある。そこで、従来は、通信の下流側であるデータ受信側で故障を検知して上流側であるデータ送信側に通知し、上流側が通知を受けて故障したバスを封鎖することで以降のリクエストで故障バスがリクエスト転送バスとして選ばれることを回避していた（例えば、特許文献１参照。）。
【０００４】
【特許文献１】特開２００８−２１１５３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、故障の発生を検知するのはデータ受信側であるので、データ送信側に位置する送信経路選択装置が故障発生を知るためには、データ受信側と通信する必要があった。
【０００６】
また、データ受信側からデータ送信側である送信経路選択装置に送られた故障通知リクエスト自体が通信エラーとなる場合も考えられる。故障通知リクエストが通信エラーになると、送信経路選択装置は、故障発生を知ることができず、故障バスに送信リクエストを割り当ててしまう可能性があった。
【０００７】
すなわち、従来の技術では、送信側のみで故障バスを回避することができないという問題があった。
【０００８】
本発明は、上述した従来技術にかかる問題点を解消し、課題を解決するためになされたものであり、送信側のみで故障バスを回避して経路割り当てを行なうことのできる送信経路選択装置、送信経路選択方法およびこれを用いたデータ送信システム、コンピュータ装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、開示の装置、システムおよび方法は、データ送信要求とともに、データ送信要求を識別する送信要求識別情報を受け付け、送信要求識別情報に対して過去に割り当てた送信経路を対応付けて保持し、新規のデータ送信要求を受け付けた場合に保持部を検索し、複数の送信経路から検索結果として得られた送信経路を除いて、新規のデータ送信要求に割り当てる送信経路を選択する。
【発明の効果】
【００１０】
開示の装置、システム、方法によれば、送信側のみで故障バスを回避して経路割り当てを行なうことのできる装置、システム、方法を得ることができるという効果を奏する。
【発明を実施するための最良の形態】
【００１１】
以下に、本発明にかかる送信経路選択装置、データ送信システム、コンピュータ装置および送信経路選択方法の実施例を図面に基づいて詳細に説明する。
【実施例】
【００１２】
図１は、本実施例に係るデータ送信システムの概要構成を示す概要構成図である。図１に示したデータ送信システムは、ＣＰＵ（Central Processing Unit）からＩＯへのデータ送信を行なうシステムであり、ＣＰＵ１１、ＩＯ１３を有してサーバとして機能するコンピュータ装置の一部である。なお、ＩＯは、ＣＰＵに対する外部からの入出力を担う外部入出力インターフェースである。
【００１３】
ＣＰＵ１１からＩＯ１３へのデータ送信は、複数のシリアルバスＢｓ０〜Ｂｓ３を介して行なわれ、送信データのバスへの割り当ては対ＩＯ送信制御部１２が行なっている。
【００１４】
ＣＰＵ１１がＩＯ１３にデータ送信を行なう場合、まず、ＣＰＵ１１は対ＩＯ送信制御部１２にデータ送信要求を送る。対ＩＯ送信制御部１２は、データ送信要求に対してバスの割り当てを行ない、割り当てたバスのＩＤをデータ送信許可とともにＣＰＵ１１に返す。
【００１５】
ＣＰＵ１１は、データ送信許可を受け、割り当てられたバスＩＤと送信するデータを対ＩＯ送信制御部１２に送る。対ＩＯ送信制御部１２は、ＣＰＵ１１から受けたバスＩＤが示すバスに、同じくＣＰＵから受けたデータを送信する。
【００１６】
ここで、従来の構成ではＣＰＵは、対ＩＯ送信制御部１２に対してデータ送信要求を行なう場合に、送信データを識別する情報を提供していなかった。これに対して本実施例のＣＰＵ１１は、ＣＰＵ１１内で送信データの識別に使用するリクエストＩＤを送信要求識別情報として対ＩＯ送信制御部１２に提供する。
【００１７】
具体的には、ＣＰＵ１１から対ＩＯ送信制御部１２にはデータ送信要求が有効であることを示す１ビットの信号ＲＥＱ−Ｖに加え、リクエストＩＤを示す４ビットの信号ＲＥＱ−ＩＤ、リクエストの種類を示す２ビットの信号ＲＥＱ−ＴＹＰＥが送られる。ＲＥＱ−Ｖ，ＲＥＱ−ＩＤ，ＲＥＱ−ＴＹＰＥは、それぞれ異なる信号線によって伝送される。
【００１８】
ＲＥＱ−ＩＤは、ＣＰＵがＩＯに対して要求を発行するごとにそのリクエストに対して指定されるユニークなＩＤであり、指定されたＲＥＱ−ＩＤは、そのリクエストが完了するまで再利用することはできない。ＲＥＱ−ＴＹＰＥは、ＣＰＵがリクエストの発行を要求する際、発行するリクエストの大きさに応じて指定された値をもつ。
【００１９】
対ＩＯ送信制御部１２は、その内部にバス選択回路２０と、バス制御回路２５＿０〜２５＿３を有する。さらに、バス選択回路２０は、その内部にタグ処理部２１、昇順検索回路２２、バス資源管理部２３およびルーティング回路２４を有する。さらにタグ処理部２１は、その内部に信号分離部２１ａ、検索部２１ｂ、タグレジスタ２１ｃおよび更新部２１ｄを有する。
【００２０】
タグ処理部２１内部の信号分離部２１ａは、ＣＰＵ１１からデータ送信要求（ＲＥＱ−Ｖ）、送信要求識別情報であるリクエストＩＤ（ＲＥＱ−ＩＤ）、リクエストの種別情報（ＲＥＱ−ＴＹＰＥ）を受け付け、リクエストＩＤを検索部２１ｂに渡し、種別情報をバス資源管理部２３に渡し、データ送信要求を昇順検索回路２２に送る。
【００２１】
タグレジスタ２１ｃは、各リクエストＩＤと、前回のデータ送信に使用したバスを示すバスＩＤとを対応付けて保持している。検索部２１ｂは、信号分離部２１ａから渡されたリクエストＩＤをキーにタグレジスタ２１ｃを検索し、検索結果として得られたバスＩＤを昇順検索回路２２に送る。
【００２２】
バス資源管理部２３は、バス制御回路２５＿０〜２５＿３におけるデータの送信待機状況を管理する管理部である。バス資源管理部２３は、ルーティング回路２４が送信データをバス制御部２５＿０〜２５＿３のいずれかに送った場合に、送信データのデータ量分だけ該当するバス制御回路の送信待機量を増加させる。そして、バス資源管理部２３は、バス制御２５＿０〜２５＿３のいずれかデータ送信を実行した場合に、送信したデータ量だけ該当するバス制御回路の送信待機量を減少させる。
【００２３】
各バス制御回路の送信待機量と、各バス制御回路の送信待機バッファの容量とを比較することで、各バス制御回路の空き容量を知ることができる。バス資源管理部２３は、タグ処理部２１から渡された種別情報が示すリクエストのサイズと各バス制御部の空き容量とを比較し、リクエストサイズよりも空き容量の大きいバス選択回路を空バス状況として昇順検索回路２２に提供する。
【００２４】
昇順検索回路２２は、信号分離部２１ａからデータ送信要求を受信した場合に、そのデータ送信要求に対して割り当てるバスを選択する送信経路選択部である。すなわち、昇順検索回路２２は、空バス状況からデータ送信要求を割り当て可能なバスを検索し、検索結果として得られたバスをデータ送信要求に割り当てるバスとして選択し、選択したバスＩＤをデータ送信許可とともにＣＰＵ１１および更新部２１ｄに送る。する。このとき、昇順検索回路２２は、検索部２１ｂが出力したバスＩＤ、すなわち前回、同一のリクエストＩＤに割り当てたバスＩＤ以外のバスＩＤをデータ送信要求に割り当てる。
【００２５】
更新部２１ｄは、昇順検索回路２２による検索結果に基づいてタグレジスタ２１ｃを更新する。すなわち、昇順検索回路２２の出力したバスＩＤを、リクエストＩＤに対応付けてタグレジスタに保持する。このため、更新部２１ｄは、各リクエストＩＤに対して常に最新のバスＩＤを保持することとなる。
【００２６】
図２は、タグレジスタ２１ｃについて説明する説明図である。図２に示したタグレジスタ２１ｃは、リクエストＩＤ０〜３１の各々に対し、バスＩＤ０〜３のいずれかを対応付けて保持している。なお、バスＩＤ０〜３は、それぞれバスＢｓ０〜Ｂｓ３に対して付された識別情報である。
【００２７】
タグレジスタ２１ｃのエントリ数は、ＣＰＵ１１が使用するリクエストＩＤの数によって決定される。ＣＰＵ１１は、データ送信をリクエストＩＤの数だけ発行し、待機させることができる。また、ＣＰＵ１１は、各リクエストＩＤを使用後、他のデータの送信を行なう際に再利用される。すなわち、リクエストＩＤは、任意の時点においてユニークな値であり、同時に存在するデータ送信要求を一意に決定するが、同一のリクエストＩＤは異なる時点では異なる内容のデータ送信に対応する。そして、ＣＰＵ１１は各リクエストＩＤに対応付けられたデータ送信要求の内容を把握しているため、同一のリクエストＩＤを付してデータ送信要求をする場合であっても、同じデータ送信要求の再リクエストであるのか、データの異なる新たなデータ送信要求であるのかを認識している。これに対し、対ＩＯ送信制御部１２は、データ送信要求の内容に関知せず、あるリクエストＩＤを付されたデータ送信要求が再リクエストであるのか新規のリクエストであるのかは識別しない。
【００２８】
図１に戻り、データ送信許可とバスＩＤを対ＩＯ送信制御部１２から取得したＣＰＵ１１は、取得したバスＩＤとともに送信するデータを対ＩＯ送信制御部１２に送る。対ＩＯ送信制御部１２内部のルーティング回路２４は、ＣＰＵ１１が指定したバスに対応するバス制御回路に送信データを送る。
【００２９】
バス制御回路２５＿０〜２５＿３は、それぞれバスＢｓ０〜Ｂｓ３に対応し、ルーティング回路２４から送られたデータを一時的にバッファし、順次対応するバスに乗せて送出する。
【００３０】
図３は、ＣＰＵ１１とＩＯ１３との送受信にそれぞれ複数のバスを設けたサーバ１の概要構成を示す概要構成図である。サーバ１は、具体的には、その内部にＣＰＵ１１、ＩＯ１３、バスインターフェース１５，１６を備える。
【００３１】
バスインターフェース１５はＣＰＵ１１側、バスインターフェース１６はＩＯ１３側に設けたインターフェースである。バスインターフェース１５はその内部に対ＩＯ送信制御部１２と受信部１５ａを有し、バスインターフェース１６はその内部に対ＣＰＵ送信制御部１４と、受信部１６ａを有する。
【００３２】
ＣＰＵ１１からＩＯ１３にデータ送信を行なう場合、バスインターフェース１５内部の対ＩＯ送信制御部１２が転送制御を行ない、バスＢｓ０〜Ｂｓ３にデータを割り振る。バスインターフェース１６内部の受信部１６ａは、バスＢｓ０〜Ｂｓ３からデータを受信してＩＯ１３に受信データを渡す。
【００３３】
同様に、ＩＯ１３からＣＰＵ１１にデータ送信を行なう場合、バスインターフェース１６内部の対ＣＰＵ送信制御部１４が転送制御を行ない、バスＢｒ０〜Ｂｒ３にデータを割り振る。バスインターフェース１５内部の受信部１５ａは、バスＢｒ０〜Ｂｒ３からデータを受信してＣＰＵ１１に受信データを渡す。
【００３４】
なお、ＩＯ１３は、サーバ１の外部の装置と接続されており、ＣＰＵ１１から受信したデータを外部の装置に送出したり、外部の装置から入力されたデータをＣＰＵ１１に送信することができる。
【００３５】
つぎに、図４を参照し、バス選択回路２０の処理動作について説明する。図４に示したように、まずバス選択回路２０は、ＣＰＵ１１からデータ送信要求、リクエストＩＤ、種別情報を受信する（Ｓ１０１）。
【００３６】
その後、タグ処理部２１内部のタグ部２１ｂがリクエストＩＤをキーにタグレジスタ２１ｃを検索し（Ｓ１０２）、バス資源管理部２３が種別情報に示されたサイズ以上の空き容量を有する空バスを通知する（Ｓ１０３）。そして、昇順検索回路２２は、データ送信要求とバスＩＤに基づいてバス割り当て処理を実行する（Ｓ１０４）。
【００３７】
割り当て処理の実行後、昇順検索回路２２は、データ送信許可とバスＩＤをＣＰＵ１１に送信する（Ｓ１０５）。また、更新部２１ｄがタグレジスタ２１ｃを更新する（Ｓ１０６）。
【００３８】
その後、ルーティング回路２４がＣＰＵ１１からバスＩＤとデータを受信し（Ｓ１０７）、受信したバスＩＤに対応するバス制御回路にデータを送信し（Ｓ１０８）、処理を終了する。
【００３９】
図５は、図４に示したバス割り当て処理（Ｓ１０４）の詳細について説明するフローチャートである。図５に示したように、昇順検索回路２２は、まず、タグ処理部２１からリクエストＩＤに対応するタグレジスタの値、つまり前回使用したバスＩＤを取得する（Ｓ２０１）。また、バス資源管理部２３から空バス状況の通知を受ける（Ｓ２０２）。
【００４０】
その後、昇順検索回路２２は、タグレジスタの値をインクリメントし、判定対象バスＩＤとし（Ｓ２０３）、判定対象バスの空バスであるか否かを判定する（Ｓ２０４）。
【００４１】
判定の結果、待機可能量が送信要求されたデータ量以上である場合（Ｓ２０４，Ｙｅｓ）、送信要求に判定対象バスを割り当てて（Ｓ２０５）、処理を終了する。
【００４２】
一方、待機可能量が送信要求されたデータ量よりも小さい場合（Ｓ２０４，Ｎｏ）、対象バスのバスＩＤをインクリメントして、新たな判定対象バスとする（Ｓ２０６）。そして、新たな判定対象パスのＩＤがタグレジスタの値、つまり前回使用したバスＩＤの値と一致しなければ（Ｓ２０７，Ｎｏ）、Ｓ２０４に戻って処理を継続する。
【００４３】
一方、新たな判定対象パスのＩＤがタグレジスタの値（前回使用したバスＩＤの値）と一致した場合（Ｓ２０７，Ｙｅｓ）、前回使用したバスＩＤ以外の全てのバスに空き容量がなく、判定対象バスが一巡したことを示しているので、所定時間待機（Ｓ２０８）後、Ｓ２０２に戻る。
【００４４】
図６は、通常時の送受信動作について説明する説明図である。図６に示した例では、ＣＰＵ１１は、リクエストＩＤがそれぞれ０，１，２であるリクエストＲＥＱ０，ＲＥＱ１，ＲＥＱ２を順に発行している。
【００４５】
対ＩＯ送信制御部１２は、ＣＰＵ１１が発行したリクエストＲＥＱ０，ＲＥＱ１，ＲＥＱ２に対し、それぞれバスＢｓ０，Ｂｓ１，Ｂｓ２を割り当てて、ＩＯ１３に送信する。
【００４６】
ＩＯ１３での処理が完了すると、ＩＯ１３はリクエストＲＥＱ０，ＲＥＱ１，ＲＥＱ２にそれぞれ対応した応答ＲＥＳ０，ＲＥＳ１，ＲＥＳ２を作成し、ＣＰＵ１１に送信する。応答ＲＥＳ０，ＲＥＳ１，ＲＥＳ２には、対ＣＰＵ送信制御部１４によって利用可能なバスＢｒ０〜Ｂｒ２が割り当てられてＣＰＵ１１に送信される。そして、ＣＰＵ１１が応答を受信することで各リクエストの処理が完了する。
【００４７】
図７は、ＩＯ１３への送信バスＢｓ１が故障した場合の送受信フローを示している。図６の場合と同様に、ＣＰＵ１１からリクエストＲＥＱ０，ＲＥＱ１，ＲＥＱ２がそれぞれバスＢｓ０，Ｂｓ１，Ｂｓ２を使って送信された場合、ＲＥＱ０，ＲＥＱ２はＩＯ１３で正常に受信されるが、ＲＥＱ１は、バスＢｓ１の故障による転送エラーのために途中で破棄される。
【００４８】
ＩＯ１３での処理が完了すると、ＩＯ１３は、リクエストＲＥＱ０，ＲＥＱ２に対応する応答ＲＥＳ０，ＲＥＳ２をＣＰＵ１１に対して送信する。ＣＰＵ１１は応答ＲＥＳ０，ＲＥＳ２を受信し、リクエストＩＤ０，２の処理は完了する。しかし、破棄されたリクエストＲＥＱ１については、処理が行なわれず、ＩＯ１３は応答ＲＥＳ１を送信しない。
【００４９】
ＣＰＵ１１は、リクエストＲＥＱ１に対する応答ＲＥＳ１が返ってこないため、ＲＥＱ１の応答監視時間超過、すなわちタイムアウトによりリクエストＲＥＱ１の再送を行なう。リクエストＲＥＱ１を再送する際は、前回に使用したバスＢｓ１以外のバスを送信バスとして検索する。図７の例では、Ｂｓ１の次のバスＢｓ２が空いているため、Ｂｓ２が選択されてＲＱ１の再送に使用される。
【００５０】
バスＢｓ２は正常であるので、リクエストＲＥＱ１のＩＯ１３への再送は成功する。ＩＯ１３での処理が完了すると、ＩＯ１３はリクエストＲＥＱ１に対する応答ＲＥＳ１を作成し、ＣＰＵ１１に対して送信する。ＣＰＵ１１は応答ＲＥＳ１を受信して、リクエストＩＤ１の処理を完了する。
【００５１】
このように、対ＩＯ送信制御部１２は、リクエストＩＤが同一のリクエストが連続で同じバスを使用することの無いよう転送制御を行なうので、リクエストのタイムアウトによる再送を成功させることができる。また、かかる制御では、故障発生の検知や、下流側からの通知を必要としないため、送信側のみで簡易に故障バスの回避が実現できる。
【００５２】
図８は、故障検知に基づく従来の送受信フローを示している。図６，７の場合と同様に、ＣＰＵ１１からリクエストＲＥＱ０，ＲＥＱ１，ＲＥＱ２がそれぞれバスＢｓ０，Ｂｓ１，Ｂｓ２を使って送信されている。そして、リクエストＲＥＱ０，ＲＥＱ２はＩＯ１３で正常に受信されるが、リクエストＲＥＱ１は、バスＢｓ１の故障による転送エラーのために破棄される。
【００５３】
ＩＯ１３での処理が完了すると、ＩＯ１３は、リクエストＲＥＱ０，ＲＥＱ２に対応する応答ＲＥＳ０，ＲＥＳ２をＣＰＵ１１に対して送信する。ＣＰＵ１１は応答ＲＥＳ０，ＲＥＳ２を受信し、リクエストＩＤ０，２の処理を完了する。
【００５４】
また、対ＣＰＵ送信制御部は、バスＢｓ１における故障を検知し、対ＩＯ制御部に対して故障通知を行なう。対ＩＯ送信制御部は、故障通知を受けてバスＢｓ１に対して使用不可設定を行ない、以降の送信データを割り振らないように設定変更する。
【００５５】
その後、リクエストＲＥＱ１に対する応答ＲＥＳ１が返ってこないため、ＣＰＵ１１はＲＥＱ１の応答監視時間超過によりリクエストＲＥＱ１の再送を行なう。リクエストＲＥＱ１を再送する際は、対ＩＯ送信制御部が故障バスＢｓ１を使用不可設定しているので、他のバスを送信バスとして使用する。これにより、リクエストＲＥＱ１のＩＯ１３への再送は成功する。ＩＯ１３での処理が完了すると、ＩＯ１３は、リクエストＲＥＱ１に対する応答ＲＥＳ１を作成し、ＣＰＵ１１に対して送信する。ＣＰＵ１１は応答ＲＥＳ１を受信して、リクエストＩＤ１の処理を完了する。
【００５６】
このように、従来の転送制御では、下流側から上流側に故障通知を行なうことで、上流側が故障発生を認識し、故障バスを閉鎖する必要があった。これに対し、対ＩＯ制御部１２による転送制御では、故障発生の認識も、下流側からの通知も必要としない。また、故障通知の未達によって、故障バスに送信リクエストを割り当ててしまうことを回避できる。
【００５７】
さて、ここまでの説明ではＣＰＵからＩＯに対するデータ送信について説明を行なったが、ＩＯからＣＰＵに対するデータ送信にも同様の転送制御を適用することができる。
【００５８】
図９は、ＩＯ１３からＣＰＵ１１へのデータ送信を行なうシステムについて説明するシステム構成図である。ＩＯ１３からＣＰＵ１１へのデータ送信は、複数のシリアルバスＢｒ０〜Ｂｒ３を介して行なわれ、送信データのバスへの割り当ては対ＣＰＵ送信制御部１４が行なっている。
【００５９】
ＩＯ１３がＣＰＵ１３にデータ送信を行なう場合、まず、ＩＯ１３は対ＣＰＵ送信制御部１４にデータ送信要求を送る。対ＣＰＵ送信制御部１２は、データ送信要求に対してバスの割り当てを行ない、割り当てたバスのＩＤをデータ送信許可とともにＩＯ１３に返す。
【００６０】
ＩＯ１３は、データ送信許可を受け、割り当てられたバスＩＤと送信するデータを対ＣＰＵ送信制御部１４に送る。対ＣＰＵ送信制御部１４は、ＩＯ１３から受けたバスＩＤが示すバスに、同じくＩＯ１３から受けたデータを送信する。
【００６１】
対ＣＰＵ送信制御部１４は、その内部にバス選択回路４０と、バス制御回路２６＿０〜２６＿３を有する。バス制御回路２６＿０〜２６＿３は、それぞれバスＢｒ０〜Ｂｒ３に対応し、バス選択回路４０から送られたデータを一時的にバッファし、順次バスに乗せて送出する。
【００６２】
バス選択回路４０は、その内部にタグ処理部４１、昇順検索回路４２、バス資源管理部４３およびルーティング回路４４を有する。タグ処理部２１は、さらにその内部に信号分離部４１ａ、検索部４１ｂ、タグレジスタ４１ｃおよび更新部４１ｄを有する。
【００６３】
タグ処理部４１内部の信号分離部４１ａは、ＩＯ１３からデータ送信要求と送信要求識別情報であるリクエストＩＤ、リクエストの種別を示す種別情報とを受け付け、リクエストＩＤを検索部４１ｂに渡し、種別情報をバス資源管理部４３に渡し、データ送信要求を昇順検索回路４２に送る。
【００６４】
検索部４１ｂは、信号分離部４１ａから渡されたリクエストＩＤをキーにタグレジスタ４１ｃを検索し、検索結果として得られたバスＩＤを昇順検索回路４２に送る。タグレジスタ４１ｃは、各リクエストＩＤについて、前回のデータ送信に使用したバスを示すバスＩＤを対応付けて保持している。
【００６５】
バス資源管理部４３は、バス制御回路２６＿０〜２６＿３におけるデータの送信待機状況を管理する管理部である。バス資源管理部２３は、ルーティング回路４４が送信データをバス制御回路２６＿０〜２６＿３のいずれかに送った場合に、送信データのデータ量分だけ該当するバス制御回路の送信待機量を増加させる。そして、バス資源管理部４３は、バス制御２６＿０〜２６＿３のいずれかデータ送信を実行した場合に、送信したデータ量だけ該当するバス制御部の送信待機量を減少させる。
【００６６】
各バス制御回路の送信待機量と、各バス制御回路の送信待機バッファの容量とを比較することで、各バス制御回路の空き容量を知ることができる。バス資源管理部４３は、タグ処理部４１から渡された種別情報が示すリクエストのサイズと各バス制御部の空き容量とを比較し、リクエストサイズよりも空き容量の大きいバス選択回路を空バス状況として昇順検索回路４２に提供する。
【００６７】
昇順検索回路４２は、信号分離部４１ａからデータ送信要求を受信した場合に、そのデータ送信要求に対して割り当てるバスを選択する送信経路選択部である。このとき、昇順検索回路４２は、空バス状況から検索部４１ｂが出力したバスＩＤ、すなわち前回、同一のリクエストＩＤに割り当てたバスＩＤ以外のバスＩＤを割り当て、割り当てたバスＩＤをデータ送信許可とともにＩＯ１３および更新部４１ｄに送る。
【００６８】
更新部４１ｄは、昇順検索回路４２による検索結果に基づいてタグレジスタ４１ｃを更新する。すなわち、昇順検索結果４２の出力したバスＩＤを、リクエストＩＤに対応付けて保持する。このため、更新部４１ｄは、各リクエストＩＤに対して常に最新のバスＩＤを保持することとなる。
【００６９】
データ送信許可とバスＩＤを対ＣＰＵ送信制御部１４から取得したＩＯ１３は、取得したバスＩＤとともに送信するデータを対ＣＰＵ送信制御部１４に送る。対ＣＰＵ送信制御部１４内部のルーティング回路４４は、ＩＯ１３が指定したバスに対応するバス制御回路に送信データを送る。
【００７０】
以上説明してきたように、本実施例において送信経路選択装置として機能するバス選択回路２０は、データ送信装置として機能するＣＰＵ１１からデータ送信要求とともに送信要求識別情報であるリクエストＩＤを受け付け、リクエストＩＤに対して送信経路（バスＩＤ）を対応付けてタグレジスタに保持する。
【００７１】
そして、バス選択回路２０が新規のデータ送信要求を受け付けた場合には、タグレジスタを参照し、リクエストＩＤが同一のリクエストが連続で同じバスを使用することの無いよう転送制御を行なう。
【００７２】
そのため、バス故障によってリクエストのタイムアウトが発生した場合に、リクエストの再送を成功させることができる。また、かかる制御では、故障発生の検知や、下流側からの通知を必要としないため、送信側のみで簡易に故障バスの回避が実現できる。
【００７３】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
【００７４】
（付記１）データ送信要求とともに、前記データ送信要求を識別する送信要求識別情報を受け付ける受付部と、
前記送信要求識別情報と、前記送信要求識別情報に対して過去に割り当てた送信経路とを対応付けて保持する保持部と、
前記受付部が前記データ送信要求を受け付けた場合に、前記受付部が前記データ送信要求とともに受け付けた送信要求識別情報に基づいて前記保持部を検索する検索部と、
複数の送信経路のうち、前記検索部の検索結果として得られた送信経路以外の送信経路から、前記データ送信要求に割り当てる送信経路を選択する送信経路選択部と、
前記送信経路選択部による選択結果に基づいて前記保持部の保持内容を更新する更新部と、
を備えたことを特徴とする送信経路選択装置。
【００７５】
（付記２）前記送信経路選択部は、前記保持部に保持された送出経路の次の送信経路から順に、前記データ送信要求を割り当て可能であるか否かを判定することを特徴とする付記１に記載の送信経路選択装置。
【００７６】
（付記３）前記複数の送信経路におけるデータの送信待機状況を管理する管理部をさらに備え、前記送信経路選択部は、待機可能なデータ量が送信するデータ量に比して大きい送信経路を前記データ送信要求に割り当てることを特徴とする付記１または２に記載の送信経路選択装置。
【００７７】
（付記４）前記受付部は、前記データ送信要求とともに、送信するデータの種別を示す種別情報をさらに受け付け、前記送信経路選択部は、前記データの種別に基づいて前記送信するデータ量を求めることを特徴とする付記３に記載の送信経路選択装置。
【００７８】
（付記５）前記複数の送信経路の各々は、シリアルバスであることを特徴とする付記１〜４のいずれかひとつに記載の送信経路選択装置。
【００７９】
（付記６）データ送信装置が作成した送信データを送信する際に、送信経路選択装置が複数の送信経路のいずれを前記送信データの送信に使用するかを選択するデータ送信システムであって、
前記データ送信装置は、データ送信要求と、前記データ送信要求を識別する送信要求識別情報と、を前記送信経路選択装置に送り、
前記送信経路選択装置は、
前記データ送信装置から前記データ送信要求と前記送信要求識別情報を受け付ける受付部と、
前記送信要求識別情報と、前記送信要求識別情報に対して過去に割り当てた送信経路とを対応付けて保持する保持部と、
前記受付部が前記データ送信要求を受け付けた場合に、前記受付部がデータ送信要求とともに受け付けた送信要求識別情報に基づいて前記保持部を検索する検索部と、
前記複数の送信経路から前記検索部の検索結果として得られた送信経路を除いて、前記データ送信要求に割り当てる送信経路を選択し、選択した送信経路を前記データ装置に通知する送信経路選択部と、
前記送信経路選択部による選択結果に基づいて前記保持部の保持内容を更新する更新部と、
を備えたことを特徴とするデータ送信システム。
【００８０】
（付記７）前記データ送信装置は、自装置内で前記送信データの識別に使用する情報を前記送信要求識別情報として前記送信選択装置に提供することを特徴とする付記６に記載のデータ送信システム。
【００８１】
（付記８）演算処理部と入出力処理部との間を複数の伝送経路で接続し、前記複数の伝送路におけるデータ送信を送信制御部が制御するコンピュータ装置であって、
演算処理部と入出力処理部の少なくとも一方は、他方へのデータ送信に際し、データ送信要求と、前記データ送信要求を識別する送信要求識別情報と、前記送信制御部に出力し、
前記送信制御部は、
前記データ送信要求と前記送信要求識別情報を受け付ける受付部と、
前記送信要求識別情報と、前記送信要求識別情報に対して過去に割り当てた送信経路とを対応付けて保持する保持部と、
前記受付部が前記データ送信要求を受け付けた場合に、データ送信要求とともに受け付けた送信要求識別情報に基づいて前記保持部を検索する検索部と、
前記複数の送信経路のうち、前記検索部の検索結果として得られた送信経路以外の送信経路から、前記データ送信要求に割り当てる送信経路を選択する送信経路選択部と、
前記送信経路選択部による選択結果に基づいて前記保持部の保持内容を更新する更新部と、
を備えたことを特徴とするコンピュータ装置。
【００８２】
（付記９）データ送信要求とともに、前記データ送信要求を識別する送信要求識別情報を受け付ける受付ステップと、
前記受付ステップが前記データ送信要求を受け付けた場合に、前記受付ステップが前記データ送信要求とともに受け付けた送信要求識別情報に基づいて、前記送信要求識別情報に対して過去に割り当てた送信経路を対応付けて保持する保持部を検索する検索ステップと、
複数の送信経路のうち、から前記検索ステップの検索結果として得られた送信経路以外の送信経路から、前記データ送信要求に割り当てる送信経路を選択する送信経路選択ステップと、
前記送信経路選択ステップによる選択結果に基づいて前記保持部の保持内容を更新する更新ステップと、
を含んだことを特徴とする送信経路選択方法。
【図面の簡単な説明】
【００８３】
【図１】図１は、本実施例に係るデータ送信システムの概要構成を示す概要構成図である。
【図２】図２は、図１に示したタグレジスタについて説明する説明図である。
【図３】図３は、ＣＰＵとＩＯとの送受信にそれぞれ複数のバスを設けたサーバの概要構成を示す概要構成図である。
【図４】図４は、バス選択回路２０の処理動作について説明するフローチャートである。
【図５】図５は、バス割り当て処理について説明するフローチャートである。
【図６】図６は、通常時の送受信動作について説明する説明図である。
【図７】図７は、送信バスＢｓ１が故障した場合の送受信動作を説明する説明図である。
【図８】図８は、故障検知に基づく送受信動作を説明する説明図である。
【図９】図９は、ＩＯからＣＰＵへのデータ送信を行なうシステムについて説明するシステム構成図である。
【符号の説明】
【００８４】
１    サーバ
１１    ＣＰＵ
１２    対ＩＯ送信制御部
１３    ＩＯ
１４    対ＣＰＵ送信制御部
１５，１６    バスインターフェース
１５ａ，１６ａ  受信部
２０，４０    バス選択回路
２１，４１    タグ処理部
２１ａ，４１ａ  信号分離部
２１ｂ，４１ｂ  検索部
２１ｃ，４１ｃ  タグレジスタ
２１ｄ，４１ｄ  更新部
２２，４２    昇順検索回路
２３，４３    バス資源管理部
２４，４４    ルーティング回路
２５＿０〜２５＿３，２６＿０〜２６＿３  バス制御回路
Ｂｓ０〜Ｂｓ３，Ｂｒ０〜Ｂｒ３  バス
【図１】
2010033188.tif 000003
【図２】
2010033188.tif 000004
【図３】
2010033188.tif 000005
【図４】
2010033188.tif 000006
【図５】
2010033188.tif 000007
【図６】
2010033188.tif 000008
【図７】
2010033188.tif 000009
【図８】
2010033188.tif 000010
【図９】
2010033188.tif 000011