(57)【要約】【課題】プロセッサ資源を有効利用することが可能な通信装置及びその制御プログラムを提供する。【解決手段】通信装置１を構成するＮＩＣ１０＿１及び１０＿２は、互いに異なるネットワークＮＷ１及びＮＷ２を介して、同一のシーケンス番号が付加されたデータを並列に受信する。各ＮＩＣは、一のデータを他のＮＩＣに先んじて受信したか否かを、前記一のデータに付加されたシーケンス番号と、前記他のＮＩＣで受信済みのデータに付加されたシーケンス番号とを比較することにより判定する。そして、各ＮＩＣは、前記一のデータを前記他のＮＩＣに先んじて受信したと判定した場合にのみ、ＣＰＵ２０に対して前記一のデータの処理を要求する割込みを発生する。【選択図】図１
2010165105.tif 000002
【特許請求の範囲】
【請求項１】
互いに異なるネットワークを介して、同一のシーケンス番号が付加されたデータを並列に受信する複数のネットワークカードと、
前記データを処理するプロセッサと、を備え、
各ネットワークカードが、一のデータを他のネットワークカードに先んじて受信したか否かを、前記一のデータに付加されたシーケンス番号と、前記他のネットワークカードで受信済みのデータに付加されたシーケンス番号とを比較することにより判定し、前記一のデータを前記他のネットワークカードに先んじて受信したと判定した場合にのみ、前記プロセッサに対して前記一のデータの処理を要求する割込みを発生する通信装置。
【請求項２】
請求項１において、
各ネットワークカードによりアクセス可能であり、且つネットワークカード毎に１つのシーケンス番号を記憶するための領域を形成したメモリをさらに備え、
各ネットワークカードが、各ネットワークを介してデータを受信する度に、各領域を、当該データに付加されたシーケンス番号で更新すると共に、前記判定に際して、前記一のデータに付加されたシーケンス番号と、前記他のネットワークカードに対応する領域に記憶されたシーケンス番号とを比較することを特徴とした通信装置。
【請求項３】
請求項１又は２において、
前記判定を、各ネットワークカードに組み込まれたファームウェアで行うことを特徴とした通信装置。
【請求項４】
請求項１〜３のいずれか一項において、
各ネットワークカードが、各ネットワークから正常にデータを受信しているか否かを、前記一のデータに付加されたシーケンス番号と、各ネットワークカードで受信済みのデータに付加されたシーケンス番号との連続性を監視することにより判定し、正常にデータを受信していないと判定した場合、前記プロセッサに対して障害処理の実行を要求する割込みを発生することを特徴とした通信装置。
【請求項５】
互いに異なるネットワークを介して、同一のシーケンス番号が付加されたデータを並列に受信する複数のネットワークカード各々に、
一のデータを他のネットワークカードに先んじて受信したか否かを、前記一のデータに付加されたシーケンス番号と、前記他のネットワークカードで受信済みのデータに付加されたシーケンス番号とを比較することにより判定する処理と、
前記一のデータを前記他のネットワークカードに先んじて受信したと判定した場合にのみ、プロセッサに対して前記一のデータの処理を要求する割込みを発生する処理と、
を実行させるための制御プログラム。
【請求項６】
請求項５において、
各ネットワークカードに、
各ネットワークから正常にデータを受信しているか否かを、前記一のデータに付加されたシーケンス番号と、各ネットワークカードで受信済みのデータに付加されたシーケンス番号との連続性を監視することにより判定する処理と、
正常にデータを受信していないと判定した場合、前記プロセッサに対して障害処理の実行を要求する割込みを発生する処理と、
をさらに実行させるための制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置及びその制御プログラムに関し、特に多重化されたネットワークからデータを並列に受信して処理する通信装置及びその制御プログラムに関する。
【背景技術】
【０００２】
例えば特許文献１及び２に、２重化されたネットワークに接続された通信装置同士間におけるデータ通信方式が記載されている。このデータ通信方式においては、送信側の通信装置が、同一のシーケンス番号を付加したデータを２つのネットワークに並列に送信する。一方、受信側の通信装置は、シーケンス番号をチェックすることにより、一方のネットワークから先に受信したデータを採用して所望の処理を実行する。
【０００３】
このデータ通信方式には、通常時に一方のネットワークを使用し、障害時に他方のネットワークに切り替えてデータを伝送する一般的なデータ通信方式に比べ、障害時の復旧処理におけるデータの再送が不要であり、以て短時間且つ簡易に障害を復旧できるというメリットがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１−２０８０５０号公報
【特許文献２】特開２００２−３３５２５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記の特許文献１及び２に記載のデータ通信方式には、受信側の通信装置において、プロセッサ資源が浪費されてしまうという課題があった。これは、大略、通信装置を構成する一のネットワークカード(例えば、Ｅｔｈｅｒｎｅｔ(登録商標)用のＰＣＩ拡張カード)が、プロセッサに対して他のネットワークカードより遅れて受信した不要なデータの処理を要求する割込みを発生し、以てプロセッサに無駄な割込み処理を実行させてしまうためである。
【０００６】
この課題を、図１１を参照してより具体的に説明する。図示の例では、通信装置１ｘを構成する２つのＮＩＣ(Ｎｅｔｗｏｒｋ Ｉｎｔｅｒｆａｃｅ Ｃａｒｄ)１０＿１及び１０＿２が、同一のシーケンス番号ＳＮが付加されたデータＤＴを並列に受信する場合を扱っている。
【０００７】
今、図示の如くデータＤＴがＮＩＣ１０＿１で受信されたとすると(ステップＳ１００１)、ＮＩＣ１０＿１は、データＤＴの処理を要求する割込み信号ＩＮＴを生成し、内部バスＢＵＳを介してＣＰＵ(Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ)２０に与える(ステップＳ１００２)。割込み信号ＩＮＴを受けたＣＰＵ２０は、ＮＩＣ１０＿１からデータＤＴを取得すると共に、データＤＴに応じた処理を実行する(ステップＳ１００３)。
【０００８】
この後、ＮＩＣ１０＿２は、ＮＩＣ１０＿１より遅れてデータＤＴを受信し(ステップＳ１００４)、ＮＩＣ１０＿１と同様にして、割込み信号ＩＮＴをＣＰＵ２０に与える(ステップＳ１００５)。割込み信号ＩＮＴを受けたＣＰＵ２０は、ＮＩＣ１０＿２からデータＤＴを取得する(ステップＳ１００６)。この時、ＣＰＵ２０は、データＤＴに付加されたシーケンス番号ＳＮを確認する。ＮＩＣ１０＿２から取得したデータＤＴには、ＮＩＣ１０＿１から既に取得済みのデータと同一のシーケンス番号ＳＮが付加されているため、ＣＰＵ２０は、データＤＴに対する処理が不要と判断して、データＤＴを廃棄する(ステップＳ１００７)。
【０００９】
このように、不要なデータに対するシーケンス番号の確認処理及び廃棄処理がオーバヘッドとなり、ＣＰＵ資源が浪費されてしまう。また、これらの割込み処理は、データ受信の度に実行され且つ最も優先度の高い処理であるため、本来ＣＰＵが注力すべきデータの処理(アプリケーションの実行)が妨げられてしまう。
【００１０】
従って、本発明は、プロセッサ資源を有効利用することが可能な通信装置及びその制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記の目的を達成するため、本発明の一態様に係る通信装置は、互いに異なるネットワークを介して、同一のシーケンス番号が付加されたデータを並列に受信する複数のネットワークカードと、前記データを処理するプロセッサとを備え、各ネットワークカードが、一のデータを他のネットワークカードに先んじて受信したか否かを、前記一のデータに付加されたシーケンス番号と、前記他のネットワークカードで受信済みのデータに付加されたシーケンス番号とを比較することにより判定し、前記一のデータを前記他のネットワークカードに先んじて受信したと判定した場合にのみ、前記プロセッサに対して前記一のデータの処理を要求する割込みを発生する。
【００１２】
また、本発明の一態様に係る制御プログラムは、互いに異なるネットワークを介して、同一のシーケンス番号が付加されたデータを並列に受信する複数のネットワークカード各々に、一のデータを他のネットワークカードに先んじて受信したか否かを、前記一のデータに付加されたシーケンス番号と、前記他のネットワークカードで受信済みのデータに付加されたシーケンス番号とを比較することにより判定する処理と、前記一のデータを前記他のネットワークカードに先んじて受信したと判定した場合にのみ、プロセッサに対して前記一のデータの処理を要求する割込みを発生する処理と、を実行させる。
【発明の効果】
【００１３】
本発明では、多重化されたネットワークから並列に受信したデータの内、最先の有効なデータのみについての割込みが発生するため、プロセッサにおける無駄な割込み処理の実行を回避でき、以てプロセッサ資源を有効利用することが可能である。
【図面の簡単な説明】
【００１４】
【図１】本発明に係る通信装置の実施の形態１の概略的な構成例を示したブロック図である。
【図２】本発明に係る通信装置の実施の形態１の概略的な動作例を示したブロック図である。
【図３】本発明に係る通信装置の実施の形態１の詳細な構成例を示したブロック図である。
【図４】本発明に係る通信装置の実施の形態１に用いるＮＩＣの構成例を示したブロック図である。
【図５】本発明に係る通信装置の実施の形態１におけるデータ送信動作例を示したシーケンス図である。
【図６】本発明に係る通信装置の実施の形態１に用いるＮＩＣのデータ受信時における動作例を示したシーケンス図である。
【図７】本発明に係る通信装置の実施の形態１に用いるＣＰＵのデータ受信時における動作例を示したシーケンス図である。
【図８】本発明に係る通信装置の実施の形態２に用いるＮＩＣの構成例を示したブロック図である。
【図９】本発明に係る通信装置の実施の形態２に用いるＮＩＣのデータ受信時における動作例を示したフローチャート図である。
【図１０】本発明に係る通信装置の実施の形態２に用いるＣＰＵのデータ受信時における動作例を示したシーケンス図である。
【図１１】従来のデータ通信方式の課題を説明するためのブロック図である。
【発明を実施するための形態】
【００１５】
以下、本発明に係る通信装置及びその制御プログラムの実施の形態１及び２を、図１〜図１０を参照して説明する。なお、各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
【００１６】
[実施の形態１]
まず、本実施の形態に係る通信装置の概略的な構成例及び動作例を、図１及び図２をそれぞれ参照して説明する。
【００１７】
図１に示す本実施の形態に係る通信装置１は、一例として２重化されたネットワークＮＷ１及びＮＷ２を介して、同一のシーケンス番号が付加されたデータを並列に受信する２つのＮＩＣ１０＿１及び１０＿２(以下、符号１０で総称することがある)と、これらのＮＩＣ１０＿１及び１０＿２の一方で受信されたデータを処理するＣＰＵ２０と、メモリ３０とを備えている。また、ＮＩＣ１０、ＣＰＵ２０、及びメモリ３０は、内部バスＢＵＳを介して相互接続されている。
【００１８】
ここで、メモリ３０には、ＮＩＣ１０＿１及び１０＿２がそれぞれ最後に受信したデータに付加されたシーケンス番号(以下、受信済みシーケンス番号と呼称する)を記憶するための領域(以下、受信済みシーケンス番号記憶領域と呼称する)３１＿１及び３１＿２を形成し、以て各ＮＩＣが、他のＮＩＣにおける受信済みシーケンス番号を参照できるようにしている。但し、メモリを用いて受信済みシーケンス番号を参照することは必須では無い。例えば、受信済みシーケンス番号をＮＩＣ同士間で通知するようにしても良い。この場合も、各ＮＩＣは、他のＮＩＣにおける受信済みシーケンス番号を把握することができる。なお、以降の説明においては、受信済みシーケンス番号記憶領域３１＿１及び３１＿２を、符号３１で総称することがある。
【００１９】
以下、通信装置１の概略的な動作を、図２に示す如く受信済みシーケンス番号記憶領域３１＿１及び３１＿２に記憶された受信済みシーケンス番号ＳＮ＿Ｒ１及びＳＮ＿Ｒ２が共に"１４"であり、且つＮＩＣ１０＿１及び１０＿２が同一のシーケンス番号ＳＮ＝"１５"が付加されたデータＤＴを並列に受信する場合を例に取って説明する。なお、以降の説明においては、受信済みシーケンス番号ＳＮ＿Ｒ１及びＳＮ＿Ｒ２を、符号ＳＮ＿Ｒで総称することがある。
【００２０】
今、図示の如くデータＤＴが、ＮＩＣ１０＿２より先にＮＩＣ１０＿１で受信されたとする(ステップＳ１)。この場合、ＮＩＣ１０＿１は、自ＮＩＣに対応する領域３１＿１内の受信済みシーケンス番号ＳＮ＿Ｒ１を"１５"(シーケンス番号ＳＮ)に更新する(ステップＳ２)と共に、他のＮＩＣ１０＿２に対応する領域３１＿２から受信済みシーケンス番号ＳＮ＿Ｒ２＝"１４"を読み出す(ステップＳ３)。
【００２１】
そして、ＮＩＣ１０＿１は、シーケンス番号ＳＮ(＝"１５")と受信済みシーケンス番号ＳＮ＿Ｒ２(＝"１４")とを比較する。ＳＮ＞ＳＮ＿Ｒ２が成立するため、ＮＩＣ１０＿１は、データＤＴをＮＩＣ１０＿２より先に受信したと判断すると共に、データＤＴの処理を要求する割込み信号(以下、データ処理要求割込み信号と呼称する)ＩＮＴ１を生成し、内部バスＢＵＳを介してＣＰＵ２０に与える(ステップＳ４)。データ処理要求割込み信号ＩＮＴ１を受けたＣＰＵ２０は、ＮＩＣ１０＿１からデータＤＴを取得すると共に、データＤＴに応じた処理を実行する(ステップＳ５)。
【００２２】
一方、ＮＩＣ１０＿２は、ＮＩＣ１０＿１より遅れてデータＤＴを受信する(ステップＳ６)。ＮＩＣ１０＿２は、ＮＩＣ１０＿１と同様、自ＮＩＣに対応する領域３１＿２内の受信済みシーケンス番号ＳＮ＿Ｒ２を"１５"(シーケンス番号ＳＮ)に更新する(ステップＳ７)と共に、他のＮＩＣ１０＿１に対応する領域３１＿１から受信済みシーケンス番号ＳＮ＿Ｒ１＝"１５"を読み出す(ステップＳ８)。
【００２３】
そして、ＮＩＣ１０＿２は、シーケンス番号ＳＮ(＝"１５")と受信済みシーケンス番号ＳＮ＿Ｒ１(＝"１５")とを比較する。ＳＮ＝ＳＮ＿Ｒ１が成立するため、ＮＩＣ１０＿２は、データＤＴをＮＩＣ１０＿１より遅れて受信した(すなわち、データＤＴがＣＰＵ２０により既に処理された不要なデータである)と判断し、データ処理要求割込み信号ＩＮＴ１を発生すること無くデータＤＴを廃棄する(ステップＳ９)。
【００２４】
このように、ＣＰＵに対しては、２重化されたネットワークから並列に受信したデータの内、最先の有効なデータのみについての割込みが発生する。従って、ＣＰＵは無駄な割込み処理を実行する必要が無く、実行中のアプリケーション等の動作が不必要に妨げられることも無い。
【００２５】
また、メモリ内に受信済みシーケンス番号記憶領域を形成する簡易な構成により、各ＮＩＣは、他のＮＩＣにおける受信済みシーケンス番号を把握することができる。さらに、シーケンス番号記憶領域には、数ビット程度の小さな領域を割り当てれば十分である。
【００２６】
なお、ネットワークは３重以上に多重化しても良い。この場合、一のネットワークに接続されたＮＩＣが、受信したデータに付加されたシーケンス番号と、他のネットワークに接続された全てのＮＩＣにおける受信済みシーケンス番号とを順次比較して、当該データの先後着を判断する。
【００２７】
次に、上記の動作を実現する通信装置の詳細な構成例及び動作例を、図３〜図７を参照して説明する。
【００２８】
図３に示す通信装置１＿１及び１＿２は、図１に示した通信装置１と同様、ネットワークＮＷ１に接続されたＮＩＣ１０＿１と、ネットワークＮＷ２に接続されたＮＩＣ１０＿２と、ＣＰＵ２０と、メモリ３０とを備え、以て通信装置１＿１−１＿２間でデータを送受信できるようにしている。
【００２９】
また、ＣＰＵ２０上では、ユーザの業務プログラムや通信装置の上位機能等を実現するアプリケーション２１と、ＮＩＣ１０を制御するデバイスドライバ２２が動作する。
【００３０】
さらに、メモリ３０には、図１に示した受信済みシーケンス番号記憶領域３１に加えて、送信バッファ３２、受信バッファ３３、及び送信シーケンス番号記憶領域３４が形成されている。送信バッファ３２は、ネットワークＮＷを介して対向する通信装置に対して送信するデータを格納する領域である。この送信バッファ３２への書込はデバイスドライバ２２によって行われ、読出はＮＩＣ１０＿１及び１０＿２によって行われる。受信バッファ３３は、ＮＩＣ１０＿１及び１０＿２のいずれか一方で受信されたデータを格納する領域である。この受信バッファ３３への書込はＮＩＣ１０＿１又は１０＿２によって行われ、読出はデバイスドライバ２２によって行われる。送信シーケンス番号記憶領域３４は、データ送信時に付加するシーケンス番号を記憶する領域であり、データ送信の度に当該シーケンス番号がインクリメントされる。
【００３１】
ここで、受信済みシーケンス番号記憶領域３１及び送信シーケンス番号記憶領域３４内の値は、通信装置１＿１−１＿２間でデータを送受信できるよう適切に初期化される。通信装置１＿１及び１＿２の起動時、例えば、送信シーケンス番号記憶領域３４には"１"を記憶し、受信済みシーケンス番号記憶領域３１には"０"を記憶する。
【００３２】
また、ＮＩＣ１０は、図４に示す如く、トランシーバ１１と、受信バッファ１２と、ＤＭＡ(Ｄｉｒｅｃｔ Ｍｅｍｏｒｙ Ａｃｃｅｓｓ)コントローラ１３と、割込みコントローラ１４と、これらの構成要素１１〜１４を制御するファームウェア１５とを備えている。トランシーバ１１は、ネットワークＮＷを介したデータＤＴの送受信を行う。受信バッファ１２は、トランシーバ１１で受信されたデータＤＴを一時的に格納する領域である。ＤＭＡコントローラ１３は、ＣＰＵ２０を介すること無くメモリ３０へ直接アクセスし、以てデータＤＴ及びシーケンス番号ＳＮの書込、並びに受信シーケンス番号ＳＮ＿Ｒの読出を行う。割込みコントローラ１４は、ＣＰＵ２０に対するデータ処理要求割込み信号ＩＮＴ１を生成する。
【００３３】
さらに、ファームウェア１５は、データ受信に際しての制御プログラム１５１を有する。制御プログラム１５１は、下記(Ａ)〜(Ｄ)の処理を含む。
【００３４】
(Ａ)受信バッファ１２からのデータＤＴの読出処理。
(Ｂ)ＤＭＡコントローラ１３に対するメモリアクセス指示ＩＮＳ１の発行処理。ここで、メモリアクセス指示ＩＮＳ１は、ＤＭＡコントローラ１３に対して、メモリ３０への受信バッファ１２から読み出したデータＤＴ及びこれに付加されたシーケンス番号ＳＮの書込、並びにメモリ３０からの受信済シーケンス番号ＳＮ＿Ｒの読出を指示するものである。
(Ｃ)シーケンス番号ＳＮと受信済シーケンス番号ＳＮ＿Ｒの比較によるデータＤＴの先後着判断処理。
(Ｄ)割込みコントローラ１４に対する割込み発生指示ＩＮＳ２の発行処理。
【００３５】
なお、図示を省略するが、ファームウェア１５は、データ送信に際しての制御プログラム、及びＮＩＣ１０起動時の初期化プログラム等も有する。
【００３６】
次に通信装置１＿１及び１＿２の動作を説明するが、まずデータ送信動作例を、図５を参照して説明する。そして、データ受信動作例を、図６及び図７を参照して説明する。
【００３７】
[データ送信動作例]
図５に示すように、ＣＰＵ２０上で実行されているアプリケーション２１は、その処理過程において対向する通信装置へのデータＤＴの送信が必要になると、デバイスドライバ２２へデータＤＴの送信を指示する(ステップＳ１０１)。この時、ＣＰＵ２０は、アプリケーション２１の実行を停止し、デバイスドライバ２２を起動する。
【００３８】
デバイスドライバ２２は、アプリケーション２１より受け取ったデータＤＴを送信バッファ３２へ格納する(ステップＳ２０１)。次いで、デバイスドライバ２２は、送信シーケンス番号記憶領域３４からシーケンス番号ＳＮを読み出し(ステップＳ２０２)、送信バッファ３２内のデータＤＴに付加する(ステップＳ２０３)。この時、デバイスドライバ２２は、次のデータ送信に備えて、送信シーケンス番号記憶領域３４内のシーケンス番号ＳＮを"１"だけインクリメントする(ステップＳ２０４)。そして、デバイスドライバ２２は、ＮＩＣ１０＿１及び１０＿２に対して、送信バッファ３２内のデータＤＴを送信するよう指示する(ステップＳ２０５)。
【００３９】
この指示を受けたＮＩＣ１０＿１及び１０＿２(内の各トランシーバ１１)は、送信バッファ３２内のデータＤＴをネットワークＮＷ１及びＮＷ２へそれぞれ送出する(ステップＳ３０１＿１及びＳ３０１＿２)。これにより、同一のシーケンス番号ＳＮが付加されたデータＤＴが、ネットワークＮＷ１及びＮＷ２へ並列に送信されることとなる。
【００４０】
また、ＣＰＵ２０は、上記のステップＳ２０５の後にデバイスドライバ２２の実行を停止し、アプリケーション２１を再起動する。アプリケーション２１は、他の処理を継続する(ステップＳ１０２)。
【００４１】
[データ受信動作例]
図６に示すように、ＮＩＣ１０内のトランシーバ１１は、ネットワークＮＷからデータＤＴを受信し(ステップＳ４０１)、受信バッファ１２へ格納する(ステップＳ４０２)。
【００４２】
これを検知したファームウェア１５内の制御プログラム１５１は、受信バッファ１２からデータＤＴを読み出すと共に、ＤＭＡコントローラ１３に対して、自ＮＩＣに対応する受信済みシーケンス番号ＳＮ＿Ｒｉを、データＤＴに付加されたシーケンス番号ＳＮで更新するよう指示する(ステップＳ５０１)。ここで、ＳＮ＿Ｒｉは、ＮＩＣ１０＿１であれば図２に示した受信済みシーケンス番号ＳＮ＿Ｒ１に相当し、ＮＩＣ１０＿２であれば受信済みシーケンス番号ＳＮ＿Ｒ２に相当する。
【００４３】
上記の指示を受けたＤＭＡコントローラ１３は、自ＮＩＣに対応する受信済みシーケンス番号記憶領域３１＿ｉをシーケンス番号ＳＮで上書きする(ステップＳ６０１)。ここで、３１＿ｉは、ＮＩＣ１０＿１であれば図３に示した受信済みシーケンス番号記憶領域３１＿１に相当し、ＮＩＣ１０＿２であれば受信済みシーケンス番号記憶領域３１＿２に相当する。
【００４４】
そして、制御プログラム１５１は、ＤＭＡコントローラ１３に対して、他のＮＩＣに対応する受信済みシーケンス番号ＳＮ＿Ｒｏの読出をさらに指示する(ステップＳ５０２)。ここで、ＳＮ＿Ｒｏは、ＮＩＣ１０＿１であれば図２に示した受信済みシーケンス番号ＳＮ＿Ｒ２に相当し、ＮＩＣ１０＿２であれば受信済みシーケンス番号ＳＮ＿Ｒ１に相当する。
【００４５】
上記の指示を受けたＤＭＡコントローラ１３は、他のＮＩＣに対応する受信済みシーケンス番号記憶領域３１＿ｏから受信済みシーケンス番号ＳＮ＿Ｒｏを読み出し、制御プログラム１５１に与える(ステップＳ６０２)。ここで、３１＿ｏは、ＮＩＣ１０＿１であれば図３に示した受信済みシーケンス番号記憶領域３１＿２に相当し、ＮＩＣ１０＿２であれば受信済みシーケンス番号記憶領域３１＿１に相当する。
【００４６】
そして、制御プログラム１５１は、シーケンス番号ＳＮと受信済みシーケンス番号ＳＮ＿Ｒｏとを比較する(ステップＳ５０３)。この結果、ＳＮ≦ＳＮ＿Ｒｏが成立すると(ステップＳ５０４)、制御プログラム１５１は、自ＮＩＣが他のＮＩＣより遅れてデータＤＴを受信したと判断してデータＤＴを廃棄し、処理を終了する(ステップＳ５０５)。
【００４７】
一方、上記のステップＳ５０４でＳＮ≦ＳＮ＿Ｒｏが成立しなかった場合、制御プログラム１５１は、自ＮＩＣが他のＮＩＣより先にデータＤＴを受信したと判断し、ＤＭＡコントローラ１３に対して、データＤＴをメモリ３０内の受信バッファ３３へ格納するよう指示する(ステップＳ５０６)。この指示を受けたＤＭＡコントローラ１３は、データＤＴを受信バッファ３３へ格納する(ステップＳ６０３)。
【００４８】
この後、制御プログラム１５１は、割込みコントローラ１４に対して、ＣＰＵ２０へのデータ処理要求割込みを発生するよう指示する(ステップＳ５０７)。この指示を受けた割込みコントローラ１４は、データ処理要求割込み信号ＩＮＴ１を内部バスＢＵＳ(図３参照)へ送出する(ステップＳ７０１)。
【００４９】
図７に示すように、ＣＰＵ２０内のデバイスドライバ２２は、割込みコントローラ１４から送出されたデータ処理要求割込み信号ＩＮＴ１を受信する(ステップＳ８０１)。この時、デバイスドライバ２２は、受信バッファ３３からデータＤＴを読み出す(ステップＳ８０２)と共に、データＤＴからシーケンス番号ＳＮを削除してアプリケーション２１へ渡す(ステップＳ８０３)。
【００５０】
アプリケーション２１は、データＤＴに応じた処理を実行し(ステップＳ９０１)、その後、他の処理を継続する(ステップＳ９０２)。
【００５１】
このように、本実施の形態においては、遅れてデータを受信したＮＩＣがＣＰＵに対する割込みを発生しないため、ＣＰＵにおける無駄な割込み処理の実行が不要となる。このため、アプリケーションの実行に、ＣＰＵ資源をより多く割り当てることができる。また、データの先後着判断処理を、ＣＰＵよりも高速に動作するＮＩＣ内のファームウェアで実行するため、通信装置全体の性能を向上させることができる。
【００５２】
[実施の形態２]
本実施の形態に係る通信装置は、ＮＩＣ１０が、図８に示すように、図４に示した割込みコントローラ１４及び制御プログラム１５１に代えて、割込みコントローラ１４ａ及び制御プログラム１５１ａを有している点が上記の実施の形態１と異なる。
【００５３】
ここで、制御プログラム１５１ａは、上記(Ａ)〜(Ｄ)の処理に加えて、下記(Ｅ)の処理を含む。
【００５４】
(Ｅ)自ＮＩＣにおけるシーケンス番号ＳＮの連続性を監視することにより、ネットワークＮＷからデータＤＴを正常に受信しているか否かを判定する処理。
【００５５】
また、割込みコントローラ１４ａは、上記(Ｅ)の処理によりデータＤＴの受信障害が検出された場合、ＣＰＵ２０に対して障害処理の実行を要求する割込み信号(以下、障害処理要求割込み信号と呼称する)ＩＮＴ２を生成する。ここで、障害処理とは、ＮＩＣの再初期化処理や切り離し(使用停止)処理等である。
【００５６】
これにより、データＤＴを遅れて受信した、データ処理要求割込みを発生しないＮＩＣに受信障害が発生した場合であっても、ＣＰＵ２０は当該受信障害を検知できる。
【００５７】
以下、本実施の形態の動作を、図９及び図１０を参照して説明する。
【００５８】
図９に示すように、制御プログラム１５１ａは、図６に示したステップＳ５０１〜Ｓ５０７(制御プログラム１５１の処理)に加えて、上記(Ｅ)の処理に相当するステップＳ５０８〜Ｓ５１１を実行する。
【００５９】
より具体的には、データＤＴの受信を検知した制御プログラム１５１ａは、まず、ＤＭＡコントローラ１３に対して、自ＮＩＣに対応する受信済みシーケンス番号ＳＮ＿Ｒｉの読出を指示する(ステップＳ５０８)。この指示を受けたＤＭＡコントローラ１３は、自ＮＩＣに対応する領域３１＿ｉから受信済みシーケンス番号ＳＮ＿Ｒｉを読み出し、制御プログラム１５１ａに与える。
【００６０】
そして、制御プログラム１５１ａは、受信済みシーケンス番号ＳＮ＿ＲｉとデータＤＴに付加されたシーケンス番号ＳＮとを比較する(ステップＳ５０９)。この結果、ＳＮ＝ＳＮ＿Ｒｉ＋１が成立した場合(すなわち、シーケンス番号ＳＮの連続性が保たれている場合)(ステップＳ５１０)、制御プログラム１５１ａは、上記の実施の形態１と同様の処理(ステップＳ５０１〜Ｓ５０７)を実行する。
【００６１】
一方、上記のステップＳ５１０でシーケンス番号ＳＮの連続性が保たれていない場合には、制御プログラム１５１ａは、受信データの欠落や誤りがあると判断し、割込みコントローラ１４ａに対して、ＣＰＵ２０への障害処理要求割込みを発生するよう指示する(ステップＳ５１１)。この指示を受けた割込みコントローラ１４ａは、障害処理要求割込み信号ＩＮＴ２を内部バスＢＵＳ(図３参照)へ送出する。
【００６２】
図１０に示すように、ＣＰＵ２０内のデバイスドライバ２２は、割込みコントローラ１４ａから送出された障害処理要求割込み信号ＩＮＴ２を受信する(ステップＳ８０４)。この時、デバイスドライバ２２は、所定の障害処理を実行する(ステップ８０５)。
【００６３】
また、ＣＰＵ２０は、上記のステップＳ８０５の後にデバイスドライバ２２の実行を停止し、アプリケーション２１を再起動する。アプリケーション２１は、他の処理を継続する(ステップＳ９０２)。
【００６４】
なお、本実施の形態においては、シーケンス番号の連続性を監視することにより受信データの正常性を確認したが、周知の誤り検出技術(チェックサムやパリティ等)を併用して受信データの欠落や誤りを判断するようにしても良い。
【００６５】
なお、上記の実施の形態によって本発明は限定されるものではなく、特許請求の範囲の記載に基づき、当業者によって種々の変更が可能なことは明らかである。
【符号の説明】
【００６６】
１, １＿１, １＿２  通信装置
１０, １０＿１, １０＿２  ＮＩＣ
１１  トランシーバ
１２, ３３  受信バッファ
１３  ＤＭＡコントローラ
１４, １４ａ  割込みコントローラ
１５  ファームウェア
２０  ＣＰＵ
２１  アプリケーション
２２  デバイスドライバ
３０  メモリ
３１＿１, ３１＿２, ３１＿ｉ, ３１＿ｏ  受信済みシーケンス番号記憶領域
３２  送信バッファ
３４  送信シーケンス番号記憶領域
１５１, １５１ａ  制御プログラム
ＮＷ, ＮＷ１, ＮＷ２  ネットワーク
ＤＴ  データ
ＳＮ  シーケンス番号
ＳＮ＿Ｒ, ＳＮ＿Ｒ１, ＳＮ＿Ｒ２, ＳＮ＿Ｒｉ, ＳＮ＿Ｒｏ  受信済みシーケンス番号
ＩＮＴ１  データ処理要求割込み信号
ＩＮＴ２  障害処理要求割込み信号
ＩＮＳ１  メモリアクセス指示
ＩＮＳ２  割込み発生指示
ＢＵＳ  内部バス
【図１】
2010165105.tif 000003
【図２】
2010165105.tif 000004
【図３】
2010165105.tif 000005
【図４】
2010165105.tif 000006
【図５】
2010165105.tif 000007
【図６】
2010165105.tif 000008
【図７】
2010165105.tif 000009
【図８】
2010165105.tif 000010
【図９】
2010165105.tif 000011
【図１０】
2010165105.tif 000012
【図１１】
2010165105.tif 000013