(57)【要約】【課題】複数の伝送路を有効に利用することができない。【解決手段】入出力処理装置１０は、送信する要求の種別が冗長化を行う種別の要求であると判別した場合、または、送信する要求の種別が冗長化を行わない種別の要求であると判別し、かつ、計数した要求の数が所定の閾値以下であるバッファが複数存在すると判別した場合には、要求を複製した複数の要求を、バッファ１２ｄ〜１２ｇのうちそれぞれ異なるバッファにそれぞれ格納する。また、入出力処理装置１０は、送信する要求の種別が冗長化を行わない種別の要求であると判別し、かつ、計数した要求の数が所定の閾値以下であるバッファが複数存在していないと判別した場合には、いずれか１つのバッファに要求を格納する。そして、入出力処理装置１０は、それぞれ異なる伝送路を介して、各バッファ１２ｄ〜１２ｇが記憶する要求を演算装置２０へ送信する。【選択図】図１
2013009045.tif 000002
【特許請求の範囲】
【請求項１】
第１の装置と、前記第１の装置に複数の伝送路を介して接続される第２の装置とを有する伝送システムであって、
前記第１の装置は、
前記複数の伝送路毎にそれぞれ設けられ、前記第２の装置に送信する要求を記憶する複数の要求記憶部と、
前記第２の装置に送信する要求の種別が、冗長化を行う種別の要求であるか否かを判別する要求判別部と、
前記複数の要求記憶部の各々に記憶された要求の数を計数し、計数した要求の数が所定の閾値以下である要求記憶部の数を判別する要求資源判別部と、
前記要求判別部が前記送信する要求の種別が冗長化を行う種別の要求であると判別した場合、または、前記要求判別部が前記送信する要求の種別が冗長化を行わない種別の要求であると判別し、かつ、前記要求資源判別部が前記計数した要求の数が所定の閾値以下である要求記憶部が複数存在すると判別した場合には、前記要求を複製した複数の要求を、前記複数の要求記憶部のうちそれぞれ異なる複数の要求記憶部にそれぞれ格納し、前記要求判別部が前記送信する要求の種別が冗長化を行わない種別の要求であると判別し、かつ、前記要求資源判別部が前記計数した要求の数が所定の閾値以下である要求記憶部が複数存在していないと判別した場合には、いずれか１つの前記要求記憶部に格納する要求格納部と、
前記複数の伝送路のうちそれぞれ異なる伝送路を介して、前記複数の要求記憶部の各々に記憶される要求を前記第２の装置へ送信する複数の要求送信部と、
を有することを特徴とする伝送システム。
【請求項２】
前記要求判別部が、前記第２の装置が実行する処理の順序の保証が必要な要求を、前記冗長化を行う種別の要求であると判別することを特徴とする請求項１に記載の伝送システム。
【請求項３】
前記第１の装置はさらに、
前記第２の装置に送信した要求に対する応答を受信する応答受信部と、
要求を送信してから前記送信した要求に対する応答を前記応答受信部が受信するまでの時間を計時する計時部を有し、
前記要求格納部は、前記計時部によって前記計時された要求を送信してから前記送信した要求に対する応答を前記応答受信部が受信するまでの時間が所定の時間を超えた場合には、該送信した要求を再度送信することを特徴とする請求項１または２に記載の伝送システム。
【請求項４】
前記第２の装置は、前記第１の装置が各伝送路を介して送信した要求を受信し、受信した要求のうち、伝送エラーが発生した要求と重複して送信された要求とを破棄する要求受信部と、
前記要求受信部が破棄しなかった要求に対する応答を前記第１の装置へ送信する応答処理部と
を有することを特徴とする請求項１〜３のいずれか１項に記載の伝送システム。
【請求項５】
前記応答処理部は、
前記複数の伝送路毎にそれぞれ設けられ、前記第１の装置に送信する応答を記憶する複数の応答記憶部と、
前記複数の伝送路のうちそれぞれ異なる伝送路を介して、前記複数の応答記憶部の各々に記憶される応答を前記第１の装置へ送信する複数の応答送信部と、
前記第１の装置に送信する応答の種別が、冗長化を行う種別の応答であるか否かを判別する応答判別部と、
前記複数の応答記憶部の各々に記憶された応答の数を計数し、計数した応答の数が所定の閾値以下である応答記憶部の数を判別する応答資源判別部（２３ａ、２３ｂ）と、
前記応答判別部が前記送信する応答の種別が冗長化を行う種別の応答であると判別した場合、または、前記応答判別部が前記送信する応答の種別が冗長化を行わない種別の応答であると判別し、かつ、前記応答資源判別部が前記計数した応答の数が所定の閾値以下である応答記憶部が複数存在すると判別した場合には、前記応答を複製した複数の応答を、前記複数の要求記憶部のうち異なる複数の応答記憶部に格納し、前記応答判別部が前記送信する応答の種別が冗長化を行わない種別の応答であると判別し、かつ、前記応答資源判別部が前記計数した応答の数が所定の閾値以下である応答記憶部が複数存在していないと判別した場合には、いずれか１つの前記応答記憶部に格納する応答格納部と
を有することを特徴とする請求項４に記載の伝送システム。
【請求項６】
前記第１の装置は、前記送信する要求の後続として前記第２の装置へ送信する要求が存在するか否かを判別する後続要求判別部をさらに有し、
前記要求格納部は、前記要求判別部が前記送信する要求の種別が冗長化を行う種別の要求であると判別した場合、または、前記要求判別部が前記送信する要求の種別が冗長化を行わない種別の要求であると判別し、かつ、前記要求資源判別部が前記計数した要求の数が所定の閾値以下である要求記憶部が複数存在すると判別し、かつ、前記後続要求判別部が、後続の要求が無いと判別した場合には、前記要求を複製した複数の要求を、前記複数の要求記憶部のうちそれぞれ異なる前記要求記憶部に格納し、前記要求判別部が前記送信する要求の種別が冗長化を行わない種別の要求であると判別し、かつ、前記後続要求判別部が、前記後続の要求があると判別した場合には、いずれか１つの前記要求記憶部に格納し、
前記複数の送信部は、前記要求記憶部に格納された要求をそれぞれ送信することを特徴とする請求項１〜５のいずれか１項に記載の伝送システム。
【請求項７】
前記第１の装置は、コンピュータシステムの入出力を担う入出力処理装置であり、前記第２の装置は前記コンピュータシステムの演算処理を担う演算処理装置であることを特徴とする請求項１〜６のいずれか１項に記載の伝送システム。
【請求項８】
複数の伝送路毎にそれぞれ設けられ、複数の伝送路を介して自身と接続された対向装置に送信する要求を記憶する複数の要求記憶部と、
前記対向装置に送信する要求の種別が、冗長化を行う種別の要求であるか否かを判別する要求判別部と、
前記複数の要求記憶部の各々に記憶された要求の数を計数し、計数した要求の数が所定の閾値以下である要求記憶部の数を判別する要求資源判別部と、
前記要求判別部が前記送信する要求の種別が冗長化を行う種別の要求であると判別した場合、または、前記要求判別部が前記送信する要求の種別が冗長化を行わない種別の要求であると判別し、かつ、前記要求資源判別部が前記計数した要求の数が所定の閾値以下である要求記憶部が複数存在すると判別した場合には、前記要求を複製した複数の要求を、前記複数の要求記憶部のうちそれぞれ異なる複数の要求記憶部にそれぞれ格納し、前記要求判別部が前記送信する要求の種別が冗長化を行わない種別の要求であると判別し、かつ、前記要求資源判別部が前記計数した要求の数が所定の閾値以下である要求記憶部が複数存在していないと判別した場合には、いずれか１つの前記要求記憶部に格納する要求格納部と、
前記複数の伝送路のうちそれぞれ異なる伝送路を介して、前記複数の要求記憶部の各々に記憶される要求を前記対向装置へ送信する複数の要求送信部と、
を有することを特徴とする伝送装置。
【請求項９】
複数の伝送路毎にそれぞれ設けられ、複数の伝送路を介して自身と接続された対向装置に送信する要求を記憶する複数の記憶手段を有する伝送装置に、
前記対向装置に送信する要求の種別が、冗長化を行う種別の要求であるか否かを判別し、
前記複数の記憶手段の各々に記憶された要求の数を計数し、計数した要求の数が所定の閾値以下である記憶手段の数を判別し、
前記送信する要求の種別が冗長化を行う種別の要求であると判別した場合、または、前記送信する要求の種別が冗長化を行わない種別の要求であると判別し、かつ、前記計数した要求の数が所定の閾値以下である記憶手段が複数存在すると判別した場合には、前記要求を複製した複数の要求を、前記複数の記憶手段のうちそれぞれ異なる複数の記憶手段にそれぞれ格納し、
前記送信する要求の種別が冗長化を行わない種別の要求であると判別し、かつ、前記計数した要求の数が所定の閾値以下である記憶手段が複数存在していないと判別した場合には、いずれか１つの前記記憶手段に格納し、
前記複数の伝送路のうちそれぞれ異なる伝送路を介して、前記複数の記憶手段の各々に記憶される要求を前記対向装置へ送信し、
処理を実行させることを特徴とする伝送装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、伝送システム、伝送装置および伝送装置の制御方法に関する。
【背景技術】
【０００２】
従来、伝送路を介して１ビット幅のデータを伝送するシリアル伝送方式が知られている。また、複数の伝送路を用いてシリアル伝送方式によるデータ伝送を行うことで、装置間におけるデータ伝送のスループットを向上させる技術が知られている。
【０００３】
このような技術の一例として、ＣＰＵ（Central  Processing  Unit）等の演算装置とＩ／Ｏ（Input/Output）等の入出力処理装置とが複数の伝送路を介してシリアル伝送方式によるデータの送受信を行うコンピュータシステムが知られている。このようなコンピュータシステムの一例を、図７を用いて説明する。図７は、従来のコンピュータシステムを説明するための図である。図７に示す例では、コンピュータシステム４０は、入出力処理装置４１、演算装置４５、メモリ４９を有する。
【０００４】
入出力処理装置４１は、要求処理部４２、要求送信部４３、応答受信部４４を有し、入出力デバイス５０と接続されている。演算装置４５は、要求受信部４６、応答処理部４７、応答送信部４８を有し、メモリ４９と接続されている。要求送信部４３と要求受信部４６、および、応答送信部４８と応答受信部４４は、それぞれ複数の伝送路で接続されている。
【０００５】
このような入出力処理装置４１は、ディスク装置やネットワークインターフェース装置等の入出力デバイス５０からの入力に基づいて、メモリ４９に対するデータのフェッチ要求やストア要求などの処理の要求を生成し、生成した要求を演算装置４５に送信する。また、演算装置４５は、要求を受信した場合には、受信した要求に係る処理を実行し、処理の実行結果に応じた応答を入出力処理装置４１へ送信する。
【０００６】
ここで、シリアル伝送方式において、伝送エラーが発生した際にデータを再度処理するための回路の規模やフロー制御に要するコストを削減するため、所定の種別のデータを送信する場合にのみ、送信するデータを冗長化して送信する技術が知られている。
【０００７】
例えば、入出力処理装置４１が有する要求処理部４２は、入出力デバイス５０からの入力に基づいて、メモリ４９に対するデータのフェッチ要求やストア要求などの処理に係る上記の送信するデータに対応する要求を生成し、生成した要求を要求送信部４３に送信する。要求送信部４３は、要求処理部４２から要求を受信した場合には、受信した要求が冗長化して送信する種別の要求であるか否かを判別する。詳細には、要求送信部４３は、メモリ４９に対するストア処理等、入出力処理装置４１から再度の実行を要求できない処理の要求であるか否かを判別する。
【０００８】
そして、要求送信部４３は、受信した要求が冗長化して送信する種別の要求であると判別した場合には、受信した要求を複製し、複製した要求をそれぞれ異なる伝送路を介して要求受信部４６に送信する。また、要求送信部４３は、受信した要求が冗長化して送信する種別の要求ではないと判別した場合には、受信した要求を冗長化せず、いずれかの伝送路を介して、要求受信部４６へ送信する。
【０００９】
一方、要求受信部４６は、要求送信部４３から要求を受信した場合には、受信した要求に伝送エラーが発生しているか否かを判別し、伝送エラーが発生していると判別した要求を破棄する。また、要求受信部４６は、伝送エラーが発生していないと判別した要求については、同一の要求を既に受信しているか否かを判別し、受信していると判別した場合には、新たに受信した要求を冗長化された要求であるとして破棄する。
【００１０】
応答処理部４７は、要求受信部４６が受信した要求に係る処理を実行した後に、処理の実行結果に応じた応答を生成し、生成した応答を応答送信部４８に送信する。応答送信部４８は、応答処理部４７が生成した応答が冗長化して送信する種別の応答であるか否かを判別し、冗長化して送信する種別の応答であると判別した場合には、応答を複製し、複製した応答をそれぞれ異なる伝送路を介して応答受信部４４に送信する。また、応答送信部４８は、冗長化して送信する種別の応答ではないと判別した場合には、応答をいずれかの伝送路を介して、応答受信部４４に送信する。
【００１１】
応答受信部４４は、要求受信部４６と同様に、受信した応答に伝送エラーが発生していると判別した応答、および、同一の応答を既に受信した応答を破棄し、破棄しなかった応答を要求処理部４２に送信する。その後、要求処理部４２は、応答受信部４４から受信した応答に基づいて、入出力デバイス５０に対する出力を行う。また、要求送信部４３は、要求を送信してから所定の時間が経過するまでの間に、送信した要求に対する応答を応答受信部４４が受信しなかった場合には、要求を要求受信部４６へ再度送信する。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２０１０−０５０７４２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかしながら、あらかじめ定められた冗長化する種別のデータを複製し、複製したデータを送信する技術では、冗長化しない種別のデータを断続的に送信する場合に、伝送路を有効に利用することができないという問題がある。
【００１４】
例えば、入出力処理装置４１は、伝送路が空いている場合にも、冗長化しない種別のデータ（要求）を１つの伝送路を介して送信するので、演算装置４５が受信したデータ（要求）に伝送エラーが発生した場合には、データを再度演算装置４５に送信する。このため、入出力処理装置４１は、データ伝送におけるレイテンシを悪化させてしまう。
【００１５】
１つの側面では、上述した問題に鑑みてなされたものであって、伝送路を有効に利用し、データ伝送におけるレイテンシの悪化を軽減する。
【課題を解決するための手段】
【００１６】
１つの側面では、第１の装置と、第１の装置に複数の伝送路を介して接続される第２の装置とを有する伝送システムである。このような伝送システムが有する第１の装置は、複数の伝送路毎にそれぞれ設けられ、第２の装置に送信する要求を記憶する複数の要求記憶部を有する。また、第１の装置は、第２の装置に送信する要求の種別が、冗長化を行う種別の要求であるか否かを判別する要求判別部を有する。また、第１の装置は、複数の要求記憶部の各々に記憶された要求の数を計数し、計数した要求の数が所定の閾値以下である要求記憶部の数を判別する要求資源判別部を有する。また、第１の装置は、要求判別部が送信する要求の種別が冗長化を行う種別の要求であると判別した場合、または、要求判別部が送信する要求の種別が冗長化を行わない種別の要求であると判別し、かつ、要求資源判別部が計数した要求の数が所定の閾値以下である要求記憶部が複数存在すると判別した場合には、要求を複製した複数の要求を、複数の要求記憶部のうちそれぞれ異なる複数の要求記憶部にそれぞれ格納する要求格納部を有する。ここで、要求格納部は、要求判別部が送信する要求の種別が冗長化を行わない種別の要求であると判別し、かつ、要求資源判別部が計数した要求の数が所定の閾値以下である要求記憶部が複数存在していないと判別した場合には、当該要求を、いずれか１つの要求記憶部に格納する。また、第１の装置は、複数の伝送路のうちそれぞれ異なる伝送路を介して、複数の要求記憶部の各々に記憶される要求を第２の装置へ送信する複数の要求送信部を有する。
【発明の効果】
【００１７】
１つの側面では、伝送路を有効に利用し、データ伝送におけるレイテンシの悪化を軽減する。
【図面の簡単な説明】
【００１８】
【図１】図１は、実施例１に係るコンピュータシステムの一例を説明するための図である。
【図２】図２は、要求処理部が生成する要求パケットの一例を説明するための図である。
【図３】図３は、実施例１に係る要求送信部の一例を説明するための図である。
【図４】図４は、実施例１に係る応答送信部の一例を説明するための図である。
【図５】図５は、実施例１に係る要求送信部が要求パケットを送信する処理の一例を説明するためのフローチャートである。
【図６】図６は、実施例１に係る要求送信部による冗長化を行わない要求パケット送信処理の一例を説明するための図である。
【図７】図７は、従来の伝送装置を説明するための図である。
【発明を実施するための形態】
【００１９】
以下に添付図面を参照して本願に係る伝送システム、伝送装置および伝送装置の制御方法について説明する。
【実施例１】
【００２０】
実施例１では、図１を用いて、シリアル伝送方式により要求と応答とを送受信する複数の装置を有するコンピュータシステムの一例を説明する。図１は、実施例１に係るコンピュータシステム１を説明するための図である。
【００２１】
図１に示す例では、コンピュータシステム１は、入出力処理装置（Ｉ／Ｏ装置）１０、演算装置２０、メモリ３０を有する。また、コンピュータシステム１は、入出力デバイス２と接続されている。なお、入出力デバイス２は、ディスク装置やネットワークインターフェース装置等の各種デバイスである。また、メモリ３０には、各種データが格納されているものとする。
【００２２】
入出力処理装置１０は、その内部に要求処理部１１、要求送信部１２、応答受信部１３、入出力デバイス制御部１５を有する。入出力デバイス制御部１５は、入出力デバイス２と接続するインターフェースである。また、要求処理部１１は、タイマー１４を有する。また、要求送信部１２は、要求資源管理部１２ａ、要求冗長化決定部１２ｂ、要求冗長化処理部１２ｃ、複数のバッファ１２ｄ〜１２ｇ、複数のＳｅｒＤｅｓ（Serializer／Deserializer）１２ｈ〜１２ｋを有する。また、応答受信部１３は、エラー応答パケット破棄部１３ａ、冗長応答パケット破棄部１３ｂを有する。
【００２３】
また、演算装置２０は、応答処理部２１、要求受信部２２、応答送信部２３、メモリアクセス制御部２４を有する。要求受信部２２は、エラー要求パケット破棄部２２ａ、冗長要求パケット破棄部２２ｂを有する。また、応答送信部２３は、応答資源管理部２３ａ、応答冗長化決定部２３ｂ、応答冗長化処理部２３ｃ、複数のバッファ２３ｄ〜２３ｇ、複数のＳｅｒＤｅｓ２３ｈ〜２３ｋを有する。
【００２４】
要求処理部１１は、入出力デバイス２からの入力に基づいて、演算装置１０に所定の処理の実行を要求する処理を行なう。また、要求処理部１１は、要求送信部１２が送信した要求に対する応答を応答受信部１３が受信した場合には、受信した応答に基づいて、要求した処理の結果を入出力デバイス２へ送信する。さらに、要求処理部１１は、タイムアウトを監視するタイマー１４を有する。
【００２５】
例えば、要求処理部１１は、入出力デバイス制御部１５を介して、データをメモリ３０からフェッチするフェッチ要求を入出力デバイス２から取得する。フェッチ要求を取得した要求処理部１１は、フェッチ要求を示す情報が格納された要求パケットを生成する。また、要求処理部１１は、フェッチ要求を示す情報を含む要求パケットを送信する指示を要求送信部１２の要求冗長化決定部１２ｂへ送信する。そして、要求処理部１１は、要求送信部１２が有する要求冗長化処理部１２ｂからフェッチ要求に係る要求パケットを送信する旨の指示を指示された場合には、生成したフェッチ要求に係る要求パケットを要求冗長化処理部１２ｃへ送信する。
【００２６】
また、例えば、要求処理部１１は、入出力デバイス制御部１５を介して、データをメモリ３０にストアする旨のフェッチ要求を入出力デバイス２から取得する。ストア要求を取得した要求処理部１１は、データをメモリ３０にストアする旨のストア要求を示す情報と、メモリ３０に格納するデータとが格納された要求パケットを生成する。また、要求処理部１１は、ストア要求を示す情報を含む要求パケットを送信する指示を要求送信部１２の要求冗長化決定部１２ｂへ送信する。そして、要求処理部１１は、要求送信部１２が有する要求冗長化処理部１２ｂからストア要求に係る要求パケットを送信する旨を指示された場合には、生成したストア要求に係る要求パケットを要求冗長化処理部１２ｃへ送信する。
【００２７】
そして、要求処理部１１は、フェッチ要求に対するフェッチ応答を応答受信部１３が受信した場合には、受信したフェッチ応答に基づいて、フェッチ要求の完了通知とメモリ３０からフェッチしたデータを入出力デバイス２に対して出力を行う。また、要求処理部１１は、ストア要求に対する応答であるストア応答を応答受信部１３が受信した場合には、受信したストア応答に基づいて、ストア要求の完了通知を入出力デバイス２に対して出力を行う。
【００２８】
また、要求処理部１１は、要求送信部１２に対して、冗長化を行わない種別の要求を送信する指示を送信した場合には、当該指示を送信してから要求に対する演算装置２０からの応答を応答受信部１３を介して受信するまでの時間をタイマー１４を用いて監視する。そして、要求処理部１１は、タイマー１４を用いた監視により、所定時間が経過するまでに、要求送信部１２に送信を指示した要求パケットに対応する応答パケットを応答受信部１３から受信しなかった場合には、再度要求送信部１２に対して、要求を送信する指示を行なう。
【００２９】
具体的には、要求処理部１１は、要求を送信する指示を行った場合には、タイマー１４をセットする。そして、要求処理部１１は、タイマー１４がタイムアウトを通知した場合には、つまり、送信した要求に対する応答を応答受信部１３から所定の時間内に受信しなかった場合には、要求冗長化処理部１２ｃに再度要求を送信する指示を行う。なお、後述する要求冗長化処理部１２ｃは、要求処理部１１から再度要求を送信する指示を行った場合には、バッファに格納された要求パケットを再度演算装置２０の要求受信部２２へ送信する。
【００３０】
次に、図２を用いて、要求処理部１１が生成する要求パケットの一例について説明する。図２は、要求処理部１１が生成する要求パケットの一例を説明するための図である。図２に示す例では、要求パケットは、パケットの先頭を示す情報が格納された「ＳＹＮＣ」領域、パケットのサイズや宛先が格納される「ヘッダ」領域を有する。また、要求パケットは、要求の内容が格納される「データ」領域、パケットの「データ」領域の伝送エラーを検出するためのＣＲＣ（Cyclic  Redundancy  Check）を実行するための情報が格納される「ＣＲＣ」領域を有する。ここで、「ＣＲＣ」に格納される情報は、実行するＣＲＣによって任意のサイズ長を選ぶことができる。例えば、「ＣＲＣ−８」を実行する場合には９ビット、「ＣＲＣ−１６」を実行する場合には１７ビット、「ＣＲＣ−３２」を実行する場合には３３ビット、「ＣＲＣ−６４」を実行する場合には６５ビットの情報が格納される。
【００３１】
図１に戻って、要求送信部１２は、演算装置２０に送信する要求パケットに格納された要求の種別が、冗長化を行う種別の要求であるか否かを判別する。そして、要求送信部１２は、演算装置２０に送信する要求パケットに格納された要求の種別が冗長化を行う種別の要求であると判別した場合には、送信する要求パケットを複製し、複製した要求パケットをそれぞれ異なる伝送路を介して演算装置２０へ送信する。
【００３２】
また、要求送信部１２は、演算装置２０に送信する要求パケットに格納された要求の種別が冗長化を行わない種別の要求であると判別した場合には、以下の処理を実行する。すなわち、要求送信部１２は、要求パケットを送信する各伝送路のうち、送信中の要求パケットの数が所定の閾値よりも少ない伝送路、すなわち、伝送帯域に余裕がある伝送路が複数存在するか否かを判別する。そして、要求送信部１２は、伝送帯域に余裕がある伝送路が複数存在すると判別した場合には、演算装置２０に送信する要求パケットを複製し、複製した要求パケットをそれぞれ異なる伝送路を介して演算装置２０へ送信する。一方、要求送信部１２は、伝送帯域に余裕がある伝送路が複数存在しないと判別した場合には、要求パケットを複製せず、いずれかの伝送路を介して、演算装置２０へ送信する。
【００３３】
以下、図３を用いて、要求送信部１２の具体例を説明する。図３は、実施例１に係る要求送信部の一例を説明するための図である。例えば、要求送信部１２は、要求受信部２２に要求パケットを送信する伝送路のそれぞれに対応したバッファ１２ｄ〜１２ｇとＳｅｒＤｅｓ１２ｈ〜１２ｋを有する。ここで、各バッファ１２ｄ〜１２ｇは、それぞれ異なる伝送路を介して送信される要求パケットを一時的に記憶するバッファである。また、各ＳｅｒＤｅｓ１２ｈ〜１２ｋは、各バッファ１２ｄ〜１２ｇに格納された要求パケットを取得し、取得した要求パケットをシリアルデータに変換し、変換したシリアルデータをそれぞれ異なる伝送路を介して、要求受信部２２へ送信する。つまり、各ＳｅｒＤｅｓ１２ｈ〜１２ｋは、シリアル伝送方式を用いて、要求パケットを要求受信部２２へ送信する送信部である。
【００３４】
要求資源管理部１２ａは、各バッファ１２ｄ〜１２ｇに格納された要求パケットの数を個別に計数する。例えば、要求資源管理部１２ａは、各バッファ１２ｄ〜１２ｇについて、要求パケットが格納される毎に要求パケットの数をカウントアップし、要求パケットが送信されるたびに、要求パケットの数をカウントダウンする。また、要求資源管理部１２ａは、所定の時間が経過するごとに、各バッファ１２ｄ〜１２ｇに格納されている要求パケットの数を要求冗長化決定部１２ｂに通知する。
【００３５】
要求冗長化決定部１２ｂは、要求資源管理部１２ａから、各バッファ１２ｄ〜１２ｇに格納されている要求パケットの数の通知を受け付ける。また、要求冗長化決定部１２ｂは、要求処理部１１から要求の種別を受信した場合には、要求の種別が冗長化を行う種別であるか否かを判別する。
【００３６】
そして、要求冗長化決定部１２ｂは、要求の種別が冗長化を行う種別であると判別した場合には、冗長対象の要求パケットと当該冗長対象の要求パケットを複製した冗長要求パケットとを、それぞれ異なる伝送路に対応する複数のバッファに格納するために、以下の処理を実行する。すなわち、要求冗長化決定部１２ｂは、要求資源管理部１２ａから通知された各バッファ１２ｄ〜１２ｇに格納されたパケットの数に基づいて、冗長対象の要求パケットと当該冗長対象の要求パケットを複製した冗長要求パケットとを合わせた数（以下、「冗長数」という）、すなわち、各バッファ１２ｄ〜１２ｇに格納しようとする要求パケットの数以上の、要求パケットを格納する空き容量があるバッファ（以下、「格納可能バッファ」という）が存在するか否かを判別する。
【００３７】
例えば、要求冗長化決定部１２ｂは、冗長対象の要求パケットと当該冗長対象の要求パケットを複製した１つの冗長要求パケットを格納する場合（冗長数が２の場合）には、格納可能バッファが２つ以上存在するか否かを判別する。さらに、冗長対象の要求パケットと当該冗長対象の要求パケットを複製した２つの冗長要求パケットを格納する場合（冗長数が３の場合）には、格納可能バッファが３つ以上存在するか否かを判別する。そして、要求冗長化決定部１２ｂは、冗長数と等しい数の格納可能バッファが存在すると判別した場合には、当該複数の格納可能バッファを全て選択する。
【００３８】
さらに、要求冗長化決定部１２ｂは、冗長数を超える数の格納可能バッファが存在すると判別した場合には、当該冗長数に応じて、複数の格納可能バッファから、要求パケットを格納する冗長数と等しい数のバッファをラウンドロビン方式等により選択する。その後、要求冗長化決定部１２ｂは、選択した複数のバッファを特定する情報と要求パケットを冗長化する旨とを要求冗長化処理部１２ｃへ通知する。
【００３９】
一方、要求冗長化決定部１２ｂは、要求資源管理部１２ａから通知された冗長対象の要求パケットと当該冗長対象の要求パケットを複製した冗長要求パケットの数に応じた数の格納可能バッファが存在しないと判別した場合には、一定時間待機し、要求資源管理部１２ａから冗長対象の要求パケットと冗長要求パケットの数、すなわち、各バッファ１２ｄ〜１２ｇに格納しようとする要求パケットの数の通知を再度受け付ける。その後、要求冗長化決定部１２ｂは、再度受け付けた各バッファ１２ｄ〜１２ｇに格納しようとする要求パケットの数に基づいて、格納可能バッファが存在するか否かを判別する。
【００４０】
また、要求冗長化決定部１２ｂは、要求の種別が冗長化を行わない種別であると判別した場合には、要求パケットを格納可能バッファの数に応じて、１つ又は複数のバッファに格納するために、以下の処理を実行する。すなわち、要求冗長化決定部１２ｂは、格納可能バッファが複数存在するか否かを判別する。そして、要求冗長化決定部１２ｂは、格納可能バッファが１つのみ存在すると判別した場合には、当該格納可能バッファを要求パケットを格納するバッファとして選択する。その後、要求冗長化決定部１２ｂは、選択した複数のバッファを特定する情報と要求パケットを冗長化しない旨とを要求冗長化処理部１２ｃへ通知する。
【００４１】
一方、要求冗長化決定部１２ｂは、格納可能バッファが複数存在すると判別した場合には、要求の種別が冗長化を行わない種別であると判別した場合であっても、以下の手順により冗長化を行なう。すなわち、要求冗長化決定部１２ｂは、格納可能バッファが複数存在すると判別した場合には、予め定められた要求パケットを複製する数（以下、「予定冗長数」という）に基づき、当該複数の格納可能バッファを要求パケットを格納するバッファとして選択する。
【００４２】
例えば、要求冗長化決定部１２ｂは、予定冗長数が２であり、冗長対象の要求パケットと当該冗長対象の要求パケットを複製した１つの冗長要求パケットを格納する場合には、格納可能バッファが２つ以上存在するか否かを判別する。さらに、要求冗長化決定部１２ｂは、予定冗長数が３であり、冗長対象の要求パケットと当該冗長対象の要求パケットを複製した２つの冗長要求パケットを格納する場合には、格納可能バッファが３つ以上存在するか否かを判別する。そして、要求冗長化決定部１２ｂは、予定冗長数と等しい数の格納可能バッファが存在すると判別した場合には、当該複数の格納可能バッファを全て選択する。
【００４３】
さらに、要求冗長化決定部１２ｂは、予定冗長数を超える数の格納可能バッファが存在すると判別した場合には、複製する冗長要求パケットの数に応じて、複数の格納可能バッファから、要求パケットを格納する予定冗長数と等しい数のバッファをラウンドロビン方式等により選択する。その後、要求冗長化決定部１２ｂは、選択した複数のバッファを特定する情報と要求パケットを冗長化を行なう旨とを要求冗長化処理部１２ｃへ通知する。
【００４４】
さらに、要求冗長化決定部１２ｂは、格納可能バッファが１つも存在しないと判別した場合には、一定時間待機し、バッファ１２ｄ〜１２ｇに現在格納されている他の要求パケットが送出されることにより、格納可能バッファが生じるのを待つ。その後、格納可能バッファが１つ生じた場合、当該格納可能バッファを選択するするとともに、格納可能バッファが複数生じた場合、当該複数の格納可能バッファから、要求パケットを格納するバッファをラウンドロビン方式等により選択する。その後、要求冗長化決定部１２ｂは、選択した１つのバッファと要求パケットを冗長化しない旨とを要求冗長化処理部１２ｃへ通知する。
【００４５】
このように、要求冗長化決定部１２ｂは、新たに送信する要求の種別が冗長化を行う種別の要求であると判別した場合には、後述する要求冗長化処理部１２ｃが、選択した複数の格納可能バッファに格納した要求パケットの送信を指示することにより、要求パケットを冗長化させる。また、要求冗長化決定部１２ｂは、新たに送信する要求の種別が冗長化を行わない種別の要求である場合でも、格納可能バッファが複数存在する場合には、後述する要求冗長化処理部１２ｃが、選択した複数の格納可能バッファに格納した要求パケットの送信を指示することにより、要求パケットを冗長化させる。つまり、要求冗長化決定部１２ｂは、伝送路毎に設けられたバッファ１２ｄ〜１２ｇに空きが存在する場合には、冗長化を行わない種別の要求を示す要求パケットを冗長化して、要求受信部２２に送信させる。このため、要求冗長化決定部１２ｂは、伝送エラーを起因とする要求パケットの再送を低減させることができる。
【００４６】
なお、要求冗長化決定部１２ｂは、要求が示す処理の内容が、演算装置２０が実行する処理順序の保証が必要な要求を、冗長化を行う種別の要求であると判別する。このような処理順序の保証が必要な要求は、要求の実行によって他の要求の処理結果に影響を与えるため、単純な再実行が不可能な種類の応答である。例えば、要求冗長化決定部１２ｂは、ストア要求や演算装置２０に対する割り込み要求などを、冗長化を行う種別の要求であると判別する。
【００４７】
要求冗長化処理部１２ｃは、要求冗長化決定部１２ｂが選択した複数のバッファを特定する情報と要求を冗長化する旨とを含む通知を要求冗長化決定部１２ｂから取得した場合には、要求処理部１１に要求パケットを送信する旨を指示し、要求パケットを要求処理部１１から取得する。そして、要求冗長化処理部１２ｃは、取得した要求パケットを冗長数または予定冗長数に応じて複製し、複製したパケットを要求冗長化決定部１２ｂから取得した通知に含まれる選択したバッファを特定する情報が示すバッファに格納する。
【００４８】
一方、要求冗長化処理部１２ｃは、要求冗長化決定部１２ｂが選択した１つのバッファを特定する情報と要求を冗長化しない旨とを含む通知を要求冗長化決定部１２ｂから取得した場合には、要求処理部１１に要求パケットを送信する旨を指示し、要求パケットを要求処理部１１から取得する。そして、要求冗長化処理部１２ｃは、取得した要求パケットを要求冗長化決定部１２ｂから取得した通知に含まれる選択したバッファを特定する情報が示すバッファに格納する。
【００４９】
このように、要求送信部１２は、送信する要求パケットが示す要求の種別が冗長化を行わない種別の要求であっても、伝送路毎に設けられたバッファに空きが存在する場合には、複製した要求パケットを他の伝送路に対応する空きバッファに格納して送信することにより、要求パケットの冗長化を行なう。このため、要求送信部１２は、伝送路を有効に利用し、送信した要求パケットの伝送エラーの発生又はタイムアウトの発生を原因とするに、要求パケットを再送する回数を低減し、データ伝送におけるレイテンシの悪化を防ぐことができる。
【００５０】
図１に戻って、応答受信部１３は、応答送信部２３から複数の伝送路を介して送信された応答パケットを受信し、伝送エラーが発生した応答パケットを破棄するとともに、伝送エラーが発生せずに重複して受信した重複パケットがある場合には、重複パケットのいずれか１つを要求処理部１１へ送信し、残りの重複パケットを破棄する。
【００５１】
以下、応答受信部１３が有するエラー応答パケット破棄部１３ａと冗長応答パケット破棄部１３ｂが実行する処理について説明する。エラー応答パケット破棄部１３ａは、演算装置２０からエラーパケットを受信した場合、すなわち、演算装置２０から受信した応答パケットにエラーが発生した場合に、エラーパケットを破棄する処理を行なう。
【００５２】
例えば、応答パケットは、要求パケットと同様に、ＣＲＣのチェック処理の対象である伝送エラーを検出するための情報が格納された「ＣＲＣ」領域を有する。エラー応答パケット破棄部１３ａは、応答パケットの「ＣＲＣ」に格納された情報を用いて、ＣＲＣのチェック処理を実行し、応答パケットに伝送エラーが発生したか否かを判別する。そして、エラー応答パケット破棄部１３ａは、ＣＲＣチェック処理の結果に応じて、伝送エラーが発生したと判別した応答パケットを破棄し、伝送エラーが発生していないと判別した応答パケットを冗長応答パケット破棄部１３ｂに送信する。
【００５３】
冗長応答パケット破棄部１３ｂは、エラー応答パケット破棄部１３ａから正常な応答パケットを新たに受信した場合には、重複する応答パケットを既に受信済みであるか否かを判別し、既に重複する応答パケットを受信済みであると判別した場合には、新たに受信した応答パケットを破棄する。すなわち、冗長応答パケット破棄部１３ｂは、エラー応答パケット破棄部１３ａから複数の応答パケットを受信した場合には、最初に受信した応答パケット以外の応答パケットを破棄する。また、冗長応答パケット破棄部１３ｂは、既に重複する応答パケットを受信していないと判別した場合には、新たに受信した応答パケットから応答データを取得し、取得した応答データを要求処理部１１に送信する。なお、要求処理部１１は、応答を応答受信部１３から受信した際に、セットしたタイマー１４をリセットする。
【００５４】
ここで、タイマー１４は、要求処理部１１が要求冗長化処理部１２ｃに要求パケットを送信してから所定の時間が経過するまでの間に、応答受信部１３を介して演算装置２０から応答パケットを受信しない場合には、タイムアウトを要求送信部１２に通知する。すなわち、タイマー１４は、要求冗長化処理部１２ｃに要求パケットを送信してから所定の時間が経過するまでの間に、冗長応答パケット破棄部１３ｂからリセットされなかった場合には、タイムアウトを要求送信部１２に通知する。
【００５５】
次に、演算装置２０が有する各部について説明する。応答処理部２１は、要求受信部２２から要求を受信した場合には、受信した要求を処理して応答を作成する処理を行なう。例えば、応答処理部２１は、受信した要求がフェッチ要求やストア要求である場合には、メモリアクセス制御部２４を介してメモリ３０に対するデータの読み出しや書き込みを実行する。なお、メモリアクセス制御部２４とは、メモリ３０に格納されたデータに対するアクセスを制御するメモリコントローラである。
【００５６】
また、応答処理部２１は、要求処理部１１と同様に、応答を格納した応答パケットを生成するとともに、応答の種別を応答冗長化決定部２３ｂに送信する。そして、応答処理部２１は、応答冗長化処理部２３ｃから応答を送信する旨の通知を受信した場合には、生成した応答パケットを応答冗長化処理部２３ｃに送信する。なお、応答処理部２１が生成する応答パケットとしては、要求送信部１２が生成する要求パケットと同様に、「ＳＹＮＣ」領域、「ヘッダ」領域、「データ」領域、「ＣＲＣ」領域を有する応答パケットを生成するものとし、説明を省略する。
【００５７】
応答送信部２３は、要求送信部１２と同様に、入出力処理装置１０に送信する応答パケットに格納された応答の種別が冗長化を行う種別の応答であるか否かを判別する。換言するならば、応答送信部２３は、応答パケットに格納された応答が、順序の保証が必要な要求を処理した結果の応答であるのか否かを判別する。そして、応答送信部２３は、応答の種別が冗長化を行う種別の応答であると判別した場合には、応答パケットを複製することで冗長化し、冗長化した応答パケットをそれぞれ異なる伝送路を介して、入出力処理装置１０の応答受信部１３へ送信する。
【００５８】
また、応答送信部２３は、応答の種別が冗長化を行う種別の応答ではないと判別した場合には、送信中の応答パケットの数が所定の閾値よりも少ない伝送路、つまり、伝送帯域に余裕がある伝送路が複数存在するか否かを判別する。そして、応答送信部２３は、伝送帯域に余裕がある伝送路が複数存在すると判別した場合には、応答パケットを複製することで冗長化し、冗長化した応答パケットをそれぞれ異なる伝送路を介して、応答受信部１３へ送信する。また、応答送信部２３は、伝送帯域に余裕がある伝送路が複数存在しないと判別した場合には、応答パケットを冗長化せず、いずれかの伝送路を介して、応答受信部１３へ送信する。
【００５９】
次に、図４を用いて、応答送信部２３が有する各部について説明する、図４は、実施例１に係る応答送信部の一例を説明するための図である。なお、バッファ２３ｄ〜２３ｇは、要求送信部１２が有するバッファ１２ｄ〜１２ｇと同様の機能を発揮し、ＳｅｒＤｅｓ２３ｈ〜２３ｋは、要求送信部１２が有するＳｅｒＤｅｓ１２ｈ〜１２ｋと同様の機能を発揮するものとして、以下の説明を省略する。
【００６０】
応答資源管理部２３ａは、要求資源管理部１２ａと同様に、各バッファ２３ｄ〜２３ｇに格納された応答パケットの数を計数し、計数した応答パケットの数を応答冗長化決定部２３ｂに通知する。
【００６１】
応答冗長化決定部２３ｂは、応答処理部２１から新たに送信する応答の種別の通知を受けつけるとともに応答資源管理部２３ａから、各バッファ２３ｄ〜２３ｇに格納されている応答パケットの数の通知を受け付ける。また、応答冗長化決定部２３ｂは、応答処理部２１から応答の種別を受信した場合には、応答の種別が冗長化を行う種別であるか否かを判別する。
【００６２】
そして、応答冗長化決定部２３ｂは、応答の種別が冗長化を行う種別であると判別した場合には、冗長対象の応答パケットと当該冗長対象の応答パケットを複製した冗長応答パケットとを、それぞれ異なる伝送路に対応する複数のバッファに格納するために、以下の処理を実行する。
【００６３】
すなわち、応答冗長化決定部２３ｂは、応答資源管理部２３ａから通知された各バッファ２３ｄ〜２３ｇに格納されたパケットの数に基づいて、冗長対象の応答パケットと当該冗長対象の応答パケットを複製した冗長応答パケットとを合わせた冗長数、すなわち、各バッファ２３ｄ〜２３ｇに格納しようとする応答パケットの数以上の、応答パケットを格納する空き容量がある格納可能バッファが存在するか否かを判別する。
【００６４】
例えば、応答冗長化決定部２３ｂは、冗長対象の応答パケットと当該冗長対象の応答パケットを複製した１つの冗長応答パケットを格納する場合（冗長数が２の場合）には、格納可能バッファが２つ以上存在するか否かを判別する。さらに、冗長対象の応答パケットと当該冗長対象の応答パケットを複製した２つの冗長応答パケットを格納する場合（冗長数が３の場合）には、格納可能バッファが３つ以上存在するか否かを判別する。そして、応答冗長化決定部２３ｂは、冗長数と等しい数の格納可能バッファが存在すると判別した場合には、当該複数の格納可能バッファを全て選択する。
【００６５】
さらに、応答冗長化決定部２３ｂは、冗長数を超える数の格納可能バッファが存在すると判別した場合には、当該冗長数に応じて、複数の格納可能バッファから、応答パケットを格納する冗長数と等しい数のバッファをラウンドロビン方式等により選択する。その後、応答冗長化決定部２３ｂは、選択した複数のバッファを特定する情報と応答パケットを冗長化する旨とを応答冗長化処理部２３ｃへ通知する。
【００６６】
一方、応答冗長化決定部２３ｂは、応答資源管理部２３ａから通知された冗長対象の応答パケットと当該冗長対象の応答パケットを複製した冗長応答パケットの数に応じた数の格納可能バッファが存在しないと判別した場合には、一定時間待機し、応答資源管理部２３ａから冗長対象の応答パケットと冗長応答パケットの数、すなわち、各バッファ２３ｄ〜２３ｇに格納しようとする応答パケットの数の通知を再度受け付ける。その後、応答冗長化決定部２３ｂは、再度受け付けた各バッファ２３ｄ〜２３ｇに格納しようとする応答パケットの数に基づいて、格納可能バッファが存在するか否かを判別する。
【００６７】
また、応答冗長化決定部２３ｂは、応答の種別が冗長化を行わない種別であると判別した場合には、応答パケットを格納可能バッファの数に応じて、１つ又は複数のバッファに格納するために、以下の処理を実行する。すなわち、応答冗長化決定部２３ｂは、格納可能バッファが複数存在するか否かを判別する。そして、応答冗長化決定部２３ｂは、格納可能バッファが１つのみ存在すると判別した場合には、当該格納可能バッファを応答パケットを格納するバッファとして選択する。その後、応答冗長化決定部２３ｂは、選択した複数のバッファを特定する情報と応答パケットを冗長化しない旨とを応答冗長化処理部２３ｃへ通知する。
【００６８】
一方、応答冗長化決定部２３ｂは、格納可能バッファが複数存在すると判別した場合には、応答の種別が冗長化を行わない種別であると判別した場合であっても、以下の手順により冗長化を行なう。すなわち、応答冗長化決定部２３ｂは、格納可能バッファが複数存在すると判別した場合には、予め定められた応答パケットを複製する予定冗長数に基づき、当該複数の格納可能バッファを応答パケットを格納するバッファとして選択する。
【００６９】
例えば、応答冗長化決定部２３ｂは、予定冗長数が２であり、冗長対象の応答パケットと当該冗長対象の応答パケットを複製した１つの冗長応答パケットを格納する場合には、格納可能バッファが２つ以上存在するか否かを判別する。さらに、応答冗長化決定部２３ｂは、予定冗長数が３であり、冗長対象の応答パケットと当該冗長対象の応答パケットを複製した２つの冗長応答パケットを格納する場合には、格納可能バッファが３つ以上存在するか否かを判別する。そして、応答冗長化決定部２３ｂは、予定冗長数と等しい数の格納可能バッファが存在すると判別した場合には、当該複数の格納可能バッファを全て選択する。
【００７０】
さらに、応答冗長化決定部２３ｂは、予定冗長数を超える数の格納可能バッファが存在すると判別した場合には、複製する冗長応答パケットの数に応じて、複数の格納可能バッファから、応答パケットを格納する予定冗長数と等しい数のバッファをラウンドロビン方式等により選択する。その後、応答冗長化決定部２３ｂは、選択した複数のバッファを特定する情報と応答パケットを冗長化を行なう旨とを応答冗長化処理部２３ｃへ通知する。
【００７１】
さらに、応答冗長化決定部２３ｂは、格納可能バッファが１つも存在しないと判別した場合には、一定時間待機し、バッファ２３ｄ〜２３ｇに現在格納されている他の応答パケットが送出されることにより、格納可能バッファが生じるのを待つ。その後、格納可能バッファが１つ生じた場合、当該格納可能バッファを選択するするとともに、格納可能バッファが複数生じた場合、当該複数の格納可能バッファから、応答パケットを格納するバッファをラウンドロビン方式等により選択する。その後、応答冗長化決定部２３ｂは、選択した１つのバッファと応答パケットを冗長化しない旨とを応答冗長化処理部２３ｃへ通知する。
【００７２】
このように、応答冗長化決定部２３ｂは、新たに送信する応答の種別が冗長化を行う種別の応答であると判別した場合には、後述する応答冗長化処理部２３ｃが、選択した複数の格納可能バッファに格納した応答パケットの送信を指示することにより、応答パケットを冗長化させる。また、応答冗長化決定部２３ｂは、新たに送信する応答の種別が冗長化を行わない種別の応答である場合でも、格納可能バッファが複数存在する場合には、後述する応答冗長化処理部２３ｃが、選択した複数の格納可能バッファに格納した応答パケットの送信を指示することにより、応答パケットを冗長化させる。
【００７３】
つまり、応答冗長化決定部２３ｂは、伝送路毎に設けられたバッファ２３ｄ〜２３ｇに空きが存在する場合には、冗長化を行わない種別の応答を示す応答パケットを冗長化して、応答受信部１３に送信させる。このため、応答冗長化決定部２３ｂは、伝送エラーを起因とする応答パケットの再送を低減させることができる。なお、応答冗長化決定部２３ｂは、例えば、ストア応答や演算装置２０に対する割り込み応答などを、冗長化を行う種別の応答であると判別する。
【００７４】
応答冗長化処理部２３ｃは、応答冗長化決定部２３ｂが選択した複数のバッファを特定する情報と応答を冗長化する旨とを含む通知を応答冗長化決定部２３ｂから取得した場合には、応答処理部２１に応答パケットを送信する旨を指示し、応答パケットを応答処理部２１から取得する。そして、応答冗長化処理部２３ｃは、取得した応答パケットを冗長数または予定冗長数に応じて複製し、複製したパケットを応答冗長化決定部２３ｂから取得した通知に含まれる選択したバッファを特定する情報が示すバッファに格納する。
【００７５】
一方、応答冗長化処理部２３ｃは、応答冗長化決定部２３ｂが選択した１つのバッファを特定する情報と応答を冗長化しない旨とを含む通知を応答冗長化決定部２３ｂから取得した場合には、応答処理部２１に応答パケットを送信する旨を指示し、応答パケットを応答処理部２１から取得する。そして、応答冗長化処理部２３ｃは、取得した応答パケットを応答冗長化決定部２３ｂから取得した通知に含まれる選択したバッファを特定する情報が示すバッファに格納する。
【００７６】
なお、パケット転送の冗長化については、冗長化したパケットの送信側は冗長化したパケット同士の最大送出間隔を規定し、その時間内に受信側が複数の冗長化したパケットを受信できることを保証するようにしてもよい。この場合、最大送出間隔時間内に連続して伝送エラーを検出した場合は、致命的なエラーとして扱うことで、冗長化したパケット転送が全てエラーとなって全滅したケースでのシステムの誤動作を抑止することができる。
【００７７】
例えば、冗長パケットの最大送出間隔を１ミリ秒とした場合、冗長パケットの最初のパケットの送出時刻から最後のパケットの送出時刻までの時間が最大で１ミリ秒となる。従って、冗長パケットの受信側では、１ミリ秒以内で伝送エラーが連続した場合に、冗長パケットが全てエラーとなったと可能性があると判定し、致命的なエラーとして処理を停止して警告を出す。この処理の停止と警告によって、システムの誤動作、すなわち、実際には要求処理が完了したにも関わらず、冗長化した応答が全滅したことで要求が未完了と見なされて再実行されるという誤動作を回避することができる。
【００７８】
例えば、要求処理部１１、要求送信部１２、要求資源管理部１２ａ、要求冗長化決定部１２ｂ、要求冗長化処理部１２ｃ、応答受信部１３、エラー応答パケット破棄部１３ａ、冗長応答パケット破棄部１３ｂ、ＳｅｒＤｅｓ１２ｈ〜１２ｋとは、電子回路である。また、応答処理部２１、要求受信部２２、エラー要求パケット破棄部２２ａ、冗長要求パケット破棄部２２ｂ、応答送信部２３、応答資源管理部２３ａ、応答冗長化決定部２３ｂ、応答冗長化処理部２３ｃ、ＳｅｒＤｅｓ２３ｈ〜２３ｋとは、電子回路である。ここで、電子回路の例として、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路を適用できる。
【００７９】
また、バッファ１２ｄ〜１２ｇ、バッファ２３ｄ〜２３ｇとは、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（flash  memory）などの半導体メモリ素子、またはバッファ等の記憶素子である。
【００８０】
［要求送信部１２が実行する処理］
次に、図５を用いて、要求送信部１２が実行する処理の流れの一例を説明する。図５は、実施例１に係る要求送信部が要求パケットを送信する処理の一例を説明するためのフローチャートである。図５に示す例では、要求送信部１２は、要求の送信要求を受信したか否かを処理のトリガとする（ステップＳ１０１）。すなわち、要求送信部１２は、要求の送信要求を受信していない場合には（ステップＳ１０１否定）、一時的に待機し、再度、要求の送信要求を受信したか否かを判別する（ステップＳ１０１）。次に、要求送信部１２は、要求の送信要求を受信した場合には（ステップＳ１０１肯定）、新たに送信する要求の種別を判別する（ステップＳ１０２）。
【００８１】
そして、要求送信部１２は、判別した要求の種別が冗長化を行う種別の要求であるか否かを判別する（ステップＳ１０３）。要求送信部１２は、判別した要求の種別が冗長化を行わない種別の要求であると判別した場合には（ステップＳ１０３否定）、冗長化を行わない種別の要求パケット送信処理を実行し（ステップＳ１０４）、要求パケットをバッファに格納する（ステップＳ１１０）。一方、要求送信部１２は、判別した要求の種別が冗長化を行う種別の要求であると判別した場合には（ステップＳ１０３肯定）、送信資源が空いているか判断する（ステップＳ１０５）。つまり、要求送信部１２は、要求パケットを格納することができるバッファが存在するか否かを判別する。
【００８２】
そして、要求送信部１２は、空いている送信資源が存在しないと判別した場合には（ステップＳ１０６否定）、一定時間待機し（ステップＳ１０７）、再度、送信資源が空いているか否かを判断する（ステップＳ１０５）。一方、要求送信部１２は、空いている送信資源が存在すると判別した場合は（ステップＳ１０５肯定）、冗長化した要求パケットを格納するバッファを選択するとともに、要求パケットを要求処理部１１から取得し（ステップＳ１０８）、取得した要求パケットを冗長化する（ステップＳ１０９）。次に、要求送信部１２は、冗長化した要求パケットを選択したバッファに格納する（ステップＳ１１０）。その後、要求送信部１２は、各バッファ１２ｄ〜１２ｇに格納された要求パケットを要求受信部２２へ送信し（ステップＳ１１１）、処理を終了する。
【００８３】
次に、図６を用いて、冗長化を行わない種別の要求パケット送信処理について説明する。図６は、実施例１に係る要求送信部による冗長化を行わない要求パケット送信処理の一例を説明するための図である。なお、図６に示す各処理は、図５中ステップＳ１０４と対応する処理である。
【００８４】
まず、要求送信部１２は、各バッファ１２ｄ〜１２ｇに格納されている要求パケットの数を取得する（ステップＳ２０１）。そして、要求送信部１２は、格納されている要求パケットの数が所定の閾値以下であるバッファが複数存在するか否かを判別する（ステップＳ２０２）。その後、要求送信部１２は、格納されている要求パケットの数が所定の閾値以下であるバッファが複数存在すると判別した場合には（ステップＳ２０２肯定）、冗長化可能であると判別するとともに、冗長化した要求パケットを格納するバッファを選択する（ステップＳ２０３）。
【００８５】
このような場合には、要求送信部１２は、要求パケットを要求処理部１１から受信し（ステップＳ２０４）、受信したパケットを冗長化する（ステップＳ２０５）。その後、要求送信部１２は、冗長化を行わない種別の要求パケット送信処理を終了し、冗長化した要求パケットを選択したバッファ、すなわち、それぞれ異なるバッファに格納する（図５中ステップＳ１１０）。
【００８６】
一方、要求送信部１２は、各バッファ１２ｄ〜１２ｇに格納されている要求パケットの数が所定の閾値以下であるバッファが複数存在しないと判別した場合には（ステップＳ２０２否定）、要求パケットの冗長化をしないと判別する（ステップＳ２０６）。このような場合には、要求送信部１２は、各バッファ１２〜１２ｇに要求パケット１つ分の空き容量があるか否かを判断する（ステップＳ２０７）。そして、要求送信部１２は、いずれかのバッファに要求パケット１つ分の空き容量があるか否かを判別し（ステップＳ２０８）、いずれのバッファにも空き容量がないと判別した場合には（ステップＳ２０８否定）、一定時間待機する（ステップＳ２０９）。その後、要求送信部１２は、再度、各バッファ１２ｄ〜１２ｇに要求パケット１つ分の空き容量があるか判断する（ステップＳ２０７）。
【００８７】
また、要求送信部１２は、いずれかのバッファに要求パケット１つ分の空き容量があると判別した場合には（ステップＳ２０８肯定）、要求パケットを格納するバッファを選択するとともに、要求処理部１１から要求パケットを受信する（ステップＳ２１０）。その後、要求送信部１２は、冗長化を行わない種別の要求パケット送信処理を終了し、受信した要求パケットを冗長化せず、選択したバッファに格納する（図５中ステップＳ１１０）。
【００８８】
なお、応答送信部２３は、図５および図６に示した要求送信部１２と同様の処理を実行することで、応答パケットを冗長化するものとし、詳細な説明を省略する。
【００８９】
［実施例１の効果］
上述したように、実施例１に係るコンピュータシステム１は、複数の伝送路で接続した入出力処理装置１０と演算装置２０を有する。また、入出力処理装置１０は、各伝送路を介して送信する要求パケットを一時的に記憶する複数のバッファ１２ｄ〜１２ｇを有し、各バッファ１２ｄ〜１２ｇに格納されている要求パケットの数を計数する。また、入出力処理装置１０は、演算装置２０へ送信する要求の種別が冗長化を行う種別であるか否かを判別する。
【００９０】
そして、入出力処理装置１０は、送信する要求の種別が冗長化を行わない種別であると判別し、かつ、格納された要求パケットの数が所定の閾値よりも少ないバッファが複数存在する場合には、要求を格納した要求パケットを複製することで冗長化する。その後、入出力処理装置１０は、複製した要求パケットをそれぞれ異なるバッファに格納することで、それぞれ異なる伝送経路を介して、演算装置２０へ送信する。
【００９１】
このため、入出力処理装置１０は、伝送路に空きがある際に、要求パケットを冗長化せずに送信し、伝送エラーによって破棄された際に発生する要求パケットの再送処理が発生する回数を削減する。この結果、コンピュータシステム１は、伝送路を有効に利用し、データ伝送におけるレイテンシの悪化を防ぐことができる。
【００９２】
また、入出力処理装置１０は、演算装置２０が事項する処理の順序の保証が必要な要求を冗長化を行う種別の要求であると判別する。このため、コンピュータシステム１は、再度の要求を送信することができない処理を演算装置２０に要求する際に、冗長化を行うことで、伝送エラーにより要求が実行されないことによる致命的なエラーを防止することができる。
【００９３】
また、入出力処理装置１０は、演算装置２０に送信した要求に対する応答を所定の時間内に受信しなかった場合には、演算装置２０に送信した要求と同じ要求を示す要求パケットを再度演算装置２０に送信する。このため、コンピュータシステム１は、演算装置２０によって実行される処理を伝送エラーによる要求パケットの全滅から救済する事ができる。
【００９４】
また、演算装置２０は、伝送エラーが発生した要求パケットと、重複して受信した要求パケットとを破棄し、破棄しなかった要求パケットに格納された要求が示す処理を実行し、応答を入出力処理装置１０へ送信する。このため、コンピュータシステム１は、演算装置２０に、適切な処理を実行させることができる。つまり、コンピュータシステム１は、要求を冗長化したことを起因とした重複する処理や伝送エラーが発生したことを起因とする誤った処理を演算装置２０が実行することを防ぐことができる。
【００９５】
また、演算装置２０は、入出力処理装置１０と同様に、送信する応答の種別が冗長化を行わない種別であると判別し、かつ、各バッファ２３ｄ〜２３ｇに、格納された応答パケットの数が所定の閾値よりも少ないバッファが複数存在する場合には、以下の処理を行う。つまり、演算装置２０は、応答を格納する応答パケットを複製することで冗長化し、複製した応答パケットをそれぞれ異なる伝送路を介して、入出力処理装置１０へ送信する。このため、コンピュータシステム１は、応答パケットを送信する伝送路についても、有効な利用を実現し、データ伝送におけるレイテンシの悪化を防ぐことができる。
【実施例２】
【００９６】
これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例２として本発明に含まれる他の実施例を説明する。
【００９７】
（１）冗長化を行う処理について
上述した要求送信部１２は、送信する要求が冗長化を行わない種別の要求であって、かつ、各バッファ１２ｄ〜１２ｇに冗長化したパケットを格納するだけの空きが存在する場合には、要求を格納した要求パケットを複製することで冗長化した。しかし、実施例はこれに限定されるものではなく、要求送信部１２は、任意の方法を用いて、空いている伝送路が複数存在するか否かを判別し、空いている伝送路が存在する場合には、要求パケットを複製することで冗長化を行ってよい。例えば、要求送信部１２は、各バッファ１２ｄ〜１２ｇのうち、記憶している要求パケットの数が所定の閾値よりも少ないバッファを検出し、検出したバッファの数が冗長化数よりも多い場合には、送信する要求を冗長化すると判別してもよい。
【００９８】
また、要求送信部１２は、各バッファ１２ｄ〜１２ｇに格納された要求パケットの数だけではなく、今後送信する要求の有無に基づいて、要求パケットの冗長化の可否を判断することとしてもよい。
【００９９】
例えば、要求処理部１１は、入出力デバイス制御部１５を介して取得した要求を一時的に記憶するバッファを有し、バッファに格納された要求の送信要求を要求送信部１２へ送信する。このような場合に、要求処理部１１は、送信要求を要求送信部１２へ送信した要求以外の要求がバッファに格納されているか否かを判別する。つまり、要求処理部１１は、後続の要求が存在するか否かを判別する。
【０１００】
そして、要求処理部１１は、後続の要求が存在すると判別した場合には、要求送信部１２に要求の送信要求を送信するとともに、後続の要求が存在するか否かを示す情報を送信する。このような場合には、要求送信部１２は、新たに送信する要求の後続として演算装置２０に送信する要求が存在すると判別する。そして、要求送信部１２は、新たに送信する要求の後続として演算装置２０に送信する要求が存在すると判別した場合には、格納された要求パケットの数が所定の数よりも少ないバッファが各バッファ１２ｄ〜１２ｇに存在する場合にも、要求パケットを複製しない。つまり、要求送信部１２は、新たに送信する要求が冗長化を行なわない種別の要求であって、後続の要求が存在する場合には、伝送路に空きがある場合にも、冗長化を行わずに、演算装置２０へ送信する。
【０１０１】
一方、要求処理部１１は、後続の要求が存在しないと判別した場合には、要求送信部１２に要求の送信要求のみを送信する。このような場合には、要求送信部１２は、実施例１と同様の処理を実行する。すなわち、要求送信部１２は、送信する要求の種別が冗長化を行わない種別であって、格納された要求パケットの数が所定の数よりも少ないバッファが各バッファ１２ｄ〜１２ｇに存在する場合には、要求が格納された要求パケットを複製することで冗長化を行う。
【０１０２】
このように要求送信部１２は、冗長化を行わない種別の要求が格納されたパケットを冗長化することにより、後続の要求についてのレイテンシが増大することを防ぐことができる。この結果、コンピュータシステム１は、より適切に伝送路を利用し、データ伝送のレイテンシの悪化を防ぐことができる。
【０１０３】
（２）入出力処理装置と演算装置とについて
上述したコンピュータシステム１は、入出力処理装置１０と演算装置２０を複数の伝送路で接続し、シリアル伝送方式を用いて、要求パケットと応答パケットとを送受信させていた。しかし、実施例はこれに限定されるものではない。すなわち、本願は、複数の伝送路で接続された任意の装置間において適用することができる。
【０１０４】
（３）パケットを格納するバッファの選択について
上述した要求冗長化決定部１２ｂは、各バッファ１２ｄ〜１２ｇのうち、要求パケットを格納することができるバッファから要求パケットを格納するバッファをラウンドロビン方式で選択した。しかし、実施例はこれに限定されるものではなく、要求冗長化決定部１２ｂは、要求パケットを格納することができるバッファのうち、格納された要求パケットの数が一番少ないバッファを選択することとしてもよい。また、要求冗長化決定部１２ｂは、格納された要求パケットの数が一番少ないバッファから、要求パケットを複製する数と同数のバッファを選択することとしてもよい。
【０１０５】
また、応答冗長化決定部２３ｂも同様に、応答パケットを格納することができるバッファのうち、格納された応答パケットの数が一番少ないバッファを選択することとしてもよい。また、応答冗長化決定部２３ｂは、格納された応答パケットの数が一番少ないバッファから、応答パケットを複製する数と同数のバッファを選択することとしてもよい。
【０１０６】
（４）冗長化を行う処理について
上述した要求冗長化決定部１２ｂは、ストア要求や、割り込み要求のように、演算装置２０による実行順序の保証が必要な処理について、冗長化を行う処理であると判別した。しかし、実施例は、これに限定されるものではない。すなわち、本願は、複数の伝送路で接続された任意の装置間において適用することができるため、適用された装置間において冗長化して送受信される任意の要求を適用することができる。
【符号の説明】
【０１０７】
１  コンピュータシステム
２  入出力デバイス
１０  入出力処理装置
１１  要求処理部
１２  要求送信部
１２ａ  要求資源管理部
１２ｂ  要求冗長化決定部
１２ｃ  要求冗長化処理部
１２ｄ〜１２ｇ、２３ｄ〜２３ｇ  バッファ
１２ｈ〜１２ｋ、２３ｈ〜２３ｋ  ＳｅｒＤｅｓ
１３  応答受信部
１３ａ  エラー応答パケット破棄部
１３ｂ  冗長応答パケット破棄部
１４  タイマー
１５  入出力デバイス制御部
２０  演算装置
２１  応答処理部
２２  要求受信部
２２ａ  エラー要求パケット破棄部
２２ｂ  冗長要求パケット破棄部
２３  応答送信部
２３ａ  応答資源管理部
２３ｂ  応答冗長化決定部
２３ｃ  応答冗長化処理部
２４  メモリアクセス制御部
３０  メモリ
【図１】
2013009045.tif 000003
【図２】
2013009045.tif 000004
【図３】
2013009045.tif 000005
【図４】
2013009045.tif 000006
【図５】
2013009045.tif 000007
【図６】
2013009045.tif 000008
【図７】
2013009045.tif 000009