(57)【特許請求の範囲】
【請求項１】
通信装置であって、
他の通信装置からヘッダ部とデータ部を有するデータを受信する受信手段と、
前記受信手段により受信した前記データを第１の記憶部に転送すると共に、前記データの前記ヘッダ部を第２の記憶部に転送する転送手段と、
前記転送手段が前記データを前記第１の記憶部に転送している間に、前記データのチェックサム値を演算する演算手段と、
前記転送手段が前記データを前記第１の記憶部に転送している間に行われた前記演算手段による演算結果に基づいて、前記データの誤りを判定する判定手段と、を有し、
前記転送手段は、前記他の通信装置との間で通信の接続設定のための通信が行なわれている場合には、前記データを前記第１の記憶部に転送することなく、前記データを前記第２の記憶部に転送することを特徴とする通信装置。
【請求項２】
前記転送手段による前記ヘッダ部の前記第２の記憶部への転送が完了したことに応じて、前記ヘッダ部を解析する解析手段を更に有し、
前記解析手段による解析結果に応じて、前記転送手段は、前記データの前記第１の記憶部への転送を中止することを特徴とする請求項１に記載の通信装置。
【請求項３】
無線通信部と有線通信部とを更に有し、
前記解析手段は、前記データが前記無線通信部と前記有線通信部のいずれにおいて受信されたものであるかに基づいて、前記ヘッダ部に対して異なる解析処理を行うことを特徴とする請求項２に記載の通信装置。
【請求項４】
前記転送手段は、前記他の通信装置との間で無線通信の接続設定のための通信が行なわれている場合には、前記データを前記第１の記憶部に転送することなく、前記データを前記第２の記憶部に転送することを特徴とする請求項１から３のいずれか１項に記載の通信装置。
【請求項５】
前記第２の記憶部は、前記第１の記憶部よりも記憶容量が小さいことを特徴とする請求項１から４のいずれか１項に記載の通信装置。
【請求項６】
前記第１の記憶部と前記第２の記憶部とは、それぞれ異なるバスに接続されていることを特徴とする請求項１から３のいずれか１項に記載の通信装置。
【請求項７】
通信装置の制御方法であって、
他の通信装置からヘッダ部とデータ部を有するデータを受信する受信工程と、
前記受信工程で受信した前記データを第１の記憶部に転送すると共に、前記データの前記ヘッダ部を第２の記憶部に転送する転送工程と、
前記転送工程において前記データが前記第１の記憶部に転送されている間に、前記データのチェックサム値を演算する演算工程と、
前記転送工程において前記データが前記第１の記憶部に転送されている間に行われた前記演算工程による演算結果に基づいて、前記データの誤りを判定する判定工程と、を有し、
前記転送工程では、前記他の通信装置との間で通信の接続設定のための通信が行なわれている場合には、前記データを前記第１の記憶部に転送することなく、前記データを前記第２の記憶部に転送することを特徴とする通信装置の制御方法。
【請求項８】
コンピュータを、請求項１から６のいずれか１項に記載された通信装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置およびその制御方法に関する。
【背景技術】
【０００２】
近年、様々な機器を、有線／無線ネットワークに直接に接続する機会が増加している。そのような機器の例として、携帯端末、プリンタ、カメラ、コピー機、ディスプレイ、ビデオ機器、音響装置等がある。これらの機器に搭載されるメインＣＰＵは、パーソナルコンピュータに搭載されるメインＣＰＵと比較して低処理能力である場合が多い。そのような機器資源を利用し、ネットワークにおいて標準的に使用されているＴＣＰ／ＵＤＰ／ＩＰといったインターネット標準プロトコルを実現しようとした場合には、次の２つの方法が考えられる。
【０００３】
第一の方法はＴＣＰ／ＩＰのプロトコルスタックをメインＣＰＵで実行する方法である。この場合、メインＣＰＵは通信処理とアプリケーション処理との少なくとも２つを実行する必要があるため、両者を同時に実行するような場合、どちらかもしくは両方の処理スピードが低下する可能性がある。第二の方法は、メインＣＰＵから通信処理を独立させる方法である。詳細には、ＴＯＥ（ＴＣＰ／ＩＰオフロードエンジン）といったプロトコル処理に特化した補助的デバイスを利用する方法や、メインＣＰＵとは独立したサブＣＰＵでプロトコルスタックを実行するといった方法がある。この方法は、メインＣＰＵから通信処理を分離させているため、アプリケーション処理と通信処理の各々が他の処理に与え得る処理能力への影響が小さい。
【０００４】
特許文献１には、ＴＯＥについて記載されている。特許文献１では、アプリケーションを実行するアプリＣＰＵとのインターフェイスを持ち、アプリＣＰＵから入力されるアプリケーションデータを優先的に送信する調停機能を持たせたＴＣＰ／ＩＰエンジンが記載されている。また、アプリＣＰＵとＴＣＰ／ＩＰエンジンとの間におけるアプリケーションデータの受け渡しにＤＭＡ（Direct Memory Access）を使用する方法が記載されている。
【０００５】
また、特許文献２には、通信処理におけるデータ処理方法が記載されている。特許文献２では、受信したデータパケットをヘッダとデータに分離し、それぞれ別の領域にコピーして扱う方法が記載されている。また、特許文献３には、通信制御装置に適用できる集積回路装置が記載されている。特許文献３では、受信パケットを解析し、解析結果を元に当該パケットをメモリ上のどのエリアにコピーするか決定し、決定したエリアへ当該パケットをＤＭＡにより転送することが記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００３−１４３２２１号公報
【特許文献２】特開２００５−１３７０２２号公報
【特許文献３】特開２００６−０５０５０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ネットワークからヘッダ部とデータ部を含むパケットを受信した場合、まずパケットの解析を行うために当該パケットを受信バッファへコピーするのが一般的である。ここで、受信パケットのうち解析対象がヘッダ部のみである場合に、ヘッダ部からデータ部までのすべてを受信バッファへコピーし終えてから解析を開始すると、解析を開始するまでに無駄な待ち時間が発生することになる。このことは通信のスループットを低下させる可能性がある。
【０００８】
受信バッファへのパケットのコピーを、ＣＰＵ等の解析機能を有するデバイスとは独立したデバイス、例えばＤＭＡＣ（Direct Memory Access Controller）で実行することにより、コピー処理終了前に解析を実行することはできる。すなわち、ＤＭＡＣでパケットのコピーを行っている間であっても、ＤＭＡによるヘッダ部のコピー終了後に当該ヘッダ部の解析をＣＰＵが行うようにすることで、解析処理とデータ部のコピー処理を並列させることが出来る。しかし、ヘッダ部とデータ部をすべて同じメモリ上にある受信バッファへコピーした場合には、以下の課題が発生する。すなわち、データ部のコピーを行うためのＤＭＡによるメモリアクセスと、ヘッダ解析のためのＣＰＵによるメモリアクセスが競合するため処理効率が低下する可能性がある。
【０００９】
本発明は、上記の課題に鑑みてなされたものであり、所定の通信プロトコルにしたがって外部装置からデータを受信する際の、通信処理の効率を向上することを目的とする。
【課題を解決するための手段】
【００１０】
上記の目的を達成するための本発明の一態様による通信装置は以下の構成を有する。すなわち、
通信装置であって、
他の通信装置からヘッダ部とデータ部を有するデータを受信する受信手段と、
前記受信手段により受信した前記データを第１の記憶部に転送すると共に、前記データの前記ヘッダ部を第２の記憶部に転送する転送手段と、
前記転送手段が前記データを前記第１の記憶部に転送している間に、前記データのチェックサム値を演算する演算手段と、
前記転送手段が前記データを前記第１の記憶部に転送している間に行われた前記演算手段による演算結果に基づいて、前記データの誤りを判定する判定手段と、を有し、
前記転送手段は、前記他の通信装置との間で通信の接続設定のための通信が行なわれている場合には、前記データを前記第１の記憶部に転送することなく、前記データを前記第２の記憶部に転送する。
【発明の効果】
【００１１】
本発明によれば、所定の通信プロトコルにしたがって外部装置からデータを受信する際の、通信処理の効率が向上する。
【図面の簡単な説明】
【００１２】
【図１】実施形態によるシステム構成例を示す図。
【図２】第一実施形態における通信制御装置の構成例を示すブロック図。
【図３】第一実施形態における通信制御部の機能構成例を示すブロック図。
【図４Ａ】、
【図４Ｂ】第一実施形態における通信制御部の処理を表したフローチャート。
【図５】第一実施形態における通信制御装置のデータフロー図。
【図６】ＤＭＡ転送部の使用時におけるバス動作の一例を示す図。
【発明を実施するための形態】
【００１３】
以下、添付の図面を参照して、本発明の好適な実施形態を説明する。なお、以後の説明では、有線規格にEthernet（登録商標） II、無線規格にIEEE802.11を例に挙げて説明するが、本発明が適用できる範囲はこれに留まるわけではないことを先に述べておく。
【００１４】
［第１実施形態］
図１は、本実施形態にかかる通信制御装置１０３を適用したシステム例を示す図である。電子機器１０１は、通信制御装置１０３と主制御装置１０２を収容している。主制御装置１０２は、電子機器１０１のアプリケーションを制御するための装置である。主制御装置１０２は、電子機器１０１が例えばテレビであれば表示のためのアプリケーションを、プリンタであれば印刷のためのアプリケーションを、カメラであれば撮像のためのアプリケーションを担う。
【００１５】
通信制御装置１０３は、主制御装置１０２では行わない電子機器１０１の通信に係る処理を担う。なお、本実施形態では、通信制御装置１０３が無線通信と有線通信の両方を使用できるものとして説明する。アンテナ１０４は無線通信のための外部インターフェイスの例であり、ケーブルソケット１０５は有線通信のための外部インターフェイスの例である。各通信インターフェイスは、各通信媒体を介して他機器とネットワークを構築する。たとえば、無線通信の場合には、アンテナ１０４から、大気１０６を介して、無線通信機器１０８との無線ネットワークが構築される。有線通信の場合には、ケーブルソケット１０５に接続されたケーブル１０７を介して、他の有線通信機器１０９との有線ネットワークが構築される。
【００１６】
図２は、電子機器１０１の内部構成例を表したブロック図である。図２において、主記憶部２０１は、主制御装置１０２と通信制御装置１０３それぞれがアクセス可能な記憶部である。データ送信に際しては、主制御装置１０２は、通信相手に送信したいデータを主記憶部２０１に格納し、通信制御装置１０３は、主記憶部２０１に格納されたデータを所定のプロトコル処理により通信パケット化して、通信相手に送信する。また、主記憶部２０１は、通信制御装置１０３が、無線通信機器１０８または有線通信機器１０９より受信したデータに所定のプロトコル処理を施した後、主制御装置１０２へ送信する際にも使用される。
【００１７】
メインバス２０２は、主制御装置１０２と通信制御装置１０３と主記憶部２０１とを接続しているバスである。通信制御部２０３は、通信制御装置１０３全体の状態監視や制御を行う。通信制御部２０３の詳細な動作については後述する。ローカルバス２０４には、通信制御装置１０３に存在する各種モジュールが接続される。補助記憶部２０５は、通信制御装置１０３が各種処理を実行するために必要となるワークメモリとして使用される。なお、主記憶部２０１はメインバス２０２に、補助記憶部２０５はローカルバス２０４に接続されている。すなわち、主記憶部２０１と補助記憶部２０５とはそれぞれ異なるバスに接続された記憶部である。ただし、本発明はこのような構成に限られるものではない。たとえば、複数のバスマスタが複数のバススレーブに対して同時アクセスができるクロスバースイッチバスを適用することも可能であり、その場合は、必ずしも補助記憶部２０５と主記憶部２０１がそれぞれ別々のバスに接続されている構成とはならない。
【００１８】
無線通信部２０６は、通信相手と無線通信を実行するために必要となる媒体アクセス制御や物理層に係る処理を実行する。無線通信部２０６は、通信制御部２０３からの制御情報を元に動作し、通信相手との送受信データを後述のＤＭＡバス２０９を使用して送受信する。データの受信時において、無線通信部２０６は受信した信号から、ＤＭＡ部２０８により転送が可能な受信データを生成する。無線通信部２０６の状態変化時には、通信制御部２０３に割り込み信号線２１０を介して割り込み信号が送信され、これにより状態変化の発生が無線通信部２０６から通信制御部２０３に通知される。
【００１９】
有線通信部２０７は、通信相手と有線通信を実行するために必要となる媒体アクセス制御や物理層に係る処理を実行する。有線通信部２０７は、通信制御部２０３からの制御情報を元に動作し、通信相手との送受信データを後述のＤＭＡバス２０９を使用して送受信する。データの受信時において、有線通信部２０７は受信した信号から、ＤＭＡ部２０８により転送が可能な受信データを生成する。有線通信部２０７の状態変化時には、通信制御部２０３に割り込み信号線２１１を介して割り込み信号が送信され、これにより状態変化の発生が有線通信部２０７から通信制御部２０３に通知される。
【００２０】
ＤＭＡ部２０８は、主記憶部２０１または補助記憶部２０５から読み出したデータを無線通信部２０６または有線通信部２０７に転送する。また、ＤＭＡ部２０８は、無線通信部２０６または有線通信部２０７から読み出した受信データを主記憶部２０１へＤＭＡにより転送する第１転送処理と、当該受信データを補助記憶部２０５にＤＭＡ転送する第２転送処理とを行うことができる。なお、後述するように、第２転送処理は、第１転送処理による受信データの転送中に実行され、当該受信データの一部のデータ（ヘッダ解析に必要な部分を含む）を補助記憶部２０５にＤＭＡ転送する。ＤＭＡバス２０９は、有線通信部２０７または無線通信部２０６とＤＭＡ部２０８との間で行われるＤＭＡによるデータの送受信時に使用される。
【００２１】
割り込み信号線２１０は、無線通信部２０６から通信制御部２０３へ割り込み信号を伝送する。無線通信部２０６は、外部よりデータを受信した場合や、異常を検知した場合に、通信制御部２０３へ割り込み信号をアサートするのに割り込み信号線２１０を使用する。同様に、割り込み信号線２１１は、有線通信部２０７から、通信制御部２０３へ割り込み信号を伝送する信号線である。有線通信部２０７は、外部よりデータを受信した場合や、異常を検知した場合に、通信制御部２０３への割り込み信号をアサートするのに割り込み信号線２１１を使用する。
【００２２】
割り込み信号線２１２は、ＤＭＡ部２０８から、通信制御部２０３へ割り込み信号を伝送するための信号線である。ＤＭＡ部２０８は、ＤＭＡ処理が終了した場合や処理途中にバスアクセスエラー等の異常を検知した場合に、通信制御部２０３への割り込み信号をアサートするのに割り込み信号線２１２を使用する。
【００２３】
割り込み信号線２１３は、主制御装置１０２から通信制御部２０３への割り込み信号を伝送する信号線である。主制御装置１０２は、通信制御部２０３に対して命令をセットしたい場合等に、割り込み信号線２１３を用いて通信制御部２０３への割り込み信号をアサートする。割り込み信号線２１４は、通信制御部２０３から主制御装置１０２へ割り込み信号を伝送する信号線である。通信制御部２０３において主制御装置１０２によってセットされた命令が終了したときや処理しきれないエラーが発生した場合に、通信制御部２０３は割り込み信号線２１４を用いて主制御装置１０２への割り込み信号をアサートする。
【００２４】
演算部２１５は、内部にレジスタと加算器を具備する。演算部２１５は、メインバス２０２に接続され、メインバス２０２に流れるデータの加算値をレジスタに格納する。すなわち、演算部２１５は、加算開始時のデータをレジスタに取り込むと、以降のデータをレジスタに格納されている値に加算して当該レジスタを更新していく処理を行う。演算部２１５は、誤り検出のために用いられるものであり、より具体的にはＴＣＰヘッダのチェックサム算出のために用いられる。
【００２５】
本実施形態では、主記憶部２０１はＬＳＩの外部に具備されるＤＲＡＭであり、補助記憶部２０５はＬＳＩ内部に具備されたオンチップＲＡＭとする。すなわち、主記憶部２０１は補助記憶部２０５と比較し、記憶容量に優位性があるが、アクセス速度に不利があるものとする。逆に言えば、補助記憶部２０５は主記憶部２０１よりも低い記憶容量であるが、通信制御部２０３によるアクセス速度に優位性がある。
【００２６】
次に通信制御部２０３の詳細な構成、動作について説明する。図３は、本実施形態の通信制御部２０３に実装されている各種機能をブロックとして表したものである。命令処理部３０１は、主制御装置１０２から受信した各種命令を解析し、解析結果を元にどのような処理を行うべきかを決定する。
【００２７】
通信上位層処理部３０２は、例えば、ＯＳＩ参照モデルでいうところのトランスポート層（第四層）よりも上位レイヤであるプロトコルについて処理を行う。トランスポート層処理部３０３は、ＯＳＩ参照モデルにおけるトランスポート層（第四層）に該当するプロトコルの処理を実行する。本実施形態では、ＴＣＰのプロトコルに対応しているものとする。ネットワーク層処理部３０４は、ＯＳＩ参照モデルにおけるネットワーク層（第三層）に該当するプロトコルの処理を実行する。本実施形態では、ＩＰプロトコルに対応しているものとする。
【００２８】
無線制御部３０５は、無線通信部２０６の初期設定や各種コマンド発行を行う。有線制御部３０６は、有線通信部２０７の初期設定や各種コマンド発行を行う。ＤＭＡ制御部３０７は、ＤＭＡ部２０８に対して転送の開始処理や転送モードの設定等を行う。
【００２９】
状態検知部３０８は、無線通信部２０６と有線通信部２０７とＤＭＡ部２０８と主制御装置１０２からの割り込み信号を受信することにより各種状態を検知する。なお、状態の検知はこのような割り込み信号を使用した構成に限られるものではなく、周知の種々の構成を用いることができる。たとえば、無線通信部２０６と有線通信部２０７とＤＭＡ部２０８と主制御装置１０２のそれぞれで状態を示すレジスタを用意しておく。そして、状態検知部３０８が定期的もしくは不定期に該当レジスタを監視することにより、上述したような割り込み信号を使用しなくても状態監視が実現可能となる。
【００３０】
通信制御装置１０３が主制御装置１０２に対して各種情報を送信する場合、通知部３０９は、送信すべき情報があることを主制御装置１０２への割り込み信号線２１４を使用して通知する。ただし、主制御装置１０２の構成よっては必ずしも割り込み信号線は必要ない。状態検知部３０８に関して上述したように主制御装置１０２が定期的に通信制御部２０３の状態を確認する動作をする場合には、割り込み信号の送信は不要である。本発明では、送信すべき情報が存在することの通知をいずれの方法で実施しても良い。
【００３１】
ローカルバス接続部３１０は、ローカルバス２０４のプロトコルに則った動作を行い、通信制御装置１０３内の各種機能部にアクセスするのに使用される。なお、通信制御装置１０３内の各種機能部から、通信制御部２０３へアクセスができるように構成されていても良い。メインバス接続部３１１は、メインバスのプロトコルに則った動作を行い、通信制御装置１０３の外部にある各種機能部にアクセスするのに使用される。なお、通信制御装置１０３の外部にある各種機能部から、通信制御部２０３へアクセス可能なように構成されていても良い。
【００３２】
例えば無線を使用してＷｅｂ閲覧をするようなときは、無線接続からＩＰ、ＴＣＰ、ＨＴＴＰといった各レイヤそれぞれで接続されなければならない。接続状態監視部３１２は上記の例のように各レイヤにおいての接続プロトコルや接続状態を監視する機能を備える。
【００３３】
次に、本実施形態の通信制御部２０３による処理手順について詳細に説明する。図４Ａ、図４Ｂは、通信制御装置１０３がＴＣＰ／ＩＰパケットを無線または有線を介して受信した場合における、通信制御部２０３の一連の処理手順をフローチャートで表したものである。
【００３４】
まず、通信制御部２０３の状態検知部３０８は、信号線２１０，２１１からの割り込み信号により、無線通信部２０６または有線通信部２０７からの受信通知を検知する（ステップ４０１）。その後、通信制御部２０３のＤＭＡ制御部３０７は、ＤＭＡ部２０８を起動する（ステップ４０２）。すると、ＤＭＡ部２０８は、無線通信部２０６もしくは有線通信部２０７からの受信データを主記憶部２０１と補助記憶部２０５へコピーすることを開始する。なお、ＤＭＡ部２０８は、補助記憶部２０５にはパケットのうちヘッダ情報に係る部分を転送し、主記憶部２０１には当該パケットの全体を転送する。たとえば、本実施形態では、データ転送の開始部分から、ＴＣＰヘッダまでが補助記憶部２０５にコピーされるものとする。従って、主記憶部２０１への転送が終了する前に補助記憶部２０５への転送は終了する。さらに、ＤＭＡ部２０８は、演算部２１５に対して、コピー対象のデータの加算演算の開始を要求する。なお、加算演算は主記憶部２０１へのデータ転送開始直後から、ＤＭＡバス２０９を通るデータ全てを加算対象として計算するものとして説明する。しかし、通信制御部２０３がＤＭＡバス２０９を通るデータのうち、ヘッダ情報またはデータ部のどちらであるかを把握できる場合は、必ずしもヘッダ情報に対して加算演算を行う必要は無い。
【００３５】
通信制御部２０３は、ＤＭＡ部２０８から補助記憶部２０５へのヘッダのコピーが完了したことを検知するまで待機する(ステップ４０３、４０４)。補助記憶部２０５へのヘッダのコピーが終了すると、ＤＭＡ部２０８は通信制御部２０３に対して補助記憶部２０５へのヘッダの転送完了を通知する。ヘッダの転送完了が通知された通信制御部２０３は、受信インターフェイスに応じて、すなわち有線または無線に応じて部分データ（ヘッダ）に対する解析処理を変更する（ステップ４０５）。この処理の切り替え後、以下に述べるEthernet（登録商標）II フレームのヘッダよりも前に付加されている、通信インターフェイスに依存するヘッダ処理を行う。即ち、通信制御部２０３は、受信インターフェイスが有線である時に、有線通信部２０７を使用する際に必要になるヘッダがある場合に、そのヘッダ解析を行う（ステップ４０７）。同様に、通信制御部２０３は、受信インターフェイスが無線である時に、無線通信部２０６を使用する際に必要になるヘッダがある場合に、そのヘッダ解析を行う（ステップ４０６）。なお、通信インターフェイスに依存するヘッダが存在しない場合はステップ４０６、４０７は省略しても良い。
【００３６】
次に、Ethernet（登録商標） IIフレームのヘッダ解析を行う（ステップ４０８）。ここでは特に上位層であるネットワーク層のプロトコルの特定処理を行うことになる。例えばEthernet（登録商標）IIでは、タイプフィールドに上位層のプロトコルタイプを識別するための情報が入っている。通信制御部２０３は、このプロトコルタイプ（本実施形態では、ＩＰか否か）に基づいて処理の分岐を行う（ステップ４０９）。なお、ステップ４０９で上位プロトコルが判断できない場合や、通信制御部２０３ではそれ以上処理が出来ないプロトコルと判断した場合は、この段階でステップ４１２に処理が進む。そして、通信制御部２０３は、主記憶部２０１へのＤＭＡ転送が終わっていることを確認した上で、主制御装置１０２にデータ受信を通知する（ステップ４１２、４１３、４１４）。
【００３７】
ステップ４０９のヘッダ解析によりＩＰパケットだと分かった場合は、通信制御部２０３はＩＰヘッダの解析と処理を行う（ステップ４１０）。ここで行われる解析には、次に列挙する項目の解析が含まれる。すなわち、ＩＰバージョン、ＩＰヘッダ長とデータ長、宛先ＩＰアドレス、ＩＰヘッダチェックサムが挙げられる。さらにＩＰフラグメントされている場合は、ここでリアセンブル処理が行われる。詳細なリアセンブル処理方法については割愛するが、ここではまだ主記憶部２０１にデータが全て転送完了していなくてもリアセンブルが行えるよう、アドレスポインタ管理によるリアセンブル処理を行うのが良い。
【００３８】
次に、上位プロトコル種別によって処理が分岐する（ステップ４１１）。上位プロトコルがＴＣＰではなかった場合は、通信制御部２０３での受信パケットに対するこれ以上の処理は出来ない。したがって、通信制御部２０３は、ＤＭＡ部２０８による主記憶部２０１への転送完了を待ち（ステップ４１２，４１４）、主制御装置１０２に受信通知を行う（ステップ４１３）。ＴＣＰであった場合は、通信制御部２０３は、更にＴＣＰヘッダの解析・処理を行う（ステップ４１５）。ＴＣＰヘッダの解析・処理手順については詳細な説明を割愛するが、ＩＰヘッダと同様にＴＣＰヘッダも補助記憶部２０５にすでに格納されているので、ＴＣＰヘッダ内にあるデータ長とチェックサム以外の解析については可能な状態である。そこで、データ長とチェックサム以外の項目に対し、必要な解析と処理から実行する。例えば、その解析の時点で自分宛ではない場合や誤りがあることが分かった場合は、ＤＭＡ転送を中止させるといったことが可能である。
【００３９】
そして、ＴＣＰチェックサム判定のために次の準備をしておく。まず、通信制御部２０３は、ＴＣＰチェックサム演算用のＴＣＰ擬似ヘッダを作成し、その加算値を求めておく（ステップ４１６）。ＴＣＰ擬似ヘッダにＴＣＰデータ部の情報は必要ないため、主記憶部２０１へのＤＭＡ転送が終了していなくともＴＣＰ擬似ヘッダの準備は可能である。次に、通信制御部２０３は、演算部２１５で加算処理を行ってしまっている、ＴＣＰチェックサム演算対象領域以外の領域の加算値を求める（ステップ４１７）。演算部２１５はメインバス２０２に現れるデータの最初から加算処理を行っている。そのため、無線通信部２０６または有線通信部２０７にかかる情報やＩＰヘッダといった、ＴＣＰチェックサム演算対象領域ではない情報の加算が行われている状態である。従って、通信制御部２０３は、その差分をとるためにこれら対象外領域の加算を行っておく。
【００４０】
ＴＣＰヘッダ内にあるデータ長とチェックサム以外の解析・処理が終了した段階で、もし主記憶部２０１へのＤＭＡ転送が終了していない場合は、通信制御部２０３は、当該ＤＭＡ転送が終了するまで待機する（ステップ４１８、４２６）。他方、通信制御部２０３は、ＤＭＡ転送が終了したことを検知した場合は、演算部２１５の加算演算処理も終了しているので、その結果を確認する（ステップ４１９）。
【００４１】
そして、通信制御部２０３は、
・ＴＣＰ擬似ヘッダの加算結果（ステップ４１６）と、
・ＴＣＰチェックサム演算対象領域以外の領域の加算結果（ステップ４１７）と、
・演算部２１５の加算結果（ステップ４１９）と
を元にＴＣＰチェックサムを求め、受信時のデータ誤りが発生していないかチェックを行う（ステップ４２０）。チェックサムの結果より誤りがあるか否かの判断で処理が分岐する（ステップ４２１）。誤りが無いのであれば、通信制御部２０３は、受信したＴＣＰパケットは有効パケットであるとして扱う（ステップ４２２）。誤りが発生している場合は、通信制御部２０３は、受信したパケットを破棄する（ステップ４２３）。
【００４２】
こうして１つのパケットを受信してからの一連の処理が終わると、通信制御部２０３は、ＴＣＰデータサイズが主制御装置１０２から要求された所定サイズに達したかどうかを判断する（ステップ４２４）。通信制御部２０３は、ＴＣＰデータサイズが所定サイズに達したと判断すると、主制御装置１０２が用意した受信バッファにＴＣＰデータを格納し、通知を行う（ステップ４２５）。その後、ＴＣＰを使用した通信を終了する。他方、まだ所定のサイズに達していないと判断された場合は、引き続き受信処理を継続するべく、処理をステップ４０１に戻す。
【００４３】
次に、データ受信時における通信制御装置１０３の各機能ブロック間で送受信される制御情報について説明する。図５は、有線通信機器１０９からＴＣＰ／ＩＰデータを有線を介して受信する時の、ＤＭＡ部２０８、通信制御部２０３、有線通信部２０７、演算部２１５、および有線通信機器１０９の間でやり取りされるデータや制御情報を示した図である。ここで、ＤＭＡ部２０８、通信制御部２０３、有線通信部２０７、有線通信機器１０９はすべてリセット解除や初期化がされており、正常動作状態であるものとする。
【００４４】
まず、有線通信機器１０９より、有線通信を介してＴＣＰ／ＩＰパケットが送信されると（５０１）、有線通信部２０７は、受信処理を開始する（５０２）。正常に受信が行われると、有線通信部２０７は、通信制御部２０３に、受信したことを通知するために割り込み信号を送信する（５０３）。なお、この送信は、割り込み信号線２１１を使用して行われる。割り込み信号線２１１からの割り込み信号を受信した通信制御部２０３は、有線通信部２０７に割り込み通知要因の問合せを行う（５０４）。割り込み通知要因が、データの受信によるものであると分かった場合、通信制御部２０３は、有線通信部２０７が受信したデータを主記憶部２０１と補助記憶部２０５に転送するようにＤＭＡ部２０８に命令をセットする（５０５）。ここでセットされる命令は、主記憶部２０１の転送先アドレスと転送データサイズ、補助記憶部２０５の転送先アドレスと転送データサイズである。なお、これらのセットされる内容の一部またはすべてが予めＤＭＡ部２０８に事前に決定されていても良い。たとえば、補助記憶部２０５のサイズが１パケット分のヘッダ情報しか入らないサイズである場合は、補助記憶部２０５へのアドレスは固定となる。従って、そのようなアドレスをＤＭＡ部２０８が事前に把握している場合、外部からの設定は不要となる。またパケットが特定のプロトコルと決まっている場合、ヘッダ部の最大長も決まっているので、その最大長を常に補助記憶部２０５へ格納する仕組みにＤＭＡ部２０８がなっていれば、サイズ設定も不要となる。こうして、通信制御部２０３はＤＭＡ部２０８による受信データの転送を制御する。また、有線通信部２０７に割り込み要因確認を行った際に受信データサイズが分からないような場合は、転送データサイズではなく、転送先の空きサイズを設定しても良い。なお、補助記憶部２０５への転送データサイズは、少なくともパケットの先頭からＴＣＰヘッダまでのデータサイズに相当するものとする。
【００４５】
ＤＭＡ部２０８は、命令がセットされると同時に演算部２１５に対して加算演算開始の命令をセットする（５０６）。たとえば、ＤＭＡ部２０８の内部に演算部２１５が実装されている場合は、通信制御部２０３からＤＭＡ部２０８にセットした命令を元に演算部２１５にも演算の開始を命令セットするように構成することができる。また、ＤＭＡ部２０８と別に演算部２１５を具備した場合には、ＤＭＡ部２０８へ命令をセットする前に演算部２１５に演算開始命令をセットする方法が容易である。
【００４６】
データ転送命令を受信したＤＭＡ部２０８は、有線通信部２０７から主記憶部２０１へのデータ転送（第１転送処理）を開始する（５０７）。また、ＤＭＡ部２０８は、有線通信部２０７から補助記憶部２０５へのデータ転送（第２転送処理）も開始する（５０７）。さらに、同時に演算部２１５がメインバス２０２に転送されるデータをスヌープして行う加算演算を開始する（５０８）。
【００４７】
ここで、演算部２１５がどのように演算を行うかについて、図６を用いて説明する。図６の（Ａ）は一般的なバス構成のデータ書き込み時における動作について示すタイムチャートである。６００はバスクロックである。６０１はアドレスバス、６０２はデータバス、６０３はリクエスト信号、６０４は応答信号である。まず、バスにアクセスするもの（以後バスマスタ）は、書き込みアドレスをアドレスバス６０１にセットし、書き込む値をデータバス６０２にセットした状態でリクエスト信号６０３をバスに対して送信する。書き込みアドレスを受け取った、バスからアクセスをうけるもの（以後バススレーブ）は、書き込みが完了したときに応答信号６０４を返す。応答信号を受け取ったバスマスタは、次のアクセスができるようになる。
【００４８】
図６の（Ｂ）は一般的なバスのデータ読み出し時における動作について説明するタイムチャートである。６０５はバスクロックである。６０６はアドレスバス、６０７はリクエスト信号、６０８は応答信号、６０９はデータバスである。まず、バスマスタは読み出しアドレスをアドレスバス６０６にセットし、リクエスト信号６０７を送信する。読み出しアドレスを受け取ったバススレーブは、バスマスタに渡すデータをデータバス６０９にセットし、そのセットが終わったことを告げるため、応答信号６０８を送信する。応答信号を受け取ったバスマスタは、応答信号６０８のアサートからバスに規定されたサイクル数以内にデータバス６０９上の値を読むことによりデータ読み出し動作は完了する。
【００４９】
図６の（Ａ）または図６の（Ｂ）のバスをスヌープして加算演算を行う演算部２１５は次の動作を行う。例えば、演算部２１５がＤＭＡバス２０９に接続している場合は、ＤＭＡバス２０９はデータ受信時に、図６の（Ｂ）の読み出し動作を行うので、図６の（Ｂ）の矢印の位置、すなわち応答信号６０８の直後でデータをスヌープすると良い。また、図２のように演算部２１５がメインバス２０２に接続している場合は、データ受信時に図６の（Ａ）の書き込み動作を行うので、図６の（Ａ）の矢印の位置、すなわちリクエスト信号６０３の直後でデータバス６０２をスヌープすると良い。
【００５０】
図５に戻り説明を続ける。ＤＭＡ部２０８は、有線通信部２０７から補助記憶部２０５への、受信データの所定サイズ分のコピー（データ転送）を終了すると（５０９）、これを通信制御部２０３に通知する（５１０）。ここで、所定サイズとは、データ転送の開始部分からＴＣＰヘッダまでのデータサイズである。補助記憶部２０５への所定サイズのデータのコピーが完了した旨の通知を受けた通信制御部２０３は、補助記憶部２０５にコピーされたデータにアクセスし、ヘッダの解析を始める（５１１）。図示の例では、有線通信部２０７からのデータのみを処理しているため、無線通信からのデータ受信か有線通信からのデータ受信かの判断は必要ない。そこで有線通信部２０７にかかるヘッダ情報とその続きにEthernet（登録商標） IIのフレーム構成となっていることを前提に解析を始める。なお、有線通信部２０７にかかるヘッダ情報とは、有線通信部２０７の状態監視や制御に必要な情報であるが、フォーマットは通信制御部２０３が解析可能であればどのような型でも良いし、必要なければ使用しなくとも良い。
【００５１】
有線通信部２０７にかかるヘッダ情報の解析に続いて、データリンク層の解析を行い、さらにネットワーク層の解析を行う。例えばＩＰ通信であればＩＰヘッダの解析を行い、そしてトランスポート層の種別を判定し所定のプロトコル解析を行う。図４Ａ、図４Ｂのフローチャートで説明したように、本例では、ＴＣＰパケット受信を例にしているので、ＴＣＰヘッダのデータ長、チェックサム以外について解析を行う。
【００５２】
また、ＴＣＰヘッダのチェックサムを解析するために、以下の処理を行う。演算部２１５はＤＭＡ部２０８の転送と同時に演算を開始しているため、ステップ４１７で説明したように、ＴＣＰチェックサム演算に必要ではないデータの加算値（以後、不要加算値）を予め用意しておく（５１２）。また、ステップ４１６で説明したように、ＴＣＰチェックサム演算に必要となるＴＣＰ擬似ヘッダをＤＭＡ部２０８から主記憶部２０１へのデータ転送が終わる前に用意しておき、合わせて擬似ヘッダの総和も計算しておく（５１３）。主記憶部２０１へのＤＭＡ転送が終了したときに（５１４）、ＤＭＡ部２０８は、通信制御部２０３にＤＭＡ転送が終了したことを通信制御部２０３に通知する（５１５）。ＤＭＡ転送が終了するのとほぼ同時に演算部２１５の演算結果が求められているので（５１６）、通信制御部２０３は、その加算演算結果を参照する（５１７）。そして、先に求めた不要加算値と擬似ヘッダサム値と演算結果を元にチェックサムを求めて誤りの有無を判定し（５１８）、最終的に受信したパケットが有効であったか否か判断をする（５１９）。
【００５３】
以上、有線通信部２０７からＴＣＰ／ＩＰパケットを受信した場合について説明したが、無線通信部２０６からＴＣＰ／ＩＰパケットを受信した場合についても同様である。すなわち、無線通信部２０６からの受信通知を受け、それを元にＤＭＡ転送を開始するまでは同様の手順でよい。異なるのは補助記憶部２０５で解析を行う最初の部分が有線通信部２０７に係る情報ではなく、無線通信部２０６にかかる情報に置き換わる点である。この情報の処理が終了すれば、後の処理手順は有線通信の場合と同様で良い。
【００５４】
また、上記は全てＴＣＰ／ＩＰパケットが来ることを想定している場合の受信方法であり、具体的には、データ長が１５００bytes前後（Ethernet（登録商標）のＭＴＵに相当）が予想される場合の受信方法である。しかし、例えば無線を使用してＴＣＰ／ＩＰパケットを使用した通信を行う場合、まず無線区間での接続設定等を行う必要がある。この段階でも無線通信部２０６と通信制御部２０３との間で各種データのやり取りが必要である。このとき、ＴＣＰ／ＩＰのパケットよりもデータ長の長いデータは来ないことが分かっている。またシステムによっては、主制御装置１０２が必要とするデータではないことも分かっている。このような場合は主記憶部２０１に受信したデータを格納する必要がないので、通信制御部２０３はＤＭＡ部２０８による主記憶部２０１への受信データのＤＭＡ転送を禁止する。すなわち、通信制御部２０３は、ＤＭＡ部２０８に対して補助記憶部２０５のみへの受信データのＤＭＡ転送を指示することにより、必要のない転送を禁止することができる。これにより、消費電力を削減できる。このＤＭＡ部２０８へ、どのように指示をするかは、接続状態監視部３１２を具備することにより実現できる。接続状態監視部３１２により接続処理の進行状態から実際の接続状態まで管理し、その状態に応じて受信が予想される受信データの種別、サイズに応じてＤＭＡ部２０８への転送方法を指定することにより可能となる。
【００５５】
以上説明したように、本実施形態によれば、通信制御装置において、ネットワークからデータを受信したときの処理の効率が向上する。すなわち、本実施形態によれば、受信データとその一部のデータが、それぞれＤＭＡにより第１記憶装置である主記憶部２０１と第２記憶装置である補助記憶部２０５へ同時にコピーされる。そして、通信制御部２０３は、主記憶部２０１への受信データのＤＭＡ転送を実行中に、補助記憶部２０５に記憶された上記一部のデータを用いて当該受信データのヘッダ解析を行うことができる。ここで、主記憶部２０１と補助記憶部２０５はそれぞれ別々のバスに接続されている。すなわち、ヘッダ解析の際には、主記憶部２０１とは独立した補助記憶部２０５にコピーされたヘッダのデータが用いられるので、メモリアクセスの集中が防止され、処理速度が向上する。なお、第２転送処理はヘッダ部分のみについて行われるので、第２転送処理を終えた後に第１転送処理をおこなうようにして、第１転送処理とヘッダ解析を同時に行うように構成することも可能である。
【００５６】
また、受信データのうち必要となるヘッダのサイズだけ抽出して補助記憶部２０５へコピーするようにしたため、補助記憶部２０５のメモリサイズを低減することが可能となる。また、必要最低限の転送サイズに留めるため、転送に必要となる消費電力も削減できる。さらに、通信制御部２０３が高速にアクセスすることができる補助記憶部２０５にヘッダデータが記憶されるため、ヘッダ解析処理を高速に行うことができる。このように、上記実施形態によれば、所定の通信プロトコルにしたがって外部装置からデータを受信する際の、通信処理の効率を向上することができる。
【００５７】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005729938.tif 000002
【図２】
0005729938.tif 000003
【図３】
0005729938.tif 000004
【図４Ａ】
0005729938.tif 000005
【図４Ｂ】
0005729938.tif 000006
【図５】
0005729938.tif 000007
【図６】
0005729938.tif 000008