(57)【特許請求の範囲】
【請求項１】
システムバスを介して、データ転送を制御するマスタデバイスと、
前記マスタデバイスからアクセス要求を受けて処理を行うターゲットデバイスとが接続される制御システムにおいて、
前記ターゲットデバイスは、
データ転送中にエラーが発生した場合にその原因を示すエラー識別コードを前記マスタデバイスへ出力するコード出力手段を有し、
前記マスタデバイスは、
エラー発生時に、エラー識別コードに基づいてマスタデバイスが実行すべきエラー回復処理の内容を予め設定する設定手段と、
前記設定手段で設定された前記エラー回復処理を実行する回復手段とを有し、
前記ターゲットデバイスが出力するエラー識別コードは、エラーの発生原因毎にコードを出力する信号線が割り当てられており、
データ転送中にターゲットデバイスでエラーが発生すると、エラーが発生したターゲットデバイスの優先度を最下位に変更し、以降のデータ転送において、変更された優先度に基づいて、各マスタデバイスから各ターゲットデバイスへのコマンド発行の優先度を変更することを特徴とする制御システム。
【請求項２】
前記エラー回復処理は、データ転送の続行を含むことを特徴とする請求項１記載の制御システム。
【請求項３】
前記設定手段は、データ転送方式がアイソクロナス転送のときは、エラーの発生原因がタイムアウトかまたは、データ自身に誤りがある場合は、前記エラー回復処理としてリトライを行わないように設定することを特徴とする請求項１記載の制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムバスを介して、データ転送を制御するマスタデバイスと、マスタデバイスからアクセス要求を受けて処理を行うターゲットデバイスとが接続される制御システムに関する。
【背景技術】
【０００２】
一般的に、システムバスを介してマスタデバイスとターゲットデバイスとが接続された制御システムにおいては、あるターゲットデバイスから別のターゲットデバイスへデータを転送する場合、マスタデバイスがそのデータ転送の制御を行う。
【０００３】
マスタデバイスは、まずデータ転送元のターゲットデバイスに対してリードコマンドを発行する。リードコマンドを受け取った転送元ターゲットデバイスは、指定されたアドレスのリードデータを用意してマスタデバイスへと返す。マスタデバイスは、そのデータを転送先のターゲットデバイスへライトコマンドを発行してライトする。これによりターゲットデバイス間でのデータ転送を行うことができる。
【０００４】
ここで、転送元のターゲットデバイスに接続されている外部デバイスがリードコマンドを受け取ってから、規定の応答時間内にリードデータが用意できない場合、マスタデバイスは、リードデータが用意できるまで待つか、または転送元のターゲットデバイスがタイムアウトエラーを出力してくるのを待つ必要がある。
【０００５】
マスタデバイスがタイムアウトエラーを検出した場合、マスタデバイスはホストに対して割り込みを出力し、ホストは割り込み要因となるエラーの原因を確認して、そのエラーに対する回復処理を行わなければならない。
【０００６】
このようにデータ転送中にエラーが発生すると、ホストはそのエラー処理に時間を割かれることになり、システム全体としてはスループットが下がる要因となる。
【０００７】
特許文献１記載のバスインターフェイスは、転送データの送受信処理にエラーが生じた場合には、伝送エラー対策として、それらの処理の再試行（リトライ）を行う。
【０００８】
タイムアウトエラーが発生した場合は、バスマスタは設定された回数までリトライをする方法、転送データにＣＲＣエラーが発生した場合は、バスエラー割り込みＢＥＲＲをアサートし、設定された回数までリトライを行う方法など、バスマスタ自身がエラー回復処理を行うような方法が開示されている。
【０００９】
【特許文献１】特開２００３−１９６２２８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、特許文献１記載のバスインターフェイスではバスマスタは、エラーに対してリトライを行う回数を設定できるが、エラーの内容に応じたエラー回復処理はできていない。
【００１１】
本発明の目的は、スループットを向上させるとともに、柔軟なエラー回復処理を行うことができる制御システムを提供することである。
【課題を解決するための手段】
【００１２】
本発明は、システムバスを介して、データ転送を制御するマスタデバイスと、
前記マスタデバイスからアクセス要求を受けて処理を行うターゲットデバイスとが接続される制御システムにおいて、
前記ターゲットデバイスは、
データ転送中にエラーが発生した場合にその原因を示すエラー識別コードを前記マスタデバイスへ出力するコード出力手段を有し、
前記マスタデバイスは、
エラー発生時に、エラー識別コードに基づいてマスタデバイスが実行すべきエラー回復処理の内容を予め設定する設定手段と、
前記設定手段で設定された前記エラー回復処理を実行する回復手段とを有し、
前記ターゲットデバイスが出力するエラー識別コードは、エラーの発生原因毎にコードを出力する信号線が割り当てられており、
データ転送中にターゲットデバイスでエラーが発生すると、エラーが発生したターゲットデバイスの優先度を最下位に変更し、以降のデータ転送において、変更された優先度に基づいて、各マスタデバイスから各ターゲットデバイスへのコマンド発行の優先度を変更することを特徴とする制御システムである。
【００１３】
また本発明は、前記エラー回復処理は、データ転送の続行を含むことを特徴とする。
【００１４】
また本発明は、前記設定手段は、データ転送方式がアイソクロナス転送のときは、エラーの発生原因がタイムアウトかまたは、データ自身に誤りがある場合は、前記エラー回復処理としてリトライを行わないように設定することを特徴とする。
【発明の効果】
【００１７】
本発明によれば、ターゲットデバイスにおけるエラー発生時に、エラー発生原因ごとに予め設定されたエラー回復処理をマスタデバイスが実行することで、ホストに対してエラー割り込み通知することなく回復処理が行われるため、制御システム全体のスループットを向上させることができる。
また、エラーの発生原因毎にコードを出力する信号線が割り当てられているので、複数のエラーが同時に発生してもマスタデバイスに対し通知することができ、エラーの発生原因に応じて取りこぼすことなく、エラー回復処理を行うことができる。また、信頼性が高くないターゲットデバイスの優先順位を下げることで、信頼性の高いターゲットデバイスの帯域が向上し、システム全体のスループットを向上させることができる。
【００１８】
また本発明によれば、前記エラー回復処理は、データ転送の続行を含むのでアプリケーションに応じて柔軟なシステムを構築できる。
【００１９】
また本発明によれば、データの信頼性よりリアルタイム性が要求されるアイソクロナス転送方式を採用する場合は、タイムアウトエラーやデータ自身に誤りがある場合に、リトライを行わないようにすることでデータ転送を継続させることができる。
【００２２】
また、エラー発生時にホストへエラー通知するかどうかを任意に設定することで、アプリケーションに応じて、ホストへ通知させる場合と、マスタデバイスが自動回復処理させる場合とを自由に選択することができる。
【００２３】
また、エラーの発生によってマスタデバイスの転送順位の優先度をさげることもでき、システムの最適化を行なうことも可能となる。
【発明を実施するための最良の形態】
【００２４】
図１は、本発明の実施の一形態である制御システム１の構成を示す概略図である。
制御システム１は、ＣＰＵ２、マスタデバイス３、ターゲットデバイス４およびシステムバス５を含み、ターゲットデバイス４は、外部デバイス６と接続されている。
【００２５】
一般に制御システム１は、複数のターゲットデバイス４を含み、それぞれのターゲットデバイスは、個別に外部デバイス６と接続して外部デバイス６とのデータ送受信を制御する。
【００２６】
本実施形態では、３個のターゲットデバイス４（第１ターゲットデバイス４ａ、第２ターゲットデバイス４ｂ、第３ターゲットデバイス４ｃ）を含み、各ターゲットデバイス４ａ，４ｂ，４ｃは、それぞれ第１外部デバイス６ａ、第２外部デバイス６ｂ、第３外部デバイス６ｃと接続してデータ送受信を制御する。
【００２７】
ここで外部デバイス６は、たとえば半導体メモリ、ハードディスクドライブなどの外部記憶装置、ＵＳＢインターフェイスやＬＡＮインターフェイスなどの通信デバイス、または液晶ディスプレイなどの表示装置などで、接続されるモジュールによってそれぞれのバス仕様で接続される。
【００２８】
マスタデバイス３は、システムバス５を介してのデータ転送の制御を司り、ホストであるＣＰＵ２または外部ホストからの命令を受けてターゲットデバイス４間でデータ転送を行わせる。一般的には、ＤＭＡ（Direct Memory Access）転送という。ターゲットデバイス４は、マスタデバイス３からのアクセス要求をうけて外部デバイス６との各種データの送受信処理を行う。
【００２９】
データ転送の一例を挙げて説明する。たとえば第１ターゲットデバイス４ａから第２ターゲットデバイス４ｂへデータ転送を行う場合、まずマスタデバイス３は、第１ターゲットデバイス４ａに対してリードコマンドを発行する。第１ターゲットデバイス４ａは、第１外部デバイス６ａに対して、指定されたアドレスのリードコマンドを発行する。第１外部デバイス６ａは、指定されたアドレスのデータをデータバス上にのせる。第１ターゲットデバイス４ａは、第１外部デバイス６ａからリードデータを取り込んだらマスタデバイス３に対して出力する。
【００３０】
次にマスタデバイス３は、第２ターゲットデバイス４ｂに対してライトコマンドを発行し、第１ターゲットデバイス４ａから出力されたリードデータをライトデータとして出力する。第２ターゲットデバイス４ｂは、ライトデータを第２外部デバイス４ｂに出力するとともにライトコマンドを発行する。この一連の処理を予め設定されたデータサイズ分、転送するまで繰り返す。
【００３１】
設定されたデータサイズ分のデータ転送が終了したら、マスタデバイス３は、ＣＰＵ２に対し割り込み信号を出力し、データ転送処理が終了したことを通知する。データ転送において、正常に転送が行われていれば問題はないが、何らかの理由によってターゲットデバイス４の応答が遅れたり、データ自身に誤りが含まれてしまう場合がある。
【００３２】
たとえばターゲットデバイス４から一定時間内に応答がないタイムアウトエラーが発生すると、マスタデバイス３は、ＣＰＵ２に対して割り込みを出力してエラーが発生したことを通知するか、もしくは再度リードコマンドを発行するか、いずれかの処理を行う必要がある。
【００３３】
また、データ転送方式がアイソクロナス転送方式のように一定の帯域のデータ転送帯域を保証しなければならない方式である場合、ターゲットデバイス４のタイムアウトエラーや、データ自身に誤りが含まれていることを示すパリティエラーが発生しても、データ転送を続行する必要があり、そのためにマスタデバイス３は、発生したエラーを無視するような制御を行う必要がある。
【００３４】
また、マスタデバイス３が複数存在し、競合動作している場合は、各マスタデバイス３の優先度は、図示しないアービタ回路によって調整される。通常は、各マスタデバイス３を均等にするか、またはアプリケーションによって優先度を変更するが、データ転送中にエラーが発生したターゲットデバイス４の優先度を下げることにより、エラーによるシステム障害の影響をなくすようにすることができる。
【００３５】
図２は、ターゲットデバイス４の構成を示すブロック図である。
コマンド受信部４０は、マスタデバイス３からのコマンドを受信、解析して制御部４１に伝達する。制御部４１は、外部デバイス６とのバスインターフェイスのプロトコルに合わせてコマンドを発行する。タイムアウトエラー検出部４２、パリティエラー検出部４３、アドレスエラー検出部４４は、それぞれ、データ転送中にエラーが発生したかどうかを検出する。
【００３６】
本実施形態では、タイムアウトエラー、パリティエラー、アドレスエラーの３つのエラーの発生を検出することができる。各エラー検出部によりエラーが検出されると、エラー識別コード生成部４５に通知され、ここで予め設定されたコードに変換されマスタデバイス３に対して、エラーの発生原因を示すエラー識別コードが送出される。
【００３７】
図３は、マスタデバイス３の構成を示すブロック図である。
コマンド発行部３０は、アクセスしたいターゲットデバイス４のアドレスを出力し、リードまたはライトコマンドを発行する。データバッファ３１は、ライトデータまたはリードデータを一時的に格納する。ターゲットデバイス４からのエラー識別コードは、エラー識別コード解析部３２で解析され、エラーの発生原因をエラー処理制御部３３へ通知する。
【００３８】
エラー処理設定部３４は、エラーが発生した時にマスタデバイス３がどのようなエラー回復処理を行うのかを予めＣＰＵ２が設定する。エラー処理制御部３３では、マスタデバイス３でエラーが発生し、エラー識別コードを受信すると、エラー処理設定部３４に設定された、エラー識別コードに対応付けられたエラー回復処理に基づいて、制御部３５へ指示する。
【００３９】
図４は、制御システム１のタイミングチャートである。
前提条件として、エラー回復処理の内容は、エラー処理設定部３４によって、パリティエラーに対してはデータ転送を続行し、タイムアウトエラーに対してはリトライを行うように設定されていることとする。
【００４０】
タイムチャートにおいて、mから始まる信号はマスタデバイス３がドライブする信号で、sから始まる信号はターゲットデバイス４がドライブする信号である。
【００４１】
まずマスタデバイス３は、サイクルＴ１において、madrにアドレス、mcmdにリードコマンドを出力してリードを実行する。
【００４２】
ターゲットデバイス４は、リードデータが用意できたら、サイクルＴ４〜Ｔ７において、sdataにリードデータ、srespにデータ識別子を出力する。データ識別子には、ＶおよびＥがあり、ＶはValidで確定データであることを示し、ＥはErrorでデータに何らかのエラーが発生したことを示す。
【００４３】
図４に示したチャートではサイクルＴ７で識別子Ｅが出力されており、エラーが発生したことを示している。さらに、エラー発生原因はserrid(Error ID)で出力される。エラー識別コードは、たとえば図５に示すようなコード対応テーブルで設定されている。エラーの発生原因毎にserridのビット数を割り当てる構成としている。したがって、エラー発生原因の種類が４種類であればserridは４ビットを用意すればよい。
【００４４】
０bit目が１であればパリティエラーが発生していることを示す。同様に１bit目が１であればタイムアウトエラー、２bit目が１であればＣＲＣエラー、３bit目が１であれば例外アドレスエラーが発生していることを示す。
【００４５】
このようにエラー発生原因ごとに１つのビットを割り当てることで、複数のエラーが同時に発生しても、マスタデバイス３はエラー発生原因を取りこぼすことが無いので、エラーの回復処理を確実に行うことが可能となる。
【００４６】
ここでエラー発生原因について説明する。
パリティエラーは、データの誤りをチェックするパリティチェックのエラーのことで、パリティチェックはデータを適当な長さ(８bit程度)に区切り、その中に含まれる０の数または１の数を演算してその結果をパリティビットとしてデータとともに付加する。受信側でデータからパリティ演算をした結果と、パリティビットとを比較して一致していなければどこかのビットが化けて、エラーが発生したことが分かる。
【００４７】
タイムアウトエラーは、リードコマンドに対する応答が規定時間内になかったことで発生するエラーで、ターゲットデバイス４に接続される外部デバイス６の応答速度の遅延等により発生する。
【００４８】
ＣＲＣエラーはＣＲＣ(Cyclic Redundancy Check（巡回冗長検査）)のエラーで、パリティエラー同様、データの誤りによって発生する。ＣＲＣ生成多項式と呼ばれる、シフトや加算などを組み合わせた方式で計算を行なう。
【００４９】
パリティチェックでは、０の数または１の数に基づいているので、２つ以上のデータが同時に化けた場合、それらが相殺されて正常とみなされてしまうことがあるが、ＣＲＣではその確率を低く抑えることができる。
【００５０】
例外アドレスエラーは、ターゲットデバイスに割り当てられているアドレス領域外にアクセスした場合に発生するエラーで、リードデータが無効であることを示す。
【００５１】
たとえばパリティエラーが発生したとすると、パリティエラーに対する回復処理は、予めデータ転送を続行するように設定されているので、サイクルＴ８〜Ｔ１２において、マスタデバイス３は受信したデータをそのまま別のターゲットデバイス４にライトコマンドを発行して転送する。
【００５２】
さらに、サイクルＴ１４から２回目のデータ転送が行われるが、サイクルＴ３０になっても応答できなかったためターゲットデバイス４はエラー識別コードとしてＥ２（タイムアウトエラー)をserridに出力する。タイムアウトエラーが発生した場合は、その回復処理としてリトライを行うように設定されているので、マスタデバイス３は、サイクルＴ３４でリードコマンドのリトライを行っている。
【００５３】
図６は、制御システム１のデータ転送処理を示すフローチャートである。
まずステップＳ１では、デバイスの初期設定を行う。ＣＰＵ２が動作させたいマスタデバイス３およびターゲットデバイス４の初期パラメータを設定する。
【００５４】
次に、ステップＳ２ではマスタデバイス３を起動させる。ＣＰＵ２は、マスタデバイス３を動作状態することで、データ転送を開始する。
【００５５】
ステップＳ３では、データ転送中にエラーが発生したかどうかを、マスタデバイス３が判断し、エラーが発生していればステップＳ４で、エラー発生原因を特定して、予め設定されたエラー回復処理を実行する。エラーが発生していなければステップＳ５で、設定されたサイズ分のデータ転送が終了したかどうかをマスタデバイス３が判断する。データ転送が終了していれば処理を終了し、終了していなければステップＳ３に戻る。
【００５６】
本発明の他の実施形態では、エラーが発生したターゲットデバイスへのアクセスの優先度を下げることで、システムの最適化を行なうことが可能となる。
【００５７】
本実施形態の制御システムの構成は、図１に示した制御システム１と異なりマスタデバイス３個（以下ではマスタデバイス３ａ、３ｂ、３ｃとする）と、ターゲットデバイス３個とを含んで構成され、ターゲットデバイスのうち１つがタイムアウトエラーとなった場合を例に説明する。
【００５８】
データ転送は、マスタデバイス３ａがターゲットデバイス４ａにアクセスし、同様にマスタデバイス３ｂがターゲットデバイス４ｂに、マスタデバイス３ｃがターゲットデバイス４ｃにアクセスするものする。また、アクセスの優先順位はターゲットデバイス４ａ＞ターゲットデバイス４ｂ＞ターゲットデバイス４ｃのように、ターゲット４ａが最も優先順位が高く設定されている。
【００５９】
図７は、アクセスの優先度を調整しない場合のタイミングチャートである。
タイミングチャートでは、マスタデバイス３ａ、３ｂ、３ｃおよびシステムバス上の動作状態を示している。例えば“TgtA RD”は、ターゲットデバイス４ａへのリードコマンドを示す。
【００６０】
時刻ｔ１で３つのマスタデバイス３ａ、３ｂ、３ｃが同時にターゲットデバイス４ａ，４ｂ，４ｃに対して、それぞれリードコマンドを発行し、予め定める優先順位に基づいてマスタデバイス３ａによるターゲットデバイス４ａへのリードコマンドが時刻ｔ２でシステムバス上に発行される。
【００６１】
ターゲットデバイス４ａでは、何らかの不具合が発生し、時刻ｔ５でターゲットデバイス４ａがタイムアウトエラーを返したとすると、時刻ｔ６でマスタデバイス３ｂのリードコマンドがシステムバス上に発行され、時刻ｔ９でターゲットデバイス４ｂからのリードデータが返ってくると同時に、マスタデバイス３ａが再度リードコマンドを発行する。
【００６２】
この時点でマスタデバイス３ａとマスタデバイス３ｃとがリードコマンドを発行しているが、優先順位に基づいてマスタデバイス３ａのリードコマンドがシステムバス上に発行される。ターゲットデバイス４ａの不具合が解消していない場合は、時刻ｔ１３でターゲットデバイス４ａが再びタイムアウトエラーを返す。その後時刻ｔ１４では、マスタデバイス３ｃのリードコマンドがシステムバス上に発行され、時刻ｔ１７でターゲットデバイス４ｃからのリードコマンドが返される。
【００６３】
このように優先度の調整を行わない場合、タイムアウトエラーが発生したターゲットデバイス４ａへのアクセスがシステムバスを占有することとなり、無駄な帯域を消費してシステム全体の処理を遅延させることになる。
【００６４】
これに対して本実施形態では、優先度の調整を行うことで、システム全体としての処理の最適化を行う。
【００６５】
図８は、アクセスの優先度を調整する場合のタイミングチャートである。
優先度調整を行う場合、時刻ｔ９までの動作は、優先度調整の有無にかかわらず前述の通りであるが、時刻ｔ５でタイムアウトエラーが発生した時点で、優先順位がターゲットデバイス４ｂ＞ターゲットデバイス４ｃ＞ターゲットデバイス４ａのように変更され、ターゲットデバイス４ａの優先順位が最下位になる。
【００６６】
したがって、時刻ｔ１０では変更された優先順位に基づいて、マスタデバイス３ａではなく、マスタデバイス３ｂのリードコマンドがシステムバス上に発行される。
【００６７】
同様に時刻ｔ１４でもマスタデバイス３ｃのリードコマンドがシステムバス上に発行される。
【００６８】
そして、優先順位の最も低いターゲットデバイス４ａへのマスタデバイス３ａのリードコマンドは、他のマスタデバイス３ｂ、３ｃのリードコマンドが発行されていない時刻ｔ１８で発行されることになる。
【００６９】
このようにタイムアウトエラーなどのエラーが発生したターゲットデバイスへのアクセスの優先度を下げることにより、他のターゲットデバイスのコマンドが優先的に処理され、システムバスの帯域を有効利用してシステム全体としての処理の最適化を行うことができる。
【００７０】
なお、ターゲットデバイスの優先順位は、ＣＰＵ２の記憶領域や、他の記憶装置などに予め記憶しておき、ターゲットデバイスのエラーが発生した時点で優先順位を更新するようにすればよい。
【図面の簡単な説明】
【００７１】
【図１】本発明の実施の一形態である制御システム１の構成を示す概略図である。
【図２】ターゲットデバイス４の構成を示すブロック図である。
【図３】マスタデバイス３の構成を示すブロック図である。
【図４】制御システム１のタイミングチャートである。
【図５】エラー識別コードと発生原因との対応を示すコード対応テーブルの例を示す図である。
【図６】制御システム１のデータ転送処理を示すフローチャートである。
【図７】アクセスの優先度を調整しない場合のタイミングチャートである。
【図８】アクセスの優先度を調整する場合のタイミングチャートである。
【符号の説明】
【００７２】
１  制御システム
２  ＣＰＵ
３  マスタデバイス
４  ターゲットデバイス
５  システムバス
６  外部デバイス
【図１】
0005227601.tif 000002
【図２】
0005227601.tif 000003
【図３】
0005227601.tif 000004
【図４】
0005227601.tif 000005
【図５】
0005227601.tif 000006
【図６】
0005227601.tif 000007
【図７】
0005227601.tif 000008
【図８】
0005227601.tif 000009