(57)【要約】【課題】データ転送時のエラーの発生を低減することにより、プロセッサの処理性能を維持することが可能なデータ転送装置を提供する。【解決手段】データ転送装置は、プロセッサからのデータ転送命令を受信する命令受信部と、データ転送命令に基づいて、共有バスを介して、誤り検出符号が付加された転送対象データを第１のデバイスから第２のデバイスに転送する転送制御部と、転送対象データに付加された誤り検出符号に基づいて、第２のデバイスに転送された転送対象データにエラーが発生していると判定された場合に、エラー通知を受信する通知受信部とを備える。エラー通知の数が１以上かつ基準数未満である場合、転送制御部は、データ転送装置と第１のデバイスとを接続する第１の専用バス、およびデータ転送装置と第２のデバイスとを接続する第２の専用バスを介して、転送対象データを再転送する。【選択図】図３
2018112966.tif 000002
【特許請求の範囲】
【請求項１】
共有バスを介して、プロセッサ、第１のデバイス、および第２のデバイスに接続されるデータ転送装置であって、
前記プロセッサからのデータ転送命令を受信する命令受信部と、
前記データ転送命令に基づいて、前記共有バスを介して、誤り検出符号が付加された転送対象データを前記第１のデバイスから前記第２のデバイスに転送する転送制御部と、
前記転送対象データに付加された前記誤り検出符号に基づいて、前記第２のデバイスに転送された前記転送対象データにエラーが発生していると判定された場合に、エラー通知を受信する通知受信部とを備え、
前記通知受信部により受信されたエラー通知の数が１以上かつ基準数未満である場合、前記転送制御部は、前記データ転送装置と前記第１のデバイスとを接続する第１の専用バス、および前記データ転送装置と前記第２のデバイスとを接続する第２の専用バスを介して、前記誤り検出符号が付加された転送対象データを再転送する、データ転送装置。
【請求項２】
前記転送制御部は、前記第１のデバイスから受信した前記転送対象データに付加された前記誤り検出符号に基づいて、前記転送対象データにエラーが発生していると判定した場合、エラー通知を前記通知受信部に送信する、請求項１に記載のデータ転送装置。
【請求項３】
前記転送制御部は、エラーが発生している前記転送対象データを破棄する、請求項２に記載のデータ転送装置。
【請求項４】
前記第１の専用バスは、前記第１のデバイスから前記データ転送装置へ転送対象データを単方向に送信するためのバスであり、前記第２の専用バスは、前記データ転送装置から前記第２のデバイスへ当該転送対象データを単方向に送信するためのバスである、または、
前記第１の専用バスは、前記データ転送装置から前記第１のデバイスへ転送対象データを単方向に送信するためのバスであり、前記第２の専用バスは、前記第２のデバイスから前記データ転送装置へ当該転送対象データを単方向に送信するためのバスである、請求項１〜請求項３のいずれか１項に記載のデータ転送装置。
【請求項５】
前記通知受信部により受信されたエラー通知の数が前記基準数以上である場合、前記転送対象データの転送が正常に完了しなかった旨を前記プロセッサに割り込み通知する割り込み通知部をさらに備える、請求項１〜請求項４のいずれか１項に記載のデータ転送装置。
【請求項６】
プロセッサと、第１のデバイスと、第２のデバイスと、データ転送装置とを備えるデータ転送システムであって、
前記プロセッサ、前記第１のデバイス、前記第２のデバイスおよび前記データ転送装置は、共有バスを介して互いに接続されており、
前記データ転送装置および前記第１のデバイスは、第１の専用バスを介して互いに接続されており、
前記データ転送装置および前記第２のデバイスは、第２の専用バスを介して互いに接続されており、
前記データ転送装置は、
前記プロセッサからのデータ転送命令を受信する命令受信部と、
前記データ転送命令に基づいて、前記共有バスを介して、誤り検出符号が付加された転送対象データを前記第１のデバイスから前記第２のデバイスに転送する転送制御部と、
前記転送対象データに付加された前記誤り検出符号に基づいて、前記第２のデバイスに転送された前記転送対象データにエラーが発生していると判定された場合に、エラー通知を受信する通知受信部とを含み、
前記通知受信部により受信されたエラー通知の数が１以上かつ基準数未満である場合、前記転送制御部は、前記第１の専用バスおよび前記第２の専用バスを介して、前記誤り検出符号が付加された転送対象データを再転送する、データ転送システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データ転送装置、およびデータ転送システムに関する。
【背景技術】
【０００２】
従来、コンピュータシステム内でのデータ転送方式の１つとして、ＣＰＵ（Central Processing Unit）を介さずに各装置（例えば、入出力装置）と記憶装置（例えば、ＲＡＭ(Random Access Memory））との間で直接データ転送を行うＤＭＡ（Direct Memory Access）転送が利用されている。このようなＤＭＡ転送においては、ノイズなどにより発生し得る転送データのエラー検出を行なう技術が知られている。
【０００３】
例えば、国際公開第２０１２／０１４４００号（特許文献１）は、データ転送制御装置を開示している。データ転送制御装置は、エラーが検出されたデータ転送において用いたＤＭＡパラメータを復帰させ、当該復帰させたＤＭＡパラメータを用いたデータ転送が正常に完了するまで、後続のデータ転送の完了通知を待機させる。また、データ転送制御装置は、エラー発生の状況に応じてエラー割込要求をＣＰＵに通知する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２０１２／０１４４００号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に係るデータ転送制御装置は、例えば、エラー検出処理において検出したエラーの数が予め設定された上限値に到達した場合、エラー割込要求をＣＰＵに通知する。この場合、特許文献１に係るデータ転送制御装置は、上限値に到達するまではデータ転送を繰り返し行なうことになるが、同様のシステム環境下における再転送であるため、エラーが再発しやすいという問題がある。
【０００６】
本開示は、上記のような課題に鑑みてなされたものであって、ある局面における目的は、データ転送時のエラーの発生を低減することにより、プロセッサの処理性能を維持することが可能なデータ転送装置を提供することである。
【課題を解決するための手段】
【０００７】
ある実施の形態に従うと、共有バスを介して、プロセッサ、第１のデバイス、および第２のデバイスに接続されるデータ転送装置が提供される。データ転送装置は、プロセッサからのデータ転送命令を受信する命令受信部と、データ転送命令に基づいて、共有バスを介して、誤り検出符号が付加された転送対象データを第１のデバイスから第２のデバイスに転送する転送制御部と、転送対象データに付加された誤り検出符号に基づいて、第２のデバイスに転送された転送対象データにエラーが発生していると判定された場合に、エラー通知を受信する通知受信部とを備える。通知受信部により受信されたエラー通知の数が１以上かつ基準数未満である場合、転送制御部は、データ転送装置と第１のデバイスとを接続する第１の専用バス、およびデータ転送装置と第２のデバイスとを接続する第２の専用バスを介して、誤り検出符号が付加された転送対象データを再転送する。
【０００８】
他の実施の形態に従うデータ転送システムは、プロセッサと、第１のデバイスと、第２のデバイスと、データ転送装置とを備える。プロセッサ、第１のデバイス、第２のデバイスおよびデータ転送装置は、共有バスを介して互いに接続されている。データ転送装置および第１のデバイスは、第１の専用バスを介して互いに接続されている。データ転送装置および第２のデバイスは、第２の専用バスを介して互いに接続されている。データ転送装置は、プロセッサからのデータ転送命令を受信する命令受信部と、データ転送命令に基づいて、共有バスを介して、誤り検出符号が付加された転送対象データを第１のデバイスから第２のデバイスに転送する転送制御部と、転送対象データに付加された誤り検出符号に基づいて、第２のデバイスに転送された転送対象データにエラーが発生していると判定された場合に、エラー通知を受信する通知受信部とを含む。通知受信部により受信されたエラー通知の数が１以上かつ基準数未満である場合、転送制御部は、第１の専用バスおよび第２の専用バスを介して、誤り検出符号が付加された転送対象データを再転送する。
【発明の効果】
【０００９】
本開示によると、データ転送時のエラーの発生を低減することにより、プロセッサの処理性能を維持することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】データ転送システムの構成例を示す図である。
【図２】データ転送システムの動作概要を説明するための図である。
【図３】データ転送装置の機能構成を示す模式図である。
【図４】データ転送装置の処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、図面を参照しつつ、本発明の実施の形態について説明する。なお、同一または相当する部分に同一の参照符号を付し、その説明を繰返さない場合がある。また、以下に説明する実施の形態において、個数、量などに言及する場合、特に記載がある場合を除き、本発明の範囲は必ずしもその個数、量などに限定されない。また、以下の実施の形態において、各々の構成要素は、特に記載がある場合を除き、本発明にとって必ずしも必須のものではない。
【００１２】
＜システム構成＞
図１は、データ転送システムの構成例を示す図である。図１を参照して、データ転送システム１０００は、ＣＰＵ１０と、データ転送装置２０と、メインメモリ３０と、入出力インターフェイス４０と、判定回路５１，５２と、共有バス６０と、専用バス７１，７２と、二次記憶装置８０とを含む。
【００１３】
ＣＰＵ１０、データ転送装置２０、メインメモリ３０、入出力インターフェイス４０および二次記憶装置８０は、共有バス６０によってそれぞれ接続されている。より具体的には、メインメモリ３０は、判定回路５２を介して共有バス６０に接続され、入出力インターフェイス４０は、判定回路５１を介して共有バス６０に接続される。
【００１４】
データ転送装置２０および入出力インターフェイス４０は、専用バス７１および判定回路５１を介して接続されている。専用バス７１は、双方向通信可能なバスとして構成される。具体的には、専用バス７１は、データ転送装置２０が、入出力インターフェイス４０に転送対象となるデータ（以下、「転送対象データ」とも称する。）を送信する、または入出力インターフェイス４０から転送対象データを受信するための専用のバスである。
【００１５】
データ転送装置２０およびメインメモリ３０は、専用バス７２および判定回路５２を介して接続されている。専用バス７２は、双方向通信可能なバスとして構成される。具体的には、専用バス７２は、データ転送装置２０が、メインメモリ３０に転送対象データを送信する、またはメインメモリ３０から転送対象データを受信するための専用のバスである。
【００１６】
ＣＰＵ１０は、データ転送システム１０００の全体を制御する。具体的には、ＣＰＵ１０は、二次記憶装置８０に格納されているプログラムを読み出して、メインメモリ３０に展開して各種処理を実行する。なお、ＣＰＵ１０は、プログラムを二次記憶装置８０からメインメモリ３０に展開することなく、当該プログラムを二次記憶装置８０から直接実行してもよい。
【００１７】
メインメモリ３０には、ＣＰＵ１０によって実行されるプログラムのコードの他、プログラムの実行に必要な各種のワークデータが記憶される。典型的には、メインメモリ３０は、ＳＲＡＭ（Static Random Access Memory）、ＤＲＡＭ（Dynamic Random Access Memory）などの揮発性記憶媒体である。二次記憶装置８０は、不揮発性記憶媒体であり、各種プログラムの他、各種設定値などを記憶する。例えば、二次記憶装置８０は、ＲＯＭ（Read Only Memory）、フラッシュメモリ等である。
【００１８】
入出力インターフェイス４０は、外部デバイスとの間のデータ送受信に使用される。例えば、外部デバイスは、ディスプレイなどの出力装置、ハードディスクドライブなどの外部記憶装置、モデムやターミナルアダプタなどの通信装置、プリンタ等である。入出力インターフェイス４０は、これらに限られず、メインメモリ３０以外の周辺デバイスであればよい。
【００１９】
ＣＰＵ１０は、データ転送装置２０に対してデータ転送命令を発行する。データ転送命令には、転送対象データの転送元アドレス、転送先アドレス、転送データサイズ等の転送パラメータが含まれる。転送先アドレス、および転送元アドレスには、メインメモリ３０、入出力インターフェイス４０、および二次記憶装置８０等のデバイスのうちのいずれかのアドレスが指定される。
【００２０】
データ転送装置２０は、ＣＰＵ１０から発行されたデータ転送命令に従って、転送対象データの転送処理を行ない、当該転送処理が終了すると、ＣＰＵ１０に対して転送終了を示すレスポンスを返す。データ転送装置２０は、いわゆるＤＭＡコントローラである。
【００２１】
判定回路５１は、データ転送装置２０からメインメモリ３０に対して転送されてきた転送対象データのエラー判定を行なう。具体的には、判定回路５１は、転送対象データに付加されている誤り検出符号を用いて当該エラー判定を行なう。誤り検出符号は、例えば、巡回冗長検査（ＣＲＣ：Cyclic Redundancy Check）である。
【００２２】
判定回路５１は、エラーが発生しているとの判定結果に基づいて、データ転送装置２０にエラー通知を行なう。この場合、判定回路５１は、メインメモリ３０に転送対象データを送信することなく、当該転送対象データを破棄する。一方、判定回路５１は、エラーが発生していないと判定した場合には、メインメモリ３０に転送対象データを送信する。なお、判定回路５１は、転送対象データにエラーが発生していないことを示す正常通知をデータ転送装置２０に送信してもよい。
【００２３】
判定回路５２は、データ転送装置２０から入出力インターフェイス４０に対して転送されてきた転送対象データのエラー判定を行なう。具体的には、判定回路５２は、転送対象データに付加されている誤り検出符号を用いて当該エラー判定を行なう。
【００２４】
判定回路５２は、エラーが発生しているとの判定結果に基づいて、データ転送装置２０にエラー通知を行なう。この場合、判定回路５２は、入出力インターフェイス４０に転送対象データを送信することなく、当該転送対象データを破棄する。一方、判定回路５２は、エラーが発生していないと判定した場合には、入出力インターフェイス４０に転送対象データを送信する。判定回路５２は、転送対象データにエラーが発生していないことを示す正常通知をデータ転送装置２０に送信してもよい。
【００２５】
詳細は後述するが、データ転送装置２０は、基準数以上のエラー通知を受信したと判断した場合には、転送失敗を示す割り込み通知をＣＰＵ１０に送信する。データ転送装置２０は、転送対象データにエラーが発生していない旨の正常通知を、判定回路５１または判定回路５２から受信した場合に、転送完了を示す割り込み通知を実行してもよい。
【００２６】
＜システムの動作概要＞
図２は、データ転送システム１０００の動作概要を説明するための図である。図２を参照して、ＣＰＵ１０は、データ転送命令をデータ転送装置２０に発行する（送信）する（シーケンスＳＱ１０）。ここでは、データ転送命令に含まれる転送元アドレスは、入出力インターフェイス４０のアドレスを指定しているとする。データ転送命令に含まれる転送先アドレスは、メインメモリ３０のアドレスを指定しているとする。
【００２７】
データ転送装置２０は、ＣＰＵ１０から受信したデータ転送命令に基づいて、入出力インターフェイス４０に対して、転送対象データの送信指示を与える（シーケンスＳＱ１２）。具体的には、データ転送装置２０は、共有バス６０を介して転送対象データを送信するように、入出力インターフェイス４０に指示を与える。なお、データ転送装置２０は、当該データ転送命令を内部キャッシュに格納する。
【００２８】
データ転送装置２０は、共有バス６０を介して、誤り検出符号が付加された転送対象データを、入出力インターフェイス４０から受信する（すなわち、転送対象データを読み出す）（シーケンスＳＱ１４）。なお、転送対象データへの誤り検出符号の付加は、入出力インターフェイス４０により行われる。続いて、データ転送装置２０は、転送対象データに付加された誤り検出符号に基づいて、転送対象データのエラー判定処理を実行する（シーケンスＳＱ１６）。ここでは、データ転送装置２０は、転送対象データにはエラーが発生していないと判定したものとする。
【００２９】
データ転送装置２０は、共有バス６０を介して、誤り検出符号が付加された転送対象データを判定回路５２に送信する（シーケンスＳＱ１８）。判定回路５２は、誤り検出符号に基づいて、転送対象データにエラーが発生しているか否かを判定する（シーケンスＳＱ２０）。ここでは、判定回路５２は、転送対象データにエラーが発生していると判定したものとする。続いて、判定回路５２は、当該転送対象データにエラーが発生していることを示すエラー通知をデータ転送装置２０に送信する（シーケンスＳＱ２２）。この場合、判定回路５２は、転送対象データをメインメモリ３０に送信することなく破棄する。
【００３０】
データ転送装置２０は、判定回路５２からエラー通知を受信した場合、エラーカウント数をインクリメントして、エラーカウント数が基準数以上であるか否かを判定する（シーケンスＳＱ２４）。ここでは、データ転送装置２０は、エラーカウント数が基準数未満であると判定したものとする。この場合、データ転送装置２０は、内部キャッシュに格納されているデータ転送命令に基づいて、入出力インターフェイス４０に対して、転送対象データの再送信指示を与える（シーケンスＳＱ２６）。再送信指示は、転送対象データの送信指示と、当該データ転送命令に従う転送対象データの転送が再試行されることを示すリトライ通知とを含む。より具体的には、データ転送装置２０は、専用バス７１を介して転送対象データを送信するように、入出力インターフェイス４０に指示を与える。
【００３１】
データ転送装置２０は、専用バス７１を介して、誤り検出符号が付加された転送対象データを、入出力インターフェイス４０から受信する（すなわち、転送対象データを読み出す）（シーケンスＳＱ２８）。続いて、データ転送装置２０は、転送対象データに付加された誤り検出符号に基づいて、転送対象データにエラーが発生しているか否かを判定する（シーケンスＳＱ３０）。ここでは、データ転送装置２０は、転送対象データにエラーが発生していないと判定したものとする。
【００３２】
データ転送装置２０は、専用バス７２を介して、誤り検出符号が付加された転送対象データを判定回路５２に送信する（シーケンスＳＱ３２）。判定回路５２は、誤り検出符号に基づいて、転送対象データにエラーが発生しているか否かを判定する（シーケンスＳＱ３４）。ここでは、判定回路５１は、転送対象データにエラーが発生していないと判定したものとする。この場合、判定回路５１は、転送対象データをメインメモリ３０に送信する（シーケンスＳＱ３６）。これにより、入出力インターフェイス４０からメインメモリ３０へのデータ転送が完了する。
【００３３】
＜機能構成＞
図３は、データ転送装置２０の機能構成を示す模式図である。図３を参照して、データ転送装置２０は、命令受信部２０２と、通知受信部２０４と、転送制御部２０６と、割り込み通知部２０８とを含む。
【００３４】
命令受信部２０２は、プロセッサ（例えば、ＣＰＵ１０）からのデータ転送命令を受信する。命令受信部２０２は、当該データ転送命令を内部キャッシュに格納する。命令受信部２０２は、当該データ転送命令を転送制御部２０６に出力する。
【００３５】
通知受信部２０４は、判定回路５１、判定回路５２および転送制御部２０６から送信されるエラー通知を受信する。通知受信部２０４は、エラー通知を受信するごとに、エラーカウントをインクリメントすることにより、エラー通知の受信回数を測定する。通知受信部２０４は、エラー通知の受信回数を転送制御部２０６および割り込み通知部２０８に出力する。
【００３６】
転送制御部２０６は、命令受信部２０２により受信されたデータ転送命令に基づいて、誤り検出符号が付加された転送対象データを転送元デバイス（例えば、入出力インターフェイス４０）から転送先デバイス（例えば、メインメモリ３０）に転送する。なお、誤り検出符号は、転送元デバイスにより転送対象データに付加される。
【００３７】
転送制御部２０６は、データ転送命令に従うデータ転送を初めて実行する場合（すなわち、エラー通知の受信回数が０である場合）には、共有バス６０を介して、誤り検出符号が付加された転送対象データを転送元デバイスから転送先デバイスに転送する。
【００３８】
例えば、転送元デバイスが入出力インターフェイス４０であり、転送先デバイスがメインメモリ３０であるとする。この場合、転送制御部２０６は、入出力インターフェイス４０に対して、転送対象データの送信指示を発行する。入出力インターフェイス４０は、送信指示に従って、誤り検出符号を付加した転送対象データを、判定回路５１および共有バス６０を介して、転送制御部２０６に送信する。なお、転送元デバイスが入出力インターフェイス４０である場合、判定回路５１は転送対象データのエラー判定を行なわない。
【００３９】
続いて、転送制御部２０６は、入出力インターフェイス４０から受信した（読み出した）誤り検出符号が付加された転送対象データを、共有バス６０を介して、判定回路５２に送信する。判定回路５２は、誤り検出符号に基づいて、当該転送対象データにエラーが発生しているか否かを判定する。判定回路５２は、エラーが発生していないと判定した場合には、当該転送対象データをメインメモリ３０に送信する。これにより、入出力インターフェイス４０からメインメモリ３０への転送対象データの転送が完了する。
【００４０】
一方、判定回路５２は、エラーが発生していると判定した場合には、エラー通知を通知受信部２０４に送信して、当該転送対象データを破棄する。続いて、通知受信部２０４は、エラー通知の受信回数をインクリメントし、エラー通知の受信回数を転送制御部２０６に出力する。転送制御部２０６は、通知受信部２０４により受信されたエラー通知の数が１以上かつ基準数未満であるか否かを判断する。基準数は、１よりも大きい自然数（例えば、３）である。
【００４１】
転送制御部２０６は、当該エラー通知の数が１以上かつ基準数未満である場合、専用バス７１および専用バス７２を介して、誤り検出符号が付加された転送対象データを再転送する。より詳細には、転送制御部２０６は、入出力インターフェイス４０に対して、転送対象データの再送信指示を発行する。入出力インターフェイス４０は、再送信指示に従って、誤り検出符号を付加した転送対象データを、判定回路５１および専用バス７１を介して、転送制御部２０６に送信する。
【００４２】
続いて、転送制御部２０６は、入出力インターフェイス４０から受信した（読み出した）誤り検出符号が付加された転送対象データを、専用バス７２を介して、判定回路５２に送信する。そして、判定回路５２は、エラーが発生していないと判定した場合には、当該転送対象データをメインメモリ３０に送信する。これにより、入出力インターフェイス４０からメインメモリ３０への転送対象データの転送が完了する。一方、判定回路５２は、エラーが発生していると判定した場合には、エラー通知を通知受信部２０４に送信して、当該転送対象データを破棄する。転送制御部２０６は、通知受信部２０４により受信されたエラー通知の数が基準数に到達するまで上述の再転送処理を繰り返す。典型的には、転送制御部２０６は、エラー通知の数が基準数に到達したと判断した場合には、再転送処理を中止する。
【００４３】
割り込み通知部２０８は、通知受信部２０４により受信されたエラー通知の数が基準数以上である場合、転送対象データの転送が正常に完了しなかった旨（すなわち、転送失敗）をＣＰＵ１０に割り込み通知する。これにより、ＣＰＵ１０は、転送対象データの転送が失敗したことを認識する。
【００４４】
上記において、転送制御部２０６は、転送対象データのエラー判定を実行してもよい。具体的には、転送制御部２０６は、転送元デバイスから受信した（読み出した）転送対象データに付加された誤り検出符号に基づいて、当該転送対象データにエラーが発生しているか否かを判定する。転送制御部２０６は、当該エラーが発生していると判定した場合、エラー通知を通知受信部２０４に送信する。また、転送制御部２０６は、エラーが発生している当該転送対象データを破棄する。この場合、通知受信部２０４は、判定回路５１からのエラー通知の受信回数と、判定回路５２からのエラー通知の受信回数と、転送制御部２０６からのエラー通知の受信回数と、これらの合計回数とを測定する。
【００４５】
例えば、転送元デバイスが入出力インターフェイス４０であり、転送先デバイスがメインメモリ３０である場合、通知受信部２０４は、メインメモリ３０に対して転送されてきた転送対象データのエラー判定を行なう判定回路５２、または転送制御部２０６からエラー通知を受信する。通知受信部２０４は、転送制御部２０６からエラー通知を受信した場合、転送制御部２０６が入出力インターフェイス４０から転送対象データを受信する（読み出す）ときにエラーが発生したと判断できる。通知受信部２０４は、判定回路５２からエラー通知を受信した場合、転送制御部２０６がメインメモリ３０に転送データを送信する（書き込む）ときにエラーが発生したと判断できる。
【００４６】
一方、転送元デバイスがメインメモリ３０であり、転送先デバイスが入出力インターフェイス４０である場合、通知受信部２０４は、判定回路５１または転送制御部２０６からエラー通知を受信する。通知受信部２０４は、転送制御部２０６からエラー通知を受信した場合、転送制御部２０６がメインメモリ３０から転送対象データを受信するときにエラーが発生したと判断できる。通知受信部２０４は、判定回路５１からエラー通知を受信した場合、転送制御部２０６が入出力インターフェイス４０に転送データを送信するときにエラーが発生したと判断できる。
【００４７】
＜処理手順＞
図４は、データ転送装置２０の処理手順を示すフローチャートである。図４を参照して、データ転送装置２０は、ＣＰＵ１０からデータ転送命令を受信したか否かを判断する（ステップＳ１００）。当該データ転送命令を受信していない場合には（ステップＳ１００においてＮＯ）、データ転送装置２０はステップＳ１００の処理を繰り返す。当該データ転送命令を受信した場合には（ステップＳ１００においてＹＥＳ）、データ転送装置２０は、当該データ転送命令に従って、共有バス６０を介して、誤り検出符号が付加された転送対象データを転送元デバイスから読み出す（ステップＳ１０２）。
【００４８】
データ転送装置２０は、当該転送対象データに付加された誤り検出符号に基づいて、当該転送対象データにエラーが発生しているか否かを判定する（ステップＳ１０４）。当該エラーが発生している場合には（ステップＳ１０４においてＹＥＳ）、データ転送装置２０は、後述するステップＳ１１２の処理を実行する。当該エラーが発生していない場合には（ステップＳ１０４においてＮＯ）、データ転送装置２０は、共有バス６０を介して、誤り検出符号が付加された転送対象データを転送先デバイスに送信する（ステップＳ１０６）。
【００４９】
続いて、データ転送装置２０は、転送先デバイスに関連付けられた判定回路からエラー通知を受信したか否かを判断する（ステップＳ１０８）。なお、当該判定回路は、転送先デバイスがメインメモリ３０である場合には判定回路５２であり、転送先デバイスが入出力インターフェイス４０である場合には判定回路５１である。当該エラー通知を受信した場合には（ステップＳ１０８においてＹＥＳ）、データ転送装置２０は、後述するステップＳ１１４の処理を実行する。当該エラー通知を受信していない場合には（ステップＳ１０８においてＹＥＳ）、データ転送装置２０は、データ転送が正常に完了したと判断して、ＣＰＵ１０にデータ転送の正常完了を割り込み通知して（ステップＳ１１０）、処理を終了する。
【００５０】
次に、ステップＳ１１２以降の処理について説明する。転送対象データにエラーが発生している場合には（ステップＳ１０４においてＹＥＳ）、データ転送装置２０は、転送対象データを破棄して（ステップＳ１１２）、エラーカウント数ｎをインクリメント（ｎ＝ｎ＋１）する（ステップＳ１１４）。データ転送装置２０は、エラーカウント数が基準数以上であるか否かを判断する（ステップＳ１１６）。
【００５１】
エラーカウント数が基準数以上である場合には（ステップＳ１１６においてＹＥＳ）、データ転送装置２０は、データ転送が正常に完了しなかった旨を割り込み通知して（ステップＳ１１８）、処理を終了する。このとき、エラーカウント数は、０に（リセット）される。エラーカウント数が基準数未満（すなわち、エラーカウント数が１以上かつ基準数未満）である場合には（ステップＳ１１６においてＮＯ）、データ転送装置２０は、自装置と転送元デバイスとの専用バスを介して、誤り検出符号が付加された転送対象データを転送元デバイスから読み出す（ステップＳ１２０）。
【００５２】
続いて、データ転送装置２０は、当該転送対象データに付加された誤り検出符号に基づいて、当該転送対象データにエラーが発生しているか否かを判定する（ステップＳ１２２）。当該エラーが発生している場合には（ステップＳ１２２においてＹＥＳ）、データ転送装置２０は、転送対象データを破棄して（ステップＳ１２４）、ステップＳ１１４の処理に戻る。当該エラーが発生していない場合には（ステップＳ１２２においてＮＯ）、データ転送装置２０は、自装置と転送先デバイスとの専用バスを介して、誤り検出符号が付加された転送対象データを転送先デバイスに送信する（ステップＳ１２６）。続いて、データ転送装置２０は、転送先デバイスに関連付けられた判定回路からエラー通知を受信したか否かを判断する（ステップＳ１２８）。
【００５３】
当該エラー通知を受信した場合には（ステップＳ１２８においてＹＥＳ）、データ転送装置２０は、ステップＳ１１４の処理に戻る。当該エラー通知を受信していない場合には（ステップＳ１２８においてＮＯ）、データ転送装置２０は、ＣＰＵ１０にデータ転送が正常に完了した旨を割り込み通知して（ステップＳ１１０）、処理を終了する。このとき、エラーカウント数は、０に（リセット）される。
【００５４】
＜利点＞
本実施の形態によると、共有バスを利用して、データ転送中にエラーが発生した場合には、別の転送経路である専用バスを利用してデータ転送が行われる。エラーが発生した場合のシステム環境とは異なるシステム環境で再転送されるため、エラーが再発しにくい。そのため、何度もデータ転送が繰り返されるのを防止できるため、データ転送完了までに要する時間を低減できる。また、転送対象データにエラーが発生した場合には、ＣＰＵへの割り込み通知を行なうのではなく、データ転送装置が独自に再転送処理を開始する。したがって、ＣＰＵの処理性能を維持することができる。
【００５５】
［その他の実施の形態］
上述した実施の形態では、図４を参照して、データ転送装置２０は、専用バスを介して、転送元デバイスから転送先デバイスにデータ転送するときに、転送対象データにエラーが発生し（例えば、ステップＳ１２２においてＹＥＳ、ステップＳ１２８においてＹＥＳ）、エラーカウント数が基準数未満である場合（ステップＳ１１６においてＮＯ）には、再度、専用バスを介して、データ転送を続けるように構成されている。
【００５６】
当該構成に限られず、データ転送装置２０は、専用バスを介したデータ転送中に、転送対象データにエラーが発生した場合（例えば、ステップＳ１２２においてＹＥＳ、ステップＳ１２８においてＹＥＳ）、共有バス６０を介して、転送元デバイスから転送先デバイスにデータ転送するように構成されていてもよいし、ＣＰＵ１０に転送失敗を割り込み通知するように構成されていてもよい。
【００５７】
上述した実施の形態において、データ転送装置２０が、ＣＰＵ１０からのデータ転送命令に従って転送対象データを再転送する場合、当該転送対象データの転送が完了する前に、ＣＰＵ１０から当該データ転送命令とは異なる別のデータ転送命令を受信する可能性がある。データ転送装置２０は、別のデータ転送命令を受信した場合には、当該別のデータ転送命令を内部キャッシュに格納する。内部キャッシュは、一定のデータ転送命令を格納可能に構成される。なお、データ転送装置２０は、最初のデータ転送命令に従うデータ転送が完了した後に、別のデータ転送命令に従うデータ転送を実行する。
【００５８】
上述した実施の形態では、専用バス７１，７２が、双方向通信可能なバスである構成について説明したが、当該構成に限られず、専用バス７１，７２は、単方向通信方式を採用したバスであってもよい。例えば、転送元デバイスが入出力インターフェイス４０であり、転送先デバイスがメインメモリ３０である場合には、専用バス７１は、入出力インターフェイス４０からデータ転送装置２０へ転送対象データを単方向に送信するためのバスとして設定され、専用バス７２は、データ転送装置２０からメインメモリ３０へ当該転送対象データを単方向に送信するためのバスとして設定される。
【００５９】
一方、転送元デバイスがメインメモリ３０であり、転送先デバイスが入出力インターフェイス４０である場合には、専用バス７１は、データ転送装置２０から入出力インターフェイス４０へ転送対象データを単方向に送信するためのバスとして設定され、専用バス７２は、メインメモリ３０からデータ転送装置２０へ当該転送対象データを単方向に送信するためのバスとして設定される。これにより、複雑な処理を必要としない低負荷のデータ転送が可能となる。
【００６０】
上述の実施の形態として例示した構成は、本発明の構成の一例であり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、一部を省略する等、変更して構成することも可能である。
【００６１】
また、上述した実施の形態において、その他の実施の形態で説明した処理や構成を適宜採用して実施する場合であってもよい。
【００６２】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００６３】
１０  ＣＰＵ、２０  データ転送装置、３０  メインメモリ、４０  入出力インターフェイス、５１，５２  判定回路、６０  共有バス、７１，７２  専用バス、８０  二次記憶装置、２０２  命令受信部、２０４  通知受信部、２０６  転送制御部、２０８  割り込み通知部、１０００  データ転送システム。 
【図１】
2018112966.tif 000003
【図２】
2018112966.tif 000004
【図３】
2018112966.tif 000005
【図４】
2018112966.tif 000006