説明

伝送システム、伝送装置および伝送装置の制御方法

【課題】複数の伝送路を有効に利用することができない。
【解決手段】入出力処理装置10は、送信する要求の種別が冗長化を行う種別の要求であると判別した場合、または、送信する要求の種別が冗長化を行わない種別の要求であると判別し、かつ、計数した要求の数が所定の閾値以下であるバッファが複数存在すると判別した場合には、要求を複製した複数の要求を、バッファ12d〜12gのうちそれぞれ異なるバッファにそれぞれ格納する。また、入出力処理装置10は、送信する要求の種別が冗長化を行わない種別の要求であると判別し、かつ、計数した要求の数が所定の閾値以下であるバッファが複数存在していないと判別した場合には、いずれか1つのバッファに要求を格納する。そして、入出力処理装置10は、それぞれ異なる伝送路を介して、各バッファ12d〜12gが記憶する要求を演算装置20へ送信する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、伝送システム、伝送装置および伝送装置の制御方法に関する。
【背景技術】
【0002】
従来、伝送路を介して1ビット幅のデータを伝送するシリアル伝送方式が知られている。また、複数の伝送路を用いてシリアル伝送方式によるデータ伝送を行うことで、装置間におけるデータ伝送のスループットを向上させる技術が知られている。
【0003】
このような技術の一例として、CPU(Central Processing Unit)等の演算装置とI/O(Input/Output)等の入出力処理装置とが複数の伝送路を介してシリアル伝送方式によるデータの送受信を行うコンピュータシステムが知られている。このようなコンピュータシステムの一例を、図7を用いて説明する。図7は、従来のコンピュータシステムを説明するための図である。図7に示す例では、コンピュータシステム40は、入出力処理装置41、演算装置45、メモリ49を有する。
【0004】
入出力処理装置41は、要求処理部42、要求送信部43、応答受信部44を有し、入出力デバイス50と接続されている。演算装置45は、要求受信部46、応答処理部47、応答送信部48を有し、メモリ49と接続されている。要求送信部43と要求受信部46、および、応答送信部48と応答受信部44は、それぞれ複数の伝送路で接続されている。
【0005】
このような入出力処理装置41は、ディスク装置やネットワークインターフェース装置等の入出力デバイス50からの入力に基づいて、メモリ49に対するデータのフェッチ要求やストア要求などの処理の要求を生成し、生成した要求を演算装置45に送信する。また、演算装置45は、要求を受信した場合には、受信した要求に係る処理を実行し、処理の実行結果に応じた応答を入出力処理装置41へ送信する。
【0006】
ここで、シリアル伝送方式において、伝送エラーが発生した際にデータを再度処理するための回路の規模やフロー制御に要するコストを削減するため、所定の種別のデータを送信する場合にのみ、送信するデータを冗長化して送信する技術が知られている。
【0007】
例えば、入出力処理装置41が有する要求処理部42は、入出力デバイス50からの入力に基づいて、メモリ49に対するデータのフェッチ要求やストア要求などの処理に係る上記の送信するデータに対応する要求を生成し、生成した要求を要求送信部43に送信する。要求送信部43は、要求処理部42から要求を受信した場合には、受信した要求が冗長化して送信する種別の要求であるか否かを判別する。詳細には、要求送信部43は、メモリ49に対するストア処理等、入出力処理装置41から再度の実行を要求できない処理の要求であるか否かを判別する。
【0008】
そして、要求送信部43は、受信した要求が冗長化して送信する種別の要求であると判別した場合には、受信した要求を複製し、複製した要求をそれぞれ異なる伝送路を介して要求受信部46に送信する。また、要求送信部43は、受信した要求が冗長化して送信する種別の要求ではないと判別した場合には、受信した要求を冗長化せず、いずれかの伝送路を介して、要求受信部46へ送信する。
【0009】
一方、要求受信部46は、要求送信部43から要求を受信した場合には、受信した要求に伝送エラーが発生しているか否かを判別し、伝送エラーが発生していると判別した要求を破棄する。また、要求受信部46は、伝送エラーが発生していないと判別した要求については、同一の要求を既に受信しているか否かを判別し、受信していると判別した場合には、新たに受信した要求を冗長化された要求であるとして破棄する。
【0010】
応答処理部47は、要求受信部46が受信した要求に係る処理を実行した後に、処理の実行結果に応じた応答を生成し、生成した応答を応答送信部48に送信する。応答送信部48は、応答処理部47が生成した応答が冗長化して送信する種別の応答であるか否かを判別し、冗長化して送信する種別の応答であると判別した場合には、応答を複製し、複製した応答をそれぞれ異なる伝送路を介して応答受信部44に送信する。また、応答送信部48は、冗長化して送信する種別の応答ではないと判別した場合には、応答をいずれかの伝送路を介して、応答受信部44に送信する。
【0011】
応答受信部44は、要求受信部46と同様に、受信した応答に伝送エラーが発生していると判別した応答、および、同一の応答を既に受信した応答を破棄し、破棄しなかった応答を要求処理部42に送信する。その後、要求処理部42は、応答受信部44から受信した応答に基づいて、入出力デバイス50に対する出力を行う。また、要求送信部43は、要求を送信してから所定の時間が経過するまでの間に、送信した要求に対する応答を応答受信部44が受信しなかった場合には、要求を要求受信部46へ再度送信する。
【先行技術文献】
【特許文献】
【0012】
【特許文献1】特開2010−050742号公報
【発明の概要】
【発明が解決しようとする課題】
【0013】
しかしながら、あらかじめ定められた冗長化する種別のデータを複製し、複製したデータを送信する技術では、冗長化しない種別のデータを断続的に送信する場合に、伝送路を有効に利用することができないという問題がある。
【0014】
例えば、入出力処理装置41は、伝送路が空いている場合にも、冗長化しない種別のデータ(要求)を1つの伝送路を介して送信するので、演算装置45が受信したデータ(要求)に伝送エラーが発生した場合には、データを再度演算装置45に送信する。このため、入出力処理装置41は、データ伝送におけるレイテンシを悪化させてしまう。
【0015】
1つの側面では、上述した問題に鑑みてなされたものであって、伝送路を有効に利用し、データ伝送におけるレイテンシの悪化を軽減する。
【課題を解決するための手段】
【0016】
1つの側面では、第1の装置と、第1の装置に複数の伝送路を介して接続される第2の装置とを有する伝送システムである。このような伝送システムが有する第1の装置は、複数の伝送路毎にそれぞれ設けられ、第2の装置に送信する要求を記憶する複数の要求記憶部を有する。また、第1の装置は、第2の装置に送信する要求の種別が、冗長化を行う種別の要求であるか否かを判別する要求判別部を有する。また、第1の装置は、複数の要求記憶部の各々に記憶された要求の数を計数し、計数した要求の数が所定の閾値以下である要求記憶部の数を判別する要求資源判別部を有する。また、第1の装置は、要求判別部が送信する要求の種別が冗長化を行う種別の要求であると判別した場合、または、要求判別部が送信する要求の種別が冗長化を行わない種別の要求であると判別し、かつ、要求資源判別部が計数した要求の数が所定の閾値以下である要求記憶部が複数存在すると判別した場合には、要求を複製した複数の要求を、複数の要求記憶部のうちそれぞれ異なる複数の要求記憶部にそれぞれ格納する要求格納部を有する。ここで、要求格納部は、要求判別部が送信する要求の種別が冗長化を行わない種別の要求であると判別し、かつ、要求資源判別部が計数した要求の数が所定の閾値以下である要求記憶部が複数存在していないと判別した場合には、当該要求を、いずれか1つの要求記憶部に格納する。また、第1の装置は、複数の伝送路のうちそれぞれ異なる伝送路を介して、複数の要求記憶部の各々に記憶される要求を第2の装置へ送信する複数の要求送信部を有する。
【発明の効果】
【0017】
1つの側面では、伝送路を有効に利用し、データ伝送におけるレイテンシの悪化を軽減する。
【図面の簡単な説明】
【0018】
【図1】図1は、実施例1に係るコンピュータシステムの一例を説明するための図である。
【図2】図2は、要求処理部が生成する要求パケットの一例を説明するための図である。
【図3】図3は、実施例1に係る要求送信部の一例を説明するための図である。
【図4】図4は、実施例1に係る応答送信部の一例を説明するための図である。
【図5】図5は、実施例1に係る要求送信部が要求パケットを送信する処理の一例を説明するためのフローチャートである。
【図6】図6は、実施例1に係る要求送信部による冗長化を行わない要求パケット送信処理の一例を説明するための図である。
【図7】図7は、従来の伝送装置を説明するための図である。
【発明を実施するための形態】
【0019】
以下に添付図面を参照して本願に係る伝送システム、伝送装置および伝送装置の制御方法について説明する。
【実施例1】
【0020】
実施例1では、図1を用いて、シリアル伝送方式により要求と応答とを送受信する複数の装置を有するコンピュータシステムの一例を説明する。図1は、実施例1に係るコンピュータシステム1を説明するための図である。
【0021】
図1に示す例では、コンピュータシステム1は、入出力処理装置(I/O装置)10、演算装置20、メモリ30を有する。また、コンピュータシステム1は、入出力デバイス2と接続されている。なお、入出力デバイス2は、ディスク装置やネットワークインターフェース装置等の各種デバイスである。また、メモリ30には、各種データが格納されているものとする。
【0022】
入出力処理装置10は、その内部に要求処理部11、要求送信部12、応答受信部13、入出力デバイス制御部15を有する。入出力デバイス制御部15は、入出力デバイス2と接続するインターフェースである。また、要求処理部11は、タイマー14を有する。また、要求送信部12は、要求資源管理部12a、要求冗長化決定部12b、要求冗長化処理部12c、複数のバッファ12d〜12g、複数のSerDes(Serializer/Deserializer)12h〜12kを有する。また、応答受信部13は、エラー応答パケット破棄部13a、冗長応答パケット破棄部13bを有する。
【0023】
また、演算装置20は、応答処理部21、要求受信部22、応答送信部23、メモリアクセス制御部24を有する。要求受信部22は、エラー要求パケット破棄部22a、冗長要求パケット破棄部22bを有する。また、応答送信部23は、応答資源管理部23a、応答冗長化決定部23b、応答冗長化処理部23c、複数のバッファ23d〜23g、複数のSerDes23h〜23kを有する。
【0024】
要求処理部11は、入出力デバイス2からの入力に基づいて、演算装置10に所定の処理の実行を要求する処理を行なう。また、要求処理部11は、要求送信部12が送信した要求に対する応答を応答受信部13が受信した場合には、受信した応答に基づいて、要求した処理の結果を入出力デバイス2へ送信する。さらに、要求処理部11は、タイムアウトを監視するタイマー14を有する。
【0025】
例えば、要求処理部11は、入出力デバイス制御部15を介して、データをメモリ30からフェッチするフェッチ要求を入出力デバイス2から取得する。フェッチ要求を取得した要求処理部11は、フェッチ要求を示す情報が格納された要求パケットを生成する。また、要求処理部11は、フェッチ要求を示す情報を含む要求パケットを送信する指示を要求送信部12の要求冗長化決定部12bへ送信する。そして、要求処理部11は、要求送信部12が有する要求冗長化処理部12bからフェッチ要求に係る要求パケットを送信する旨の指示を指示された場合には、生成したフェッチ要求に係る要求パケットを要求冗長化処理部12cへ送信する。
【0026】
また、例えば、要求処理部11は、入出力デバイス制御部15を介して、データをメモリ30にストアする旨のフェッチ要求を入出力デバイス2から取得する。ストア要求を取得した要求処理部11は、データをメモリ30にストアする旨のストア要求を示す情報と、メモリ30に格納するデータとが格納された要求パケットを生成する。また、要求処理部11は、ストア要求を示す情報を含む要求パケットを送信する指示を要求送信部12の要求冗長化決定部12bへ送信する。そして、要求処理部11は、要求送信部12が有する要求冗長化処理部12bからストア要求に係る要求パケットを送信する旨を指示された場合には、生成したストア要求に係る要求パケットを要求冗長化処理部12cへ送信する。
【0027】
そして、要求処理部11は、フェッチ要求に対するフェッチ応答を応答受信部13が受信した場合には、受信したフェッチ応答に基づいて、フェッチ要求の完了通知とメモリ30からフェッチしたデータを入出力デバイス2に対して出力を行う。また、要求処理部11は、ストア要求に対する応答であるストア応答を応答受信部13が受信した場合には、受信したストア応答に基づいて、ストア要求の完了通知を入出力デバイス2に対して出力を行う。
【0028】
また、要求処理部11は、要求送信部12に対して、冗長化を行わない種別の要求を送信する指示を送信した場合には、当該指示を送信してから要求に対する演算装置20からの応答を応答受信部13を介して受信するまでの時間をタイマー14を用いて監視する。そして、要求処理部11は、タイマー14を用いた監視により、所定時間が経過するまでに、要求送信部12に送信を指示した要求パケットに対応する応答パケットを応答受信部13から受信しなかった場合には、再度要求送信部12に対して、要求を送信する指示を行なう。
【0029】
具体的には、要求処理部11は、要求を送信する指示を行った場合には、タイマー14をセットする。そして、要求処理部11は、タイマー14がタイムアウトを通知した場合には、つまり、送信した要求に対する応答を応答受信部13から所定の時間内に受信しなかった場合には、要求冗長化処理部12cに再度要求を送信する指示を行う。なお、後述する要求冗長化処理部12cは、要求処理部11から再度要求を送信する指示を行った場合には、バッファに格納された要求パケットを再度演算装置20の要求受信部22へ送信する。
【0030】
次に、図2を用いて、要求処理部11が生成する要求パケットの一例について説明する。図2は、要求処理部11が生成する要求パケットの一例を説明するための図である。図2に示す例では、要求パケットは、パケットの先頭を示す情報が格納された「SYNC」領域、パケットのサイズや宛先が格納される「ヘッダ」領域を有する。また、要求パケットは、要求の内容が格納される「データ」領域、パケットの「データ」領域の伝送エラーを検出するためのCRC(Cyclic Redundancy Check)を実行するための情報が格納される「CRC」領域を有する。ここで、「CRC」に格納される情報は、実行するCRCによって任意のサイズ長を選ぶことができる。例えば、「CRC−8」を実行する場合には9ビット、「CRC−16」を実行する場合には17ビット、「CRC−32」を実行する場合には33ビット、「CRC−64」を実行する場合には65ビットの情報が格納される。
【0031】
図1に戻って、要求送信部12は、演算装置20に送信する要求パケットに格納された要求の種別が、冗長化を行う種別の要求であるか否かを判別する。そして、要求送信部12は、演算装置20に送信する要求パケットに格納された要求の種別が冗長化を行う種別の要求であると判別した場合には、送信する要求パケットを複製し、複製した要求パケットをそれぞれ異なる伝送路を介して演算装置20へ送信する。
【0032】
また、要求送信部12は、演算装置20に送信する要求パケットに格納された要求の種別が冗長化を行わない種別の要求であると判別した場合には、以下の処理を実行する。すなわち、要求送信部12は、要求パケットを送信する各伝送路のうち、送信中の要求パケットの数が所定の閾値よりも少ない伝送路、すなわち、伝送帯域に余裕がある伝送路が複数存在するか否かを判別する。そして、要求送信部12は、伝送帯域に余裕がある伝送路が複数存在すると判別した場合には、演算装置20に送信する要求パケットを複製し、複製した要求パケットをそれぞれ異なる伝送路を介して演算装置20へ送信する。一方、要求送信部12は、伝送帯域に余裕がある伝送路が複数存在しないと判別した場合には、要求パケットを複製せず、いずれかの伝送路を介して、演算装置20へ送信する。
【0033】
以下、図3を用いて、要求送信部12の具体例を説明する。図3は、実施例1に係る要求送信部の一例を説明するための図である。例えば、要求送信部12は、要求受信部22に要求パケットを送信する伝送路のそれぞれに対応したバッファ12d〜12gとSerDes12h〜12kを有する。ここで、各バッファ12d〜12gは、それぞれ異なる伝送路を介して送信される要求パケットを一時的に記憶するバッファである。また、各SerDes12h〜12kは、各バッファ12d〜12gに格納された要求パケットを取得し、取得した要求パケットをシリアルデータに変換し、変換したシリアルデータをそれぞれ異なる伝送路を介して、要求受信部22へ送信する。つまり、各SerDes12h〜12kは、シリアル伝送方式を用いて、要求パケットを要求受信部22へ送信する送信部である。
【0034】
要求資源管理部12aは、各バッファ12d〜12gに格納された要求パケットの数を個別に計数する。例えば、要求資源管理部12aは、各バッファ12d〜12gについて、要求パケットが格納される毎に要求パケットの数をカウントアップし、要求パケットが送信されるたびに、要求パケットの数をカウントダウンする。また、要求資源管理部12aは、所定の時間が経過するごとに、各バッファ12d〜12gに格納されている要求パケットの数を要求冗長化決定部12bに通知する。
【0035】
要求冗長化決定部12bは、要求資源管理部12aから、各バッファ12d〜12gに格納されている要求パケットの数の通知を受け付ける。また、要求冗長化決定部12bは、要求処理部11から要求の種別を受信した場合には、要求の種別が冗長化を行う種別であるか否かを判別する。
【0036】
そして、要求冗長化決定部12bは、要求の種別が冗長化を行う種別であると判別した場合には、冗長対象の要求パケットと当該冗長対象の要求パケットを複製した冗長要求パケットとを、それぞれ異なる伝送路に対応する複数のバッファに格納するために、以下の処理を実行する。すなわち、要求冗長化決定部12bは、要求資源管理部12aから通知された各バッファ12d〜12gに格納されたパケットの数に基づいて、冗長対象の要求パケットと当該冗長対象の要求パケットを複製した冗長要求パケットとを合わせた数(以下、「冗長数」という)、すなわち、各バッファ12d〜12gに格納しようとする要求パケットの数以上の、要求パケットを格納する空き容量があるバッファ(以下、「格納可能バッファ」という)が存在するか否かを判別する。
【0037】
例えば、要求冗長化決定部12bは、冗長対象の要求パケットと当該冗長対象の要求パケットを複製した1つの冗長要求パケットを格納する場合(冗長数が2の場合)には、格納可能バッファが2つ以上存在するか否かを判別する。さらに、冗長対象の要求パケットと当該冗長対象の要求パケットを複製した2つの冗長要求パケットを格納する場合(冗長数が3の場合)には、格納可能バッファが3つ以上存在するか否かを判別する。そして、要求冗長化決定部12bは、冗長数と等しい数の格納可能バッファが存在すると判別した場合には、当該複数の格納可能バッファを全て選択する。
【0038】
さらに、要求冗長化決定部12bは、冗長数を超える数の格納可能バッファが存在すると判別した場合には、当該冗長数に応じて、複数の格納可能バッファから、要求パケットを格納する冗長数と等しい数のバッファをラウンドロビン方式等により選択する。その後、要求冗長化決定部12bは、選択した複数のバッファを特定する情報と要求パケットを冗長化する旨とを要求冗長化処理部12cへ通知する。
【0039】
一方、要求冗長化決定部12bは、要求資源管理部12aから通知された冗長対象の要求パケットと当該冗長対象の要求パケットを複製した冗長要求パケットの数に応じた数の格納可能バッファが存在しないと判別した場合には、一定時間待機し、要求資源管理部12aから冗長対象の要求パケットと冗長要求パケットの数、すなわち、各バッファ12d〜12gに格納しようとする要求パケットの数の通知を再度受け付ける。その後、要求冗長化決定部12bは、再度受け付けた各バッファ12d〜12gに格納しようとする要求パケットの数に基づいて、格納可能バッファが存在するか否かを判別する。
【0040】
また、要求冗長化決定部12bは、要求の種別が冗長化を行わない種別であると判別した場合には、要求パケットを格納可能バッファの数に応じて、1つ又は複数のバッファに格納するために、以下の処理を実行する。すなわち、要求冗長化決定部12bは、格納可能バッファが複数存在するか否かを判別する。そして、要求冗長化決定部12bは、格納可能バッファが1つのみ存在すると判別した場合には、当該格納可能バッファを要求パケットを格納するバッファとして選択する。その後、要求冗長化決定部12bは、選択した複数のバッファを特定する情報と要求パケットを冗長化しない旨とを要求冗長化処理部12cへ通知する。
【0041】
一方、要求冗長化決定部12bは、格納可能バッファが複数存在すると判別した場合には、要求の種別が冗長化を行わない種別であると判別した場合であっても、以下の手順により冗長化を行なう。すなわち、要求冗長化決定部12bは、格納可能バッファが複数存在すると判別した場合には、予め定められた要求パケットを複製する数(以下、「予定冗長数」という)に基づき、当該複数の格納可能バッファを要求パケットを格納するバッファとして選択する。
【0042】
例えば、要求冗長化決定部12bは、予定冗長数が2であり、冗長対象の要求パケットと当該冗長対象の要求パケットを複製した1つの冗長要求パケットを格納する場合には、格納可能バッファが2つ以上存在するか否かを判別する。さらに、要求冗長化決定部12bは、予定冗長数が3であり、冗長対象の要求パケットと当該冗長対象の要求パケットを複製した2つの冗長要求パケットを格納する場合には、格納可能バッファが3つ以上存在するか否かを判別する。そして、要求冗長化決定部12bは、予定冗長数と等しい数の格納可能バッファが存在すると判別した場合には、当該複数の格納可能バッファを全て選択する。
【0043】
さらに、要求冗長化決定部12bは、予定冗長数を超える数の格納可能バッファが存在すると判別した場合には、複製する冗長要求パケットの数に応じて、複数の格納可能バッファから、要求パケットを格納する予定冗長数と等しい数のバッファをラウンドロビン方式等により選択する。その後、要求冗長化決定部12bは、選択した複数のバッファを特定する情報と要求パケットを冗長化を行なう旨とを要求冗長化処理部12cへ通知する。
【0044】
さらに、要求冗長化決定部12bは、格納可能バッファが1つも存在しないと判別した場合には、一定時間待機し、バッファ12d〜12gに現在格納されている他の要求パケットが送出されることにより、格納可能バッファが生じるのを待つ。その後、格納可能バッファが1つ生じた場合、当該格納可能バッファを選択するするとともに、格納可能バッファが複数生じた場合、当該複数の格納可能バッファから、要求パケットを格納するバッファをラウンドロビン方式等により選択する。その後、要求冗長化決定部12bは、選択した1つのバッファと要求パケットを冗長化しない旨とを要求冗長化処理部12cへ通知する。
【0045】
このように、要求冗長化決定部12bは、新たに送信する要求の種別が冗長化を行う種別の要求であると判別した場合には、後述する要求冗長化処理部12cが、選択した複数の格納可能バッファに格納した要求パケットの送信を指示することにより、要求パケットを冗長化させる。また、要求冗長化決定部12bは、新たに送信する要求の種別が冗長化を行わない種別の要求である場合でも、格納可能バッファが複数存在する場合には、後述する要求冗長化処理部12cが、選択した複数の格納可能バッファに格納した要求パケットの送信を指示することにより、要求パケットを冗長化させる。つまり、要求冗長化決定部12bは、伝送路毎に設けられたバッファ12d〜12gに空きが存在する場合には、冗長化を行わない種別の要求を示す要求パケットを冗長化して、要求受信部22に送信させる。このため、要求冗長化決定部12bは、伝送エラーを起因とする要求パケットの再送を低減させることができる。
【0046】
なお、要求冗長化決定部12bは、要求が示す処理の内容が、演算装置20が実行する処理順序の保証が必要な要求を、冗長化を行う種別の要求であると判別する。このような処理順序の保証が必要な要求は、要求の実行によって他の要求の処理結果に影響を与えるため、単純な再実行が不可能な種類の応答である。例えば、要求冗長化決定部12bは、ストア要求や演算装置20に対する割り込み要求などを、冗長化を行う種別の要求であると判別する。
【0047】
要求冗長化処理部12cは、要求冗長化決定部12bが選択した複数のバッファを特定する情報と要求を冗長化する旨とを含む通知を要求冗長化決定部12bから取得した場合には、要求処理部11に要求パケットを送信する旨を指示し、要求パケットを要求処理部11から取得する。そして、要求冗長化処理部12cは、取得した要求パケットを冗長数または予定冗長数に応じて複製し、複製したパケットを要求冗長化決定部12bから取得した通知に含まれる選択したバッファを特定する情報が示すバッファに格納する。
【0048】
一方、要求冗長化処理部12cは、要求冗長化決定部12bが選択した1つのバッファを特定する情報と要求を冗長化しない旨とを含む通知を要求冗長化決定部12bから取得した場合には、要求処理部11に要求パケットを送信する旨を指示し、要求パケットを要求処理部11から取得する。そして、要求冗長化処理部12cは、取得した要求パケットを要求冗長化決定部12bから取得した通知に含まれる選択したバッファを特定する情報が示すバッファに格納する。
【0049】
このように、要求送信部12は、送信する要求パケットが示す要求の種別が冗長化を行わない種別の要求であっても、伝送路毎に設けられたバッファに空きが存在する場合には、複製した要求パケットを他の伝送路に対応する空きバッファに格納して送信することにより、要求パケットの冗長化を行なう。このため、要求送信部12は、伝送路を有効に利用し、送信した要求パケットの伝送エラーの発生又はタイムアウトの発生を原因とするに、要求パケットを再送する回数を低減し、データ伝送におけるレイテンシの悪化を防ぐことができる。
【0050】
図1に戻って、応答受信部13は、応答送信部23から複数の伝送路を介して送信された応答パケットを受信し、伝送エラーが発生した応答パケットを破棄するとともに、伝送エラーが発生せずに重複して受信した重複パケットがある場合には、重複パケットのいずれか1つを要求処理部11へ送信し、残りの重複パケットを破棄する。
【0051】
以下、応答受信部13が有するエラー応答パケット破棄部13aと冗長応答パケット破棄部13bが実行する処理について説明する。エラー応答パケット破棄部13aは、演算装置20からエラーパケットを受信した場合、すなわち、演算装置20から受信した応答パケットにエラーが発生した場合に、エラーパケットを破棄する処理を行なう。
【0052】
例えば、応答パケットは、要求パケットと同様に、CRCのチェック処理の対象である伝送エラーを検出するための情報が格納された「CRC」領域を有する。エラー応答パケット破棄部13aは、応答パケットの「CRC」に格納された情報を用いて、CRCのチェック処理を実行し、応答パケットに伝送エラーが発生したか否かを判別する。そして、エラー応答パケット破棄部13aは、CRCチェック処理の結果に応じて、伝送エラーが発生したと判別した応答パケットを破棄し、伝送エラーが発生していないと判別した応答パケットを冗長応答パケット破棄部13bに送信する。
【0053】
冗長応答パケット破棄部13bは、エラー応答パケット破棄部13aから正常な応答パケットを新たに受信した場合には、重複する応答パケットを既に受信済みであるか否かを判別し、既に重複する応答パケットを受信済みであると判別した場合には、新たに受信した応答パケットを破棄する。すなわち、冗長応答パケット破棄部13bは、エラー応答パケット破棄部13aから複数の応答パケットを受信した場合には、最初に受信した応答パケット以外の応答パケットを破棄する。また、冗長応答パケット破棄部13bは、既に重複する応答パケットを受信していないと判別した場合には、新たに受信した応答パケットから応答データを取得し、取得した応答データを要求処理部11に送信する。なお、要求処理部11は、応答を応答受信部13から受信した際に、セットしたタイマー14をリセットする。
【0054】
ここで、タイマー14は、要求処理部11が要求冗長化処理部12cに要求パケットを送信してから所定の時間が経過するまでの間に、応答受信部13を介して演算装置20から応答パケットを受信しない場合には、タイムアウトを要求送信部12に通知する。すなわち、タイマー14は、要求冗長化処理部12cに要求パケットを送信してから所定の時間が経過するまでの間に、冗長応答パケット破棄部13bからリセットされなかった場合には、タイムアウトを要求送信部12に通知する。
【0055】
次に、演算装置20が有する各部について説明する。応答処理部21は、要求受信部22から要求を受信した場合には、受信した要求を処理して応答を作成する処理を行なう。例えば、応答処理部21は、受信した要求がフェッチ要求やストア要求である場合には、メモリアクセス制御部24を介してメモリ30に対するデータの読み出しや書き込みを実行する。なお、メモリアクセス制御部24とは、メモリ30に格納されたデータに対するアクセスを制御するメモリコントローラである。
【0056】
また、応答処理部21は、要求処理部11と同様に、応答を格納した応答パケットを生成するとともに、応答の種別を応答冗長化決定部23bに送信する。そして、応答処理部21は、応答冗長化処理部23cから応答を送信する旨の通知を受信した場合には、生成した応答パケットを応答冗長化処理部23cに送信する。なお、応答処理部21が生成する応答パケットとしては、要求送信部12が生成する要求パケットと同様に、「SYNC」領域、「ヘッダ」領域、「データ」領域、「CRC」領域を有する応答パケットを生成するものとし、説明を省略する。
【0057】
応答送信部23は、要求送信部12と同様に、入出力処理装置10に送信する応答パケットに格納された応答の種別が冗長化を行う種別の応答であるか否かを判別する。換言するならば、応答送信部23は、応答パケットに格納された応答が、順序の保証が必要な要求を処理した結果の応答であるのか否かを判別する。そして、応答送信部23は、応答の種別が冗長化を行う種別の応答であると判別した場合には、応答パケットを複製することで冗長化し、冗長化した応答パケットをそれぞれ異なる伝送路を介して、入出力処理装置10の応答受信部13へ送信する。
【0058】
また、応答送信部23は、応答の種別が冗長化を行う種別の応答ではないと判別した場合には、送信中の応答パケットの数が所定の閾値よりも少ない伝送路、つまり、伝送帯域に余裕がある伝送路が複数存在するか否かを判別する。そして、応答送信部23は、伝送帯域に余裕がある伝送路が複数存在すると判別した場合には、応答パケットを複製することで冗長化し、冗長化した応答パケットをそれぞれ異なる伝送路を介して、応答受信部13へ送信する。また、応答送信部23は、伝送帯域に余裕がある伝送路が複数存在しないと判別した場合には、応答パケットを冗長化せず、いずれかの伝送路を介して、応答受信部13へ送信する。
【0059】
次に、図4を用いて、応答送信部23が有する各部について説明する、図4は、実施例1に係る応答送信部の一例を説明するための図である。なお、バッファ23d〜23gは、要求送信部12が有するバッファ12d〜12gと同様の機能を発揮し、SerDes23h〜23kは、要求送信部12が有するSerDes12h〜12kと同様の機能を発揮するものとして、以下の説明を省略する。
【0060】
応答資源管理部23aは、要求資源管理部12aと同様に、各バッファ23d〜23gに格納された応答パケットの数を計数し、計数した応答パケットの数を応答冗長化決定部23bに通知する。
【0061】
応答冗長化決定部23bは、応答処理部21から新たに送信する応答の種別の通知を受けつけるとともに応答資源管理部23aから、各バッファ23d〜23gに格納されている応答パケットの数の通知を受け付ける。また、応答冗長化決定部23bは、応答処理部21から応答の種別を受信した場合には、応答の種別が冗長化を行う種別であるか否かを判別する。
【0062】
そして、応答冗長化決定部23bは、応答の種別が冗長化を行う種別であると判別した場合には、冗長対象の応答パケットと当該冗長対象の応答パケットを複製した冗長応答パケットとを、それぞれ異なる伝送路に対応する複数のバッファに格納するために、以下の処理を実行する。
【0063】
すなわち、応答冗長化決定部23bは、応答資源管理部23aから通知された各バッファ23d〜23gに格納されたパケットの数に基づいて、冗長対象の応答パケットと当該冗長対象の応答パケットを複製した冗長応答パケットとを合わせた冗長数、すなわち、各バッファ23d〜23gに格納しようとする応答パケットの数以上の、応答パケットを格納する空き容量がある格納可能バッファが存在するか否かを判別する。
【0064】
例えば、応答冗長化決定部23bは、冗長対象の応答パケットと当該冗長対象の応答パケットを複製した1つの冗長応答パケットを格納する場合(冗長数が2の場合)には、格納可能バッファが2つ以上存在するか否かを判別する。さらに、冗長対象の応答パケットと当該冗長対象の応答パケットを複製した2つの冗長応答パケットを格納する場合(冗長数が3の場合)には、格納可能バッファが3つ以上存在するか否かを判別する。そして、応答冗長化決定部23bは、冗長数と等しい数の格納可能バッファが存在すると判別した場合には、当該複数の格納可能バッファを全て選択する。
【0065】
さらに、応答冗長化決定部23bは、冗長数を超える数の格納可能バッファが存在すると判別した場合には、当該冗長数に応じて、複数の格納可能バッファから、応答パケットを格納する冗長数と等しい数のバッファをラウンドロビン方式等により選択する。その後、応答冗長化決定部23bは、選択した複数のバッファを特定する情報と応答パケットを冗長化する旨とを応答冗長化処理部23cへ通知する。
【0066】
一方、応答冗長化決定部23bは、応答資源管理部23aから通知された冗長対象の応答パケットと当該冗長対象の応答パケットを複製した冗長応答パケットの数に応じた数の格納可能バッファが存在しないと判別した場合には、一定時間待機し、応答資源管理部23aから冗長対象の応答パケットと冗長応答パケットの数、すなわち、各バッファ23d〜23gに格納しようとする応答パケットの数の通知を再度受け付ける。その後、応答冗長化決定部23bは、再度受け付けた各バッファ23d〜23gに格納しようとする応答パケットの数に基づいて、格納可能バッファが存在するか否かを判別する。
【0067】
また、応答冗長化決定部23bは、応答の種別が冗長化を行わない種別であると判別した場合には、応答パケットを格納可能バッファの数に応じて、1つ又は複数のバッファに格納するために、以下の処理を実行する。すなわち、応答冗長化決定部23bは、格納可能バッファが複数存在するか否かを判別する。そして、応答冗長化決定部23bは、格納可能バッファが1つのみ存在すると判別した場合には、当該格納可能バッファを応答パケットを格納するバッファとして選択する。その後、応答冗長化決定部23bは、選択した複数のバッファを特定する情報と応答パケットを冗長化しない旨とを応答冗長化処理部23cへ通知する。
【0068】
一方、応答冗長化決定部23bは、格納可能バッファが複数存在すると判別した場合には、応答の種別が冗長化を行わない種別であると判別した場合であっても、以下の手順により冗長化を行なう。すなわち、応答冗長化決定部23bは、格納可能バッファが複数存在すると判別した場合には、予め定められた応答パケットを複製する予定冗長数に基づき、当該複数の格納可能バッファを応答パケットを格納するバッファとして選択する。
【0069】
例えば、応答冗長化決定部23bは、予定冗長数が2であり、冗長対象の応答パケットと当該冗長対象の応答パケットを複製した1つの冗長応答パケットを格納する場合には、格納可能バッファが2つ以上存在するか否かを判別する。さらに、応答冗長化決定部23bは、予定冗長数が3であり、冗長対象の応答パケットと当該冗長対象の応答パケットを複製した2つの冗長応答パケットを格納する場合には、格納可能バッファが3つ以上存在するか否かを判別する。そして、応答冗長化決定部23bは、予定冗長数と等しい数の格納可能バッファが存在すると判別した場合には、当該複数の格納可能バッファを全て選択する。
【0070】
さらに、応答冗長化決定部23bは、予定冗長数を超える数の格納可能バッファが存在すると判別した場合には、複製する冗長応答パケットの数に応じて、複数の格納可能バッファから、応答パケットを格納する予定冗長数と等しい数のバッファをラウンドロビン方式等により選択する。その後、応答冗長化決定部23bは、選択した複数のバッファを特定する情報と応答パケットを冗長化を行なう旨とを応答冗長化処理部23cへ通知する。
【0071】
さらに、応答冗長化決定部23bは、格納可能バッファが1つも存在しないと判別した場合には、一定時間待機し、バッファ23d〜23gに現在格納されている他の応答パケットが送出されることにより、格納可能バッファが生じるのを待つ。その後、格納可能バッファが1つ生じた場合、当該格納可能バッファを選択するするとともに、格納可能バッファが複数生じた場合、当該複数の格納可能バッファから、応答パケットを格納するバッファをラウンドロビン方式等により選択する。その後、応答冗長化決定部23bは、選択した1つのバッファと応答パケットを冗長化しない旨とを応答冗長化処理部23cへ通知する。
【0072】
このように、応答冗長化決定部23bは、新たに送信する応答の種別が冗長化を行う種別の応答であると判別した場合には、後述する応答冗長化処理部23cが、選択した複数の格納可能バッファに格納した応答パケットの送信を指示することにより、応答パケットを冗長化させる。また、応答冗長化決定部23bは、新たに送信する応答の種別が冗長化を行わない種別の応答である場合でも、格納可能バッファが複数存在する場合には、後述する応答冗長化処理部23cが、選択した複数の格納可能バッファに格納した応答パケットの送信を指示することにより、応答パケットを冗長化させる。
【0073】
つまり、応答冗長化決定部23bは、伝送路毎に設けられたバッファ23d〜23gに空きが存在する場合には、冗長化を行わない種別の応答を示す応答パケットを冗長化して、応答受信部13に送信させる。このため、応答冗長化決定部23bは、伝送エラーを起因とする応答パケットの再送を低減させることができる。なお、応答冗長化決定部23bは、例えば、ストア応答や演算装置20に対する割り込み応答などを、冗長化を行う種別の応答であると判別する。
【0074】
応答冗長化処理部23cは、応答冗長化決定部23bが選択した複数のバッファを特定する情報と応答を冗長化する旨とを含む通知を応答冗長化決定部23bから取得した場合には、応答処理部21に応答パケットを送信する旨を指示し、応答パケットを応答処理部21から取得する。そして、応答冗長化処理部23cは、取得した応答パケットを冗長数または予定冗長数に応じて複製し、複製したパケットを応答冗長化決定部23bから取得した通知に含まれる選択したバッファを特定する情報が示すバッファに格納する。
【0075】
一方、応答冗長化処理部23cは、応答冗長化決定部23bが選択した1つのバッファを特定する情報と応答を冗長化しない旨とを含む通知を応答冗長化決定部23bから取得した場合には、応答処理部21に応答パケットを送信する旨を指示し、応答パケットを応答処理部21から取得する。そして、応答冗長化処理部23cは、取得した応答パケットを応答冗長化決定部23bから取得した通知に含まれる選択したバッファを特定する情報が示すバッファに格納する。
【0076】
なお、パケット転送の冗長化については、冗長化したパケットの送信側は冗長化したパケット同士の最大送出間隔を規定し、その時間内に受信側が複数の冗長化したパケットを受信できることを保証するようにしてもよい。この場合、最大送出間隔時間内に連続して伝送エラーを検出した場合は、致命的なエラーとして扱うことで、冗長化したパケット転送が全てエラーとなって全滅したケースでのシステムの誤動作を抑止することができる。
【0077】
例えば、冗長パケットの最大送出間隔を1ミリ秒とした場合、冗長パケットの最初のパケットの送出時刻から最後のパケットの送出時刻までの時間が最大で1ミリ秒となる。従って、冗長パケットの受信側では、1ミリ秒以内で伝送エラーが連続した場合に、冗長パケットが全てエラーとなったと可能性があると判定し、致命的なエラーとして処理を停止して警告を出す。この処理の停止と警告によって、システムの誤動作、すなわち、実際には要求処理が完了したにも関わらず、冗長化した応答が全滅したことで要求が未完了と見なされて再実行されるという誤動作を回避することができる。
【0078】
例えば、要求処理部11、要求送信部12、要求資源管理部12a、要求冗長化決定部12b、要求冗長化処理部12c、応答受信部13、エラー応答パケット破棄部13a、冗長応答パケット破棄部13b、SerDes12h〜12kとは、電子回路である。また、応答処理部21、要求受信部22、エラー要求パケット破棄部22a、冗長要求パケット破棄部22b、応答送信部23、応答資源管理部23a、応答冗長化決定部23b、応答冗長化処理部23c、SerDes23h〜23kとは、電子回路である。ここで、電子回路の例として、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路を適用できる。
【0079】
また、バッファ12d〜12g、バッファ23d〜23gとは、RAM(Random Access Memory)、フラッシュメモリ(flash memory)などの半導体メモリ素子、またはバッファ等の記憶素子である。
【0080】
[要求送信部12が実行する処理]
次に、図5を用いて、要求送信部12が実行する処理の流れの一例を説明する。図5は、実施例1に係る要求送信部が要求パケットを送信する処理の一例を説明するためのフローチャートである。図5に示す例では、要求送信部12は、要求の送信要求を受信したか否かを処理のトリガとする(ステップS101)。すなわち、要求送信部12は、要求の送信要求を受信していない場合には(ステップS101否定)、一時的に待機し、再度、要求の送信要求を受信したか否かを判別する(ステップS101)。次に、要求送信部12は、要求の送信要求を受信した場合には(ステップS101肯定)、新たに送信する要求の種別を判別する(ステップS102)。
【0081】
そして、要求送信部12は、判別した要求の種別が冗長化を行う種別の要求であるか否かを判別する(ステップS103)。要求送信部12は、判別した要求の種別が冗長化を行わない種別の要求であると判別した場合には(ステップS103否定)、冗長化を行わない種別の要求パケット送信処理を実行し(ステップS104)、要求パケットをバッファに格納する(ステップS110)。一方、要求送信部12は、判別した要求の種別が冗長化を行う種別の要求であると判別した場合には(ステップS103肯定)、送信資源が空いているか判断する(ステップS105)。つまり、要求送信部12は、要求パケットを格納することができるバッファが存在するか否かを判別する。
【0082】
そして、要求送信部12は、空いている送信資源が存在しないと判別した場合には(ステップS106否定)、一定時間待機し(ステップS107)、再度、送信資源が空いているか否かを判断する(ステップS105)。一方、要求送信部12は、空いている送信資源が存在すると判別した場合は(ステップS105肯定)、冗長化した要求パケットを格納するバッファを選択するとともに、要求パケットを要求処理部11から取得し(ステップS108)、取得した要求パケットを冗長化する(ステップS109)。次に、要求送信部12は、冗長化した要求パケットを選択したバッファに格納する(ステップS110)。その後、要求送信部12は、各バッファ12d〜12gに格納された要求パケットを要求受信部22へ送信し(ステップS111)、処理を終了する。
【0083】
次に、図6を用いて、冗長化を行わない種別の要求パケット送信処理について説明する。図6は、実施例1に係る要求送信部による冗長化を行わない要求パケット送信処理の一例を説明するための図である。なお、図6に示す各処理は、図5中ステップS104と対応する処理である。
【0084】
まず、要求送信部12は、各バッファ12d〜12gに格納されている要求パケットの数を取得する(ステップS201)。そして、要求送信部12は、格納されている要求パケットの数が所定の閾値以下であるバッファが複数存在するか否かを判別する(ステップS202)。その後、要求送信部12は、格納されている要求パケットの数が所定の閾値以下であるバッファが複数存在すると判別した場合には(ステップS202肯定)、冗長化可能であると判別するとともに、冗長化した要求パケットを格納するバッファを選択する(ステップS203)。
【0085】
このような場合には、要求送信部12は、要求パケットを要求処理部11から受信し(ステップS204)、受信したパケットを冗長化する(ステップS205)。その後、要求送信部12は、冗長化を行わない種別の要求パケット送信処理を終了し、冗長化した要求パケットを選択したバッファ、すなわち、それぞれ異なるバッファに格納する(図5中ステップS110)。
【0086】
一方、要求送信部12は、各バッファ12d〜12gに格納されている要求パケットの数が所定の閾値以下であるバッファが複数存在しないと判別した場合には(ステップS202否定)、要求パケットの冗長化をしないと判別する(ステップS206)。このような場合には、要求送信部12は、各バッファ12〜12gに要求パケット1つ分の空き容量があるか否かを判断する(ステップS207)。そして、要求送信部12は、いずれかのバッファに要求パケット1つ分の空き容量があるか否かを判別し(ステップS208)、いずれのバッファにも空き容量がないと判別した場合には(ステップS208否定)、一定時間待機する(ステップS209)。その後、要求送信部12は、再度、各バッファ12d〜12gに要求パケット1つ分の空き容量があるか判断する(ステップS207)。
【0087】
また、要求送信部12は、いずれかのバッファに要求パケット1つ分の空き容量があると判別した場合には(ステップS208肯定)、要求パケットを格納するバッファを選択するとともに、要求処理部11から要求パケットを受信する(ステップS210)。その後、要求送信部12は、冗長化を行わない種別の要求パケット送信処理を終了し、受信した要求パケットを冗長化せず、選択したバッファに格納する(図5中ステップS110)。
【0088】
なお、応答送信部23は、図5および図6に示した要求送信部12と同様の処理を実行することで、応答パケットを冗長化するものとし、詳細な説明を省略する。
【0089】
[実施例1の効果]
上述したように、実施例1に係るコンピュータシステム1は、複数の伝送路で接続した入出力処理装置10と演算装置20を有する。また、入出力処理装置10は、各伝送路を介して送信する要求パケットを一時的に記憶する複数のバッファ12d〜12gを有し、各バッファ12d〜12gに格納されている要求パケットの数を計数する。また、入出力処理装置10は、演算装置20へ送信する要求の種別が冗長化を行う種別であるか否かを判別する。
【0090】
そして、入出力処理装置10は、送信する要求の種別が冗長化を行わない種別であると判別し、かつ、格納された要求パケットの数が所定の閾値よりも少ないバッファが複数存在する場合には、要求を格納した要求パケットを複製することで冗長化する。その後、入出力処理装置10は、複製した要求パケットをそれぞれ異なるバッファに格納することで、それぞれ異なる伝送経路を介して、演算装置20へ送信する。
【0091】
このため、入出力処理装置10は、伝送路に空きがある際に、要求パケットを冗長化せずに送信し、伝送エラーによって破棄された際に発生する要求パケットの再送処理が発生する回数を削減する。この結果、コンピュータシステム1は、伝送路を有効に利用し、データ伝送におけるレイテンシの悪化を防ぐことができる。
【0092】
また、入出力処理装置10は、演算装置20が事項する処理の順序の保証が必要な要求を冗長化を行う種別の要求であると判別する。このため、コンピュータシステム1は、再度の要求を送信することができない処理を演算装置20に要求する際に、冗長化を行うことで、伝送エラーにより要求が実行されないことによる致命的なエラーを防止することができる。
【0093】
また、入出力処理装置10は、演算装置20に送信した要求に対する応答を所定の時間内に受信しなかった場合には、演算装置20に送信した要求と同じ要求を示す要求パケットを再度演算装置20に送信する。このため、コンピュータシステム1は、演算装置20によって実行される処理を伝送エラーによる要求パケットの全滅から救済する事ができる。
【0094】
また、演算装置20は、伝送エラーが発生した要求パケットと、重複して受信した要求パケットとを破棄し、破棄しなかった要求パケットに格納された要求が示す処理を実行し、応答を入出力処理装置10へ送信する。このため、コンピュータシステム1は、演算装置20に、適切な処理を実行させることができる。つまり、コンピュータシステム1は、要求を冗長化したことを起因とした重複する処理や伝送エラーが発生したことを起因とする誤った処理を演算装置20が実行することを防ぐことができる。
【0095】
また、演算装置20は、入出力処理装置10と同様に、送信する応答の種別が冗長化を行わない種別であると判別し、かつ、各バッファ23d〜23gに、格納された応答パケットの数が所定の閾値よりも少ないバッファが複数存在する場合には、以下の処理を行う。つまり、演算装置20は、応答を格納する応答パケットを複製することで冗長化し、複製した応答パケットをそれぞれ異なる伝送路を介して、入出力処理装置10へ送信する。このため、コンピュータシステム1は、応答パケットを送信する伝送路についても、有効な利用を実現し、データ伝送におけるレイテンシの悪化を防ぐことができる。
【実施例2】
【0096】
これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例2として本発明に含まれる他の実施例を説明する。
【0097】
(1)冗長化を行う処理について
上述した要求送信部12は、送信する要求が冗長化を行わない種別の要求であって、かつ、各バッファ12d〜12gに冗長化したパケットを格納するだけの空きが存在する場合には、要求を格納した要求パケットを複製することで冗長化した。しかし、実施例はこれに限定されるものではなく、要求送信部12は、任意の方法を用いて、空いている伝送路が複数存在するか否かを判別し、空いている伝送路が存在する場合には、要求パケットを複製することで冗長化を行ってよい。例えば、要求送信部12は、各バッファ12d〜12gのうち、記憶している要求パケットの数が所定の閾値よりも少ないバッファを検出し、検出したバッファの数が冗長化数よりも多い場合には、送信する要求を冗長化すると判別してもよい。
【0098】
また、要求送信部12は、各バッファ12d〜12gに格納された要求パケットの数だけではなく、今後送信する要求の有無に基づいて、要求パケットの冗長化の可否を判断することとしてもよい。
【0099】
例えば、要求処理部11は、入出力デバイス制御部15を介して取得した要求を一時的に記憶するバッファを有し、バッファに格納された要求の送信要求を要求送信部12へ送信する。このような場合に、要求処理部11は、送信要求を要求送信部12へ送信した要求以外の要求がバッファに格納されているか否かを判別する。つまり、要求処理部11は、後続の要求が存在するか否かを判別する。
【0100】
そして、要求処理部11は、後続の要求が存在すると判別した場合には、要求送信部12に要求の送信要求を送信するとともに、後続の要求が存在するか否かを示す情報を送信する。このような場合には、要求送信部12は、新たに送信する要求の後続として演算装置20に送信する要求が存在すると判別する。そして、要求送信部12は、新たに送信する要求の後続として演算装置20に送信する要求が存在すると判別した場合には、格納された要求パケットの数が所定の数よりも少ないバッファが各バッファ12d〜12gに存在する場合にも、要求パケットを複製しない。つまり、要求送信部12は、新たに送信する要求が冗長化を行なわない種別の要求であって、後続の要求が存在する場合には、伝送路に空きがある場合にも、冗長化を行わずに、演算装置20へ送信する。
【0101】
一方、要求処理部11は、後続の要求が存在しないと判別した場合には、要求送信部12に要求の送信要求のみを送信する。このような場合には、要求送信部12は、実施例1と同様の処理を実行する。すなわち、要求送信部12は、送信する要求の種別が冗長化を行わない種別であって、格納された要求パケットの数が所定の数よりも少ないバッファが各バッファ12d〜12gに存在する場合には、要求が格納された要求パケットを複製することで冗長化を行う。
【0102】
このように要求送信部12は、冗長化を行わない種別の要求が格納されたパケットを冗長化することにより、後続の要求についてのレイテンシが増大することを防ぐことができる。この結果、コンピュータシステム1は、より適切に伝送路を利用し、データ伝送のレイテンシの悪化を防ぐことができる。
【0103】
(2)入出力処理装置と演算装置とについて
上述したコンピュータシステム1は、入出力処理装置10と演算装置20を複数の伝送路で接続し、シリアル伝送方式を用いて、要求パケットと応答パケットとを送受信させていた。しかし、実施例はこれに限定されるものではない。すなわち、本願は、複数の伝送路で接続された任意の装置間において適用することができる。
【0104】
(3)パケットを格納するバッファの選択について
上述した要求冗長化決定部12bは、各バッファ12d〜12gのうち、要求パケットを格納することができるバッファから要求パケットを格納するバッファをラウンドロビン方式で選択した。しかし、実施例はこれに限定されるものではなく、要求冗長化決定部12bは、要求パケットを格納することができるバッファのうち、格納された要求パケットの数が一番少ないバッファを選択することとしてもよい。また、要求冗長化決定部12bは、格納された要求パケットの数が一番少ないバッファから、要求パケットを複製する数と同数のバッファを選択することとしてもよい。
【0105】
また、応答冗長化決定部23bも同様に、応答パケットを格納することができるバッファのうち、格納された応答パケットの数が一番少ないバッファを選択することとしてもよい。また、応答冗長化決定部23bは、格納された応答パケットの数が一番少ないバッファから、応答パケットを複製する数と同数のバッファを選択することとしてもよい。
【0106】
(4)冗長化を行う処理について
上述した要求冗長化決定部12bは、ストア要求や、割り込み要求のように、演算装置20による実行順序の保証が必要な処理について、冗長化を行う処理であると判別した。しかし、実施例は、これに限定されるものではない。すなわち、本願は、複数の伝送路で接続された任意の装置間において適用することができるため、適用された装置間において冗長化して送受信される任意の要求を適用することができる。
【符号の説明】
【0107】
1 コンピュータシステム
2 入出力デバイス
10 入出力処理装置
11 要求処理部
12 要求送信部
12a 要求資源管理部
12b 要求冗長化決定部
12c 要求冗長化処理部
12d〜12g、23d〜23g バッファ
12h〜12k、23h〜23k SerDes
13 応答受信部
13a エラー応答パケット破棄部
13b 冗長応答パケット破棄部
14 タイマー
15 入出力デバイス制御部
20 演算装置
21 応答処理部
22 要求受信部
22a エラー要求パケット破棄部
22b 冗長要求パケット破棄部
23 応答送信部
23a 応答資源管理部
23b 応答冗長化決定部
23c 応答冗長化処理部
24 メモリアクセス制御部
30 メモリ

【特許請求の範囲】
【請求項1】
第1の装置と、前記第1の装置に複数の伝送路を介して接続される第2の装置とを有する伝送システムであって、
前記第1の装置は、
前記複数の伝送路毎にそれぞれ設けられ、前記第2の装置に送信する要求を記憶する複数の要求記憶部と、
前記第2の装置に送信する要求の種別が、冗長化を行う種別の要求であるか否かを判別する要求判別部と、
前記複数の要求記憶部の各々に記憶された要求の数を計数し、計数した要求の数が所定の閾値以下である要求記憶部の数を判別する要求資源判別部と、
前記要求判別部が前記送信する要求の種別が冗長化を行う種別の要求であると判別した場合、または、前記要求判別部が前記送信する要求の種別が冗長化を行わない種別の要求であると判別し、かつ、前記要求資源判別部が前記計数した要求の数が所定の閾値以下である要求記憶部が複数存在すると判別した場合には、前記要求を複製した複数の要求を、前記複数の要求記憶部のうちそれぞれ異なる複数の要求記憶部にそれぞれ格納し、前記要求判別部が前記送信する要求の種別が冗長化を行わない種別の要求であると判別し、かつ、前記要求資源判別部が前記計数した要求の数が所定の閾値以下である要求記憶部が複数存在していないと判別した場合には、いずれか1つの前記要求記憶部に格納する要求格納部と、
前記複数の伝送路のうちそれぞれ異なる伝送路を介して、前記複数の要求記憶部の各々に記憶される要求を前記第2の装置へ送信する複数の要求送信部と、
を有することを特徴とする伝送システム。
【請求項2】
前記要求判別部が、前記第2の装置が実行する処理の順序の保証が必要な要求を、前記冗長化を行う種別の要求であると判別することを特徴とする請求項1に記載の伝送システム。
【請求項3】
前記第1の装置はさらに、
前記第2の装置に送信した要求に対する応答を受信する応答受信部と、
要求を送信してから前記送信した要求に対する応答を前記応答受信部が受信するまでの時間を計時する計時部を有し、
前記要求格納部は、前記計時部によって前記計時された要求を送信してから前記送信した要求に対する応答を前記応答受信部が受信するまでの時間が所定の時間を超えた場合には、該送信した要求を再度送信することを特徴とする請求項1または2に記載の伝送システム。
【請求項4】
前記第2の装置は、前記第1の装置が各伝送路を介して送信した要求を受信し、受信した要求のうち、伝送エラーが発生した要求と重複して送信された要求とを破棄する要求受信部と、
前記要求受信部が破棄しなかった要求に対する応答を前記第1の装置へ送信する応答処理部と
を有することを特徴とする請求項1〜3のいずれか1項に記載の伝送システム。
【請求項5】
前記応答処理部は、
前記複数の伝送路毎にそれぞれ設けられ、前記第1の装置に送信する応答を記憶する複数の応答記憶部と、
前記複数の伝送路のうちそれぞれ異なる伝送路を介して、前記複数の応答記憶部の各々に記憶される応答を前記第1の装置へ送信する複数の応答送信部と、
前記第1の装置に送信する応答の種別が、冗長化を行う種別の応答であるか否かを判別する応答判別部と、
前記複数の応答記憶部の各々に記憶された応答の数を計数し、計数した応答の数が所定の閾値以下である応答記憶部の数を判別する応答資源判別部(23a、23b)と、
前記応答判別部が前記送信する応答の種別が冗長化を行う種別の応答であると判別した場合、または、前記応答判別部が前記送信する応答の種別が冗長化を行わない種別の応答であると判別し、かつ、前記応答資源判別部が前記計数した応答の数が所定の閾値以下である応答記憶部が複数存在すると判別した場合には、前記応答を複製した複数の応答を、前記複数の要求記憶部のうち異なる複数の応答記憶部に格納し、前記応答判別部が前記送信する応答の種別が冗長化を行わない種別の応答であると判別し、かつ、前記応答資源判別部が前記計数した応答の数が所定の閾値以下である応答記憶部が複数存在していないと判別した場合には、いずれか1つの前記応答記憶部に格納する応答格納部と
を有することを特徴とする請求項4に記載の伝送システム。
【請求項6】
前記第1の装置は、前記送信する要求の後続として前記第2の装置へ送信する要求が存在するか否かを判別する後続要求判別部をさらに有し、
前記要求格納部は、前記要求判別部が前記送信する要求の種別が冗長化を行う種別の要求であると判別した場合、または、前記要求判別部が前記送信する要求の種別が冗長化を行わない種別の要求であると判別し、かつ、前記要求資源判別部が前記計数した要求の数が所定の閾値以下である要求記憶部が複数存在すると判別し、かつ、前記後続要求判別部が、後続の要求が無いと判別した場合には、前記要求を複製した複数の要求を、前記複数の要求記憶部のうちそれぞれ異なる前記要求記憶部に格納し、前記要求判別部が前記送信する要求の種別が冗長化を行わない種別の要求であると判別し、かつ、前記後続要求判別部が、前記後続の要求があると判別した場合には、いずれか1つの前記要求記憶部に格納し、
前記複数の送信部は、前記要求記憶部に格納された要求をそれぞれ送信することを特徴とする請求項1〜5のいずれか1項に記載の伝送システム。
【請求項7】
前記第1の装置は、コンピュータシステムの入出力を担う入出力処理装置であり、前記第2の装置は前記コンピュータシステムの演算処理を担う演算処理装置であることを特徴とする請求項1〜6のいずれか1項に記載の伝送システム。
【請求項8】
複数の伝送路毎にそれぞれ設けられ、複数の伝送路を介して自身と接続された対向装置に送信する要求を記憶する複数の要求記憶部と、
前記対向装置に送信する要求の種別が、冗長化を行う種別の要求であるか否かを判別する要求判別部と、
前記複数の要求記憶部の各々に記憶された要求の数を計数し、計数した要求の数が所定の閾値以下である要求記憶部の数を判別する要求資源判別部と、
前記要求判別部が前記送信する要求の種別が冗長化を行う種別の要求であると判別した場合、または、前記要求判別部が前記送信する要求の種別が冗長化を行わない種別の要求であると判別し、かつ、前記要求資源判別部が前記計数した要求の数が所定の閾値以下である要求記憶部が複数存在すると判別した場合には、前記要求を複製した複数の要求を、前記複数の要求記憶部のうちそれぞれ異なる複数の要求記憶部にそれぞれ格納し、前記要求判別部が前記送信する要求の種別が冗長化を行わない種別の要求であると判別し、かつ、前記要求資源判別部が前記計数した要求の数が所定の閾値以下である要求記憶部が複数存在していないと判別した場合には、いずれか1つの前記要求記憶部に格納する要求格納部と、
前記複数の伝送路のうちそれぞれ異なる伝送路を介して、前記複数の要求記憶部の各々に記憶される要求を前記対向装置へ送信する複数の要求送信部と、
を有することを特徴とする伝送装置。
【請求項9】
複数の伝送路毎にそれぞれ設けられ、複数の伝送路を介して自身と接続された対向装置に送信する要求を記憶する複数の記憶手段を有する伝送装置に、
前記対向装置に送信する要求の種別が、冗長化を行う種別の要求であるか否かを判別し、
前記複数の記憶手段の各々に記憶された要求の数を計数し、計数した要求の数が所定の閾値以下である記憶手段の数を判別し、
前記送信する要求の種別が冗長化を行う種別の要求であると判別した場合、または、前記送信する要求の種別が冗長化を行わない種別の要求であると判別し、かつ、前記計数した要求の数が所定の閾値以下である記憶手段が複数存在すると判別した場合には、前記要求を複製した複数の要求を、前記複数の記憶手段のうちそれぞれ異なる複数の記憶手段にそれぞれ格納し、
前記送信する要求の種別が冗長化を行わない種別の要求であると判別し、かつ、前記計数した要求の数が所定の閾値以下である記憶手段が複数存在していないと判別した場合には、いずれか1つの前記記憶手段に格納し、
前記複数の伝送路のうちそれぞれ異なる伝送路を介して、前記複数の記憶手段の各々に記憶される要求を前記対向装置へ送信し、
処理を実行させることを特徴とする伝送装置の制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2013−9045(P2013−9045A)
【公開日】平成25年1月10日(2013.1.10)
【国際特許分類】
【出願番号】特願2011−138780(P2011−138780)
【出願日】平成23年6月22日(2011.6.22)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】