説明

通信制御装置及び方法

【課題】効率的なプロトコル処理を実現する通信制御装置を提供することにより、所定の通信プロトコルにしたがって外部装置からデータを受信する際の、通信処理の効率を向上する。
【解決手段】他機器との間で無線または有線による通信を行う通信制御装置は、他機器から受信した信号から受信データを生成する通信部と、通信部から主記憶部と主記憶部とは異なるバスに接続された補助記憶部とへDMAによるデータ転送を行う転送部とを有する。通信制御部は、転送部を用いて主記憶部へ受信データを転送する第1転送処理を実行し、この第1転送処理の実行中に、当該受信データのうちのヘッダを含む一部のデータを転送部を用いて補助記憶部へ転送する第2転送処理を実行する。そして、第2転送処理による補助記憶部へのデータの転送が終了すると、補助記憶部に記憶されたデータを用いてヘッダ解析が行われる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信制御装置および方法に関する。
【背景技術】
【0002】
近年、様々な機器を、有線/無線ネットワークに直接に接続する機会が増加している。そのような機器の例として、携帯端末、プリンタ、カメラ、コピー機、ディスプレイ、ビデオ機器、音響装置等がある。これらの機器に搭載されるメインCPUは、パーソナルコンピュータに搭載されるメインCPUと比較して低処理能力である場合が多い。そのような機器資源を利用し、ネットワークにおいて標準的に使用されているTCP/UDP/IPといったインターネット標準プロトコルを実現しようとした場合には、次の2つの方法が考えられる。
【0003】
第一の方法はTCP/IPのプロトコルスタックをメインCPUで実行する方法である。この場合、メインCPUは通信処理とアプリケーション処理との少なくとも2つを実行する必要があるため、両者を同時に実行するような場合、どちらかもしくは両方の処理スピードが低下する可能性がある。第二の方法は、メインCPUから通信処理を独立させる方法である。詳細には、TOE(TCP/IPオフロードエンジン)といったプロトコル処理に特化した補助的デバイスを利用する方法や、メインCPUとは独立したサブCPUでプロトコルスタックを実行するといった方法がある。この方法は、メインCPUから通信処理を分離させているため、アプリケーション処理と通信処理の各々が他の処理に与え得る処理能力への影響が小さい。
【0004】
特許文献1には、TOEについて記載されている。特許文献1では、アプリケーションを実行するアプリCPUとのインターフェイスを持ち、アプリCPUから入力されるアプリケーションデータを優先的に送信する調停機能を持たせたTCP/IPエンジンが記載されている。また、アプリCPUとTCP/IPエンジンとの間におけるアプリケーションデータの受け渡しにDMA(Direct Memory Access)を使用する方法が記載されている。
【0005】
また、特許文献2には、通信処理におけるデータ処理方法が記載されている。特許文献2では、受信したデータパケットをヘッダとデータに分離し、それぞれ別の領域にコピーして扱う方法が記載されている。また、特許文献3には、通信制御装置に適用できる集積回路装置が記載されている。特許文献3では、受信パケットを解析し、解析結果を元に当該パケットをメモリ上のどのエリアにコピーするか決定し、決定したエリアへ当該パケットをDMAにより転送することが記載されている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2003−143221号公報
【特許文献2】特開2005−137022号公報
【特許文献3】特開2006−050503号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
ネットワークからヘッダ部とデータ部を含むパケットを受信した場合、まずパケットの解析を行うために当該パケットを受信バッファへコピーするのが一般的である。ここで、受信パケットのうち解析対象がヘッダ部のみである場合に、ヘッダ部からデータ部までのすべてを受信バッファへコピーし終えてから解析を開始すると、解析を開始するまでに無駄な待ち時間が発生することになる。このことは通信のスループットを低下させる可能性がある。
【0008】
受信バッファへのパケットのコピーを、CPU等の解析機能を有するデバイスとは独立したデバイス、例えばDMAC(Direct Memory Access Controller)で実行することにより、コピー処理終了前に解析を実行することはできる。すなわち、DMACでパケットのコピーを行っている間であっても、DMAによるヘッダ部のコピー終了後に当該ヘッダ部の解析をCPUが行うようにすることで、解析処理とデータ部のコピー処理を並列させることが出来る。しかし、ヘッダ部とデータ部をすべて同じメモリ上にある受信バッファへコピーした場合には、以下の課題が発生する。すなわち、データ部のコピーを行うためのDMAによるメモリアクセスと、ヘッダ解析のためのCPUによるメモリアクセスが競合するため処理効率が低下する可能性がある。
【0009】
本発明は、上記の課題に鑑みてなされたものであり、所定の通信プロトコルにしたがって外部装置からデータを受信する際の、通信処理の効率を向上することを目的とする。
【課題を解決するための手段】
【0010】
上記の目的を達成するための本発明の一態様による通信制御装置は以下の構成を備える。すなわち、
他機器との間で無線または有線による通信を行う通信制御装置であって、
他機器から受信した信号から受信データを生成する通信手段と、
前記通信手段から第1記憶手段と前記第1記憶手段とは異なるバスに接続された第2記憶手段とへDMAによるデータ転送を行う転送手段と、
前記転送手段を用いて前記第1記憶手段へ前記受信データを転送する第1転送処理を実行し、前記第1転送処理の実行中に、当該受信データのうちのヘッダを含む一部のデータを前記転送手段を用いて前記第2記憶手段へ転送する第2転送処理を実行する制御手段と、
前記第2転送処理による前記第2記憶手段への前記一部のデータの転送が終了すると、前記第2記憶手段に記憶された前記一部のデータを用いてヘッダ解析を行う解析手段とを備える。
【発明の効果】
【0011】
本発明によれば、所定の通信プロトコルにしたがって外部装置からデータを受信する際の、通信処理の効率が向上する。
【図面の簡単な説明】
【0012】
【図1】実施形態によるシステム構成例を示す図。
【図2】第一実施形態における通信制御装置の構成例を示すブロック図。
【図3】第一実施形態における通信制御部の機能構成例を示すブロック図。
【図4A】、
【図4B】第一実施形態における通信制御部の処理を表したフローチャート。
【図5】第一実施形態における通信制御装置のデータフロー図。
【図6】DMA転送部の使用時におけるバス動作の一例を示す図。
【発明を実施するための形態】
【0013】
以下、添付の図面を参照して、本発明の好適な実施形態を説明する。なお、以後の説明では、有線規格にEthernet(登録商標) II、無線規格にIEEE802.11を例に挙げて説明するが、本発明が適用できる範囲はこれに留まるわけではないことを先に述べておく。
【0014】
[第1実施形態]
図1は、本実施形態にかかる通信制御装置103を適用したシステム例を示す図である。電子機器101は、通信制御装置103と主制御装置102を収容している。主制御装置102は、電子機器101のアプリケーションを制御するための装置である。主制御装置102は、電子機器101が例えばテレビであれば表示のためのアプリケーションを、プリンタであれば印刷のためのアプリケーションを、カメラであれば撮像のためのアプリケーションを担う。
【0015】
通信制御装置103は、主制御装置102では行わない電子機器101の通信に係る処理を担う。なお、本実施形態では、通信制御装置103が無線通信と有線通信の両方を使用できるものとして説明する。アンテナ104は無線通信のための外部インターフェイスの例であり、ケーブルソケット105は有線通信のための外部インターフェイスの例である。各通信インターフェイスは、各通信媒体を介して他機器とネットワークを構築する。たとえば、無線通信の場合には、アンテナ104から、大気106を介して、無線通信機器108との無線ネットワークが構築される。有線通信の場合には、ケーブルソケット105に接続されたケーブル107を介して、他の有線通信機器109との有線ネットワークが構築される。
【0016】
図2は、電子機器101の内部構成例を表したブロック図である。図2において、主記憶部201は、主制御装置102と通信制御装置103それぞれがアクセス可能な記憶部である。データ送信に際しては、主制御装置102は、通信相手に送信したいデータを主記憶部201に格納し、通信制御装置103は、主記憶部201に格納されたデータを所定のプロトコル処理により通信パケット化して、通信相手に送信する。また、主記憶部201は、通信制御装置103が、無線通信機器108または有線通信機器109より受信したデータに所定のプロトコル処理を施した後、主制御装置102へ送信する際にも使用される。
【0017】
メインバス202は、主制御装置102と通信制御装置103と主記憶部201とを接続しているバスである。通信制御部203は、通信制御装置103全体の状態監視や制御を行う。通信制御部203の詳細な動作については後述する。ローカルバス204には、通信制御装置103に存在する各種モジュールが接続される。補助記憶部205は、通信制御装置103が各種処理を実行するために必要となるワークメモリとして使用される。なお、主記憶部201はメインバス202に、補助記憶部205はローカルバス204に接続されている。すなわち、主記憶部201と補助記憶部205とはそれぞれ異なるバスに接続された記憶部である。ただし、本発明はこのような構成に限られるものではない。たとえば、複数のバスマスタが複数のバススレーブに対して同時アクセスができるクロスバースイッチバスを適用することも可能であり、その場合は、必ずしも補助記憶部205と主記憶部201がそれぞれ別々のバスに接続されている構成とはならない。
【0018】
無線通信部206は、通信相手と無線通信を実行するために必要となる媒体アクセス制御や物理層に係る処理を実行する。無線通信部206は、通信制御部203からの制御情報を元に動作し、通信相手との送受信データを後述のDMAバス209を使用して送受信する。データの受信時において、無線通信部206は受信した信号から、DMA部208により転送が可能な受信データを生成する。無線通信部206の状態変化時には、通信制御部203に割り込み信号線210を介して割り込み信号が送信され、これにより状態変化の発生が無線通信部206から通信制御部203に通知される。
【0019】
有線通信部207は、通信相手と有線通信を実行するために必要となる媒体アクセス制御や物理層に係る処理を実行する。有線通信部207は、通信制御部203からの制御情報を元に動作し、通信相手との送受信データを後述のDMAバス209を使用して送受信する。データの受信時において、有線通信部207は受信した信号から、DMA部208により転送が可能な受信データを生成する。有線通信部207の状態変化時には、通信制御部203に割り込み信号線211を介して割り込み信号が送信され、これにより状態変化の発生が有線通信部207から通信制御部203に通知される。
【0020】
DMA部208は、主記憶部201または補助記憶部205から読み出したデータを無線通信部206または有線通信部207に転送する。また、DMA部208は、無線通信部206または有線通信部207から読み出した受信データを主記憶部201へDMAにより転送する第1転送処理と、当該受信データを補助記憶部205にDMA転送する第2転送処理とを行うことができる。なお、後述するように、第2転送処理は、第1転送処理による受信データの転送中に実行され、当該受信データの一部のデータ(ヘッダ解析に必要な部分を含む)を補助記憶部205にDMA転送する。DMAバス209は、有線通信部207または無線通信部206とDMA部208との間で行われるDMAによるデータの送受信時に使用される。
【0021】
割り込み信号線210は、無線通信部206から通信制御部203へ割り込み信号を伝送する。無線通信部206は、外部よりデータを受信した場合や、異常を検知した場合に、通信制御部203へ割り込み信号をアサートするのに割り込み信号線210を使用する。同様に、割り込み信号線211は、有線通信部207から、通信制御部203へ割り込み信号を伝送する信号線である。有線通信部207は、外部よりデータを受信した場合や、異常を検知した場合に、通信制御部203への割り込み信号をアサートするのに割り込み信号線211を使用する。
【0022】
割り込み信号線212は、DMA部208から、通信制御部203へ割り込み信号を伝送するための信号線である。DMA部208は、DMA処理が終了した場合や処理途中にバスアクセスエラー等の異常を検知した場合に、通信制御部203への割り込み信号をアサートするのに割り込み信号線212を使用する。
【0023】
割り込み信号線213は、主制御装置102から通信制御部203への割り込み信号を伝送する信号線である。主制御装置102は、通信制御部203に対して命令をセットしたい場合等に、割り込み信号線213を用いて通信制御部203への割り込み信号をアサートする。割り込み信号線214は、通信制御部203から主制御装置102へ割り込み信号を伝送する信号線である。通信制御部203において主制御装置102によってセットされた命令が終了したときや処理しきれないエラーが発生した場合に、通信制御部203は割り込み信号線214を用いて主制御装置102への割り込み信号をアサートする。
【0024】
演算部215は、内部にレジスタと加算器を具備する。演算部215は、メインバス202に接続され、メインバス202に流れるデータの加算値をレジスタに格納する。すなわち、演算部215は、加算開始時のデータをレジスタに取り込むと、以降のデータをレジスタに格納されている値に加算して当該レジスタを更新していく処理を行う。演算部215は、誤り検出のために用いられるものであり、より具体的にはTCPヘッダのチェックサム算出のために用いられる。
【0025】
本実施形態では、主記憶部201はLSIの外部に具備されるDRAMであり、補助記憶部205はLSI内部に具備されたオンチップRAMとする。すなわち、主記憶部201は補助記憶部205と比較し、記憶容量に優位性があるが、アクセス速度に不利があるものとする。逆に言えば、補助記憶部205は主記憶部201よりも低い記憶容量であるが、通信制御部203によるアクセス速度に優位性がある。
【0026】
次に通信制御部203の詳細な構成、動作について説明する。図3は、本実施形態の通信制御部203に実装されている各種機能をブロックとして表したものである。命令処理部301は、主制御装置102から受信した各種命令を解析し、解析結果を元にどのような処理を行うべきかを決定する。
【0027】
通信上位層処理部302は、例えば、OSI参照モデルでいうところのトランスポート層(第四層)よりも上位レイヤであるプロトコルについて処理を行う。トランスポート層処理部303は、OSI参照モデルにおけるトランスポート層(第四層)に該当するプロトコルの処理を実行する。本実施形態では、TCPのプロトコルに対応しているものとする。ネットワーク層処理部304は、OSI参照モデルにおけるネットワーク層(第三層)に該当するプロトコルの処理を実行する。本実施形態では、IPプロトコルに対応しているものとする。
【0028】
無線制御部305は、無線通信部206の初期設定や各種コマンド発行を行う。有線制御部306は、有線通信部207の初期設定や各種コマンド発行を行う。DMA制御部307は、DMA部208に対して転送の開始処理や転送モードの設定等を行う。
【0029】
状態検知部308は、無線通信部206と有線通信部207とDMA部208と主制御装置102からの割り込み信号を受信することにより各種状態を検知する。なお、状態の検知はこのような割り込み信号を使用した構成に限られるものではなく、周知の種々の構成を用いることができる。たとえば、無線通信部206と有線通信部207とDMA部208と主制御装置102のそれぞれで状態を示すレジスタを用意しておく。そして、状態検知部308が定期的もしくは不定期に該当レジスタを監視することにより、上述したような割り込み信号を使用しなくても状態監視が実現可能となる。
【0030】
通信制御装置103が主制御装置102に対して各種情報を送信する場合、通知部309は、送信すべき情報があることを主制御装置102への割り込み信号線214を使用して通知する。ただし、主制御装置102の構成よっては必ずしも割り込み信号線は必要ない。状態検知部308に関して上述したように主制御装置102が定期的に通信制御部203の状態を確認する動作をする場合には、割り込み信号の送信は不要である。本発明では、送信すべき情報が存在することの通知をいずれの方法で実施しても良い。
【0031】
ローカルバス接続部310は、ローカルバス204のプロトコルに則った動作を行い、通信制御装置103内の各種機能部にアクセスするのに使用される。なお、通信制御装置103内の各種機能部から、通信制御部203へアクセスができるように構成されていても良い。メインバス接続部311は、メインバスのプロトコルに則った動作を行い、通信制御装置103の外部にある各種機能部にアクセスするのに使用される。なお、通信制御装置103の外部にある各種機能部から、通信制御部203へアクセス可能なように構成されていても良い。
【0032】
例えば無線を使用してWeb閲覧をするようなときは、無線接続からIP、TCP、HTTPといった各レイヤそれぞれで接続されなければならない。接続状態監視部312は上記の例のように各レイヤにおいての接続プロトコルや接続状態を監視する機能を備える。
【0033】
次に、本実施形態の通信制御部203による処理手順について詳細に説明する。図4A、図4Bは、通信制御装置103がTCP/IPパケットを無線または有線を介して受信した場合における、通信制御部203の一連の処理手順をフローチャートで表したものである。
【0034】
まず、通信制御部203の状態検知部308は、信号線210,211からの割り込み信号により、無線通信部206または有線通信部207からの受信通知を検知する(ステップ401)。その後、通信制御部203のDMA制御部307は、DMA部208を起動する(ステップ402)。すると、DMA部208は、無線通信部206もしくは有線通信部207からの受信データを主記憶部201と補助記憶部205へコピーすることを開始する。なお、DMA部208は、補助記憶部205にはパケットのうちヘッダ情報に係る部分を転送し、主記憶部201には当該パケットの全体を転送する。たとえば、本実施形態では、データ転送の開始部分から、TCPヘッダまでが補助記憶部205にコピーされるものとする。従って、主記憶部201への転送が終了する前に補助記憶部205への転送は終了する。さらに、DMA部208は、演算部215に対して、コピー対象のデータの加算演算の開始を要求する。なお、加算演算は主記憶部201へのデータ転送開始直後から、DMAバス209を通るデータ全てを加算対象として計算するものとして説明する。しかし、通信制御部203がDMAバス209を通るデータのうち、ヘッダ情報またはデータ部のどちらであるかを把握できる場合は、必ずしもヘッダ情報に対して加算演算を行う必要は無い。
【0035】
通信制御部203は、DMA部208から補助記憶部205へのヘッダのコピーが完了したことを検知するまで待機する(ステップ403、404)。補助記憶部205へのヘッダのコピーが終了すると、DMA部208は通信制御部203に対して補助記憶部205へのヘッダの転送完了を通知する。ヘッダの転送完了が通知された通信制御部203は、受信インターフェイスに応じて、すなわち有線または無線に応じて部分データ(ヘッダ)に対する解析処理を変更する(ステップ405)。この処理の切り替え後、以下に述べるEthernet(登録商標)II フレームのヘッダよりも前に付加されている、通信インターフェイスに依存するヘッダ処理を行う。即ち、通信制御部203は、受信インターフェイスが有線である時に、有線通信部207を使用する際に必要になるヘッダがある場合に、そのヘッダ解析を行う(ステップ407)。同様に、通信制御部203は、受信インターフェイスが無線である時に、無線通信部206を使用する際に必要になるヘッダがある場合に、そのヘッダ解析を行う(ステップ406)。なお、通信インターフェイスに依存するヘッダが存在しない場合はステップ406、407は省略しても良い。
【0036】
次に、Ethernet(登録商標) IIフレームのヘッダ解析を行う(ステップ408)。ここでは特に上位層であるネットワーク層のプロトコルの特定処理を行うことになる。例えばEthernet(登録商標)IIでは、タイプフィールドに上位層のプロトコルタイプを識別するための情報が入っている。通信制御部203は、このプロトコルタイプ(本実施形態では、IPか否か)に基づいて処理の分岐を行う(ステップ409)。なお、ステップ409で上位プロトコルが判断できない場合や、通信制御部203ではそれ以上処理が出来ないプロトコルと判断した場合は、この段階でステップ412に処理が進む。そして、通信制御部203は、主記憶部201へのDMA転送が終わっていることを確認した上で、主制御装置102にデータ受信を通知する(ステップ412、413、414)。
【0037】
ステップ409のヘッダ解析によりIPパケットだと分かった場合は、通信制御部203はIPヘッダの解析と処理を行う(ステップ410)。ここで行われる解析には、次に列挙する項目の解析が含まれる。すなわち、IPバージョン、IPヘッダ長とデータ長、宛先IPアドレス、IPヘッダチェックサムが挙げられる。さらにIPフラグメントされている場合は、ここでリアセンブル処理が行われる。詳細なリアセンブル処理方法については割愛するが、ここではまだ主記憶部201にデータが全て転送完了していなくてもリアセンブルが行えるよう、アドレスポインタ管理によるリアセンブル処理を行うのが良い。
【0038】
次に、上位プロトコル種別によって処理が分岐する(ステップ411)。上位プロトコルがTCPではなかった場合は、通信制御部203での受信パケットに対するこれ以上の処理は出来ない。したがって、通信制御部203は、DMA部208による主記憶部201への転送完了を待ち(ステップ412,414)、主制御装置102に受信通知を行う(ステップ413)。TCPであった場合は、通信制御部203は、更にTCPヘッダの解析・処理を行う(ステップ415)。TCPヘッダの解析・処理手順については詳細な説明を割愛するが、IPヘッダと同様にTCPヘッダも補助記憶部205にすでに格納されているので、TCPヘッダ内にあるデータ長とチェックサム以外の解析については可能な状態である。そこで、データ長とチェックサム以外の項目に対し、必要な解析と処理から実行する。例えば、その解析の時点で自分宛ではない場合や誤りがあることが分かった場合は、DMA転送を中止させるといったことが可能である。
【0039】
そして、TCPチェックサム判定のために次の準備をしておく。まず、通信制御部203は、TCPチェックサム演算用のTCP擬似ヘッダを作成し、その加算値を求めておく(ステップ416)。TCP擬似ヘッダにTCPデータ部の情報は必要ないため、主記憶部201へのDMA転送が終了していなくともTCP擬似ヘッダの準備は可能である。次に、通信制御部203は、演算部215で加算処理を行ってしまっている、TCPチェックサム演算対象領域以外の領域の加算値を求める(ステップ417)。演算部215はメインバス202に現れるデータの最初から加算処理を行っている。そのため、無線通信部206または有線通信部207にかかる情報やIPヘッダといった、TCPチェックサム演算対象領域ではない情報の加算が行われている状態である。従って、通信制御部203は、その差分をとるためにこれら対象外領域の加算を行っておく。
【0040】
TCPヘッダ内にあるデータ長とチェックサム以外の解析・処理が終了した段階で、もし主記憶部201へのDMA転送が終了していない場合は、通信制御部203は、当該DMA転送が終了するまで待機する(ステップ418、426)。他方、通信制御部203は、DMA転送が終了したことを検知した場合は、演算部215の加算演算処理も終了しているので、その結果を確認する(ステップ419)。
【0041】
そして、通信制御部203は、
・TCP擬似ヘッダの加算結果(ステップ416)と、
・TCPチェックサム演算対象領域以外の領域の加算結果(ステップ417)と、
・演算部215の加算結果(ステップ419)と
を元にTCPチェックサムを求め、受信時のデータ誤りが発生していないかチェックを行う(ステップ420)。チェックサムの結果より誤りがあるか否かの判断で処理が分岐する(ステップ421)。誤りが無いのであれば、通信制御部203は、受信したTCPパケットは有効パケットであるとして扱う(ステップ422)。誤りが発生している場合は、通信制御部203は、受信したパケットを破棄する(ステップ423)。
【0042】
こうして1つのパケットを受信してからの一連の処理が終わると、通信制御部203は、TCPデータサイズが主制御装置102から要求された所定サイズに達したかどうかを判断する(ステップ424)。通信制御部203は、TCPデータサイズが所定サイズに達したと判断すると、主制御装置102が用意した受信バッファにTCPデータを格納し、通知を行う(ステップ425)。その後、TCPを使用した通信を終了する。他方、まだ所定のサイズに達していないと判断された場合は、引き続き受信処理を継続するべく、処理をステップ401に戻す。
【0043】
次に、データ受信時における通信制御装置103の各機能ブロック間で送受信される制御情報について説明する。図5は、有線通信機器109からTCP/IPデータを有線を介して受信する時の、DMA部208、通信制御部203、有線通信部207、演算部215、および有線通信機器109の間でやり取りされるデータや制御情報を示した図である。ここで、DMA部208、通信制御部203、有線通信部207、有線通信機器109はすべてリセット解除や初期化がされており、正常動作状態であるものとする。
【0044】
まず、有線通信機器109より、有線通信を介してTCP/IPパケットが送信されると(501)、有線通信部207は、受信処理を開始する(502)。正常に受信が行われると、有線通信部207は、通信制御部203に、受信したことを通知するために割り込み信号を送信する(503)。なお、この送信は、割り込み信号線211を使用して行われる。割り込み信号線211からの割り込み信号を受信した通信制御部203は、有線通信部207に割り込み通知要因の問合せを行う(504)。割り込み通知要因が、データの受信によるものであると分かった場合、通信制御部203は、有線通信部207が受信したデータを主記憶部201と補助記憶部205に転送するようにDMA部208に命令をセットする(505)。ここでセットされる命令は、主記憶部201の転送先アドレスと転送データサイズ、補助記憶部205の転送先アドレスと転送データサイズである。なお、これらのセットされる内容の一部またはすべてが予めDMA部208に事前に決定されていても良い。たとえば、補助記憶部205のサイズが1パケット分のヘッダ情報しか入らないサイズである場合は、補助記憶部205へのアドレスは固定となる。従って、そのようなアドレスをDMA部208が事前に把握している場合、外部からの設定は不要となる。またパケットが特定のプロトコルと決まっている場合、ヘッダ部の最大長も決まっているので、その最大長を常に補助記憶部205へ格納する仕組みにDMA部208がなっていれば、サイズ設定も不要となる。こうして、通信制御部203はDMA部208による受信データの転送を制御する。また、有線通信部207に割り込み要因確認を行った際に受信データサイズが分からないような場合は、転送データサイズではなく、転送先の空きサイズを設定しても良い。なお、補助記憶部205への転送データサイズは、少なくともパケットの先頭からTCPヘッダまでのデータサイズに相当するものとする。
【0045】
DMA部208は、命令がセットされると同時に演算部215に対して加算演算開始の命令をセットする(506)。たとえば、DMA部208の内部に演算部215が実装されている場合は、通信制御部203からDMA部208にセットした命令を元に演算部215にも演算の開始を命令セットするように構成することができる。また、DMA部208と別に演算部215を具備した場合には、DMA部208へ命令をセットする前に演算部215に演算開始命令をセットする方法が容易である。
【0046】
データ転送命令を受信したDMA部208は、有線通信部207から主記憶部201へのデータ転送(第1転送処理)を開始する(507)。また、DMA部208は、有線通信部207から補助記憶部205へのデータ転送(第2転送処理)も開始する(507)。さらに、同時に演算部215がメインバス202に転送されるデータをスヌープして行う加算演算を開始する(508)。
【0047】
ここで、演算部215がどのように演算を行うかについて、図6を用いて説明する。図6の(A)は一般的なバス構成のデータ書き込み時における動作について示すタイムチャートである。600はバスクロックである。601はアドレスバス、602はデータバス、603はリクエスト信号、604は応答信号である。まず、バスにアクセスするもの(以後バスマスタ)は、書き込みアドレスをアドレスバス601にセットし、書き込む値をデータバス602にセットした状態でリクエスト信号603をバスに対して送信する。書き込みアドレスを受け取った、バスからアクセスをうけるもの(以後バススレーブ)は、書き込みが完了したときに応答信号604を返す。応答信号を受け取ったバスマスタは、次のアクセスができるようになる。
【0048】
図6の(B)は一般的なバスのデータ読み出し時における動作について説明するタイムチャートである。605はバスクロックである。606はアドレスバス、607はリクエスト信号、608は応答信号、609はデータバスである。まず、バスマスタは読み出しアドレスをアドレスバス606にセットし、リクエスト信号607を送信する。読み出しアドレスを受け取ったバススレーブは、バスマスタに渡すデータをデータバス609にセットし、そのセットが終わったことを告げるため、応答信号608を送信する。応答信号を受け取ったバスマスタは、応答信号608のアサートからバスに規定されたサイクル数以内にデータバス609上の値を読むことによりデータ読み出し動作は完了する。
【0049】
図6の(A)または図6の(B)のバスをスヌープして加算演算を行う演算部215は次の動作を行う。例えば、演算部215がDMAバス209に接続している場合は、DMAバス209はデータ受信時に、図6の(B)の読み出し動作を行うので、図6の(B)の矢印の位置、すなわち応答信号608の直後でデータをスヌープすると良い。また、図2のように演算部215がメインバス202に接続している場合は、データ受信時に図6の(A)の書き込み動作を行うので、図6の(A)の矢印の位置、すなわちリクエスト信号603の直後でデータバス602をスヌープすると良い。
【0050】
図5に戻り説明を続ける。DMA部208は、有線通信部207から補助記憶部205への、受信データの所定サイズ分のコピー(データ転送)を終了すると(509)、これを通信制御部203に通知する(510)。ここで、所定サイズとは、データ転送の開始部分からTCPヘッダまでのデータサイズである。補助記憶部205への所定サイズのデータのコピーが完了した旨の通知を受けた通信制御部203は、補助記憶部205にコピーされたデータにアクセスし、ヘッダの解析を始める(511)。図示の例では、有線通信部207からのデータのみを処理しているため、無線通信からのデータ受信か有線通信からのデータ受信かの判断は必要ない。そこで有線通信部207にかかるヘッダ情報とその続きにEthernet(登録商標) IIのフレーム構成となっていることを前提に解析を始める。なお、有線通信部207にかかるヘッダ情報とは、有線通信部207の状態監視や制御に必要な情報であるが、フォーマットは通信制御部203が解析可能であればどのような型でも良いし、必要なければ使用しなくとも良い。
【0051】
有線通信部207にかかるヘッダ情報の解析に続いて、データリンク層の解析を行い、さらにネットワーク層の解析を行う。例えばIP通信であればIPヘッダの解析を行い、そしてトランスポート層の種別を判定し所定のプロトコル解析を行う。図4A、図4Bのフローチャートで説明したように、本例では、TCPパケット受信を例にしているので、TCPヘッダのデータ長、チェックサム以外について解析を行う。
【0052】
また、TCPヘッダのチェックサムを解析するために、以下の処理を行う。演算部215はDMA部208の転送と同時に演算を開始しているため、ステップ417で説明したように、TCPチェックサム演算に必要ではないデータの加算値(以後、不要加算値)を予め用意しておく(512)。また、ステップ416で説明したように、TCPチェックサム演算に必要となるTCP擬似ヘッダをDMA部208から主記憶部201へのデータ転送が終わる前に用意しておき、合わせて擬似ヘッダの総和も計算しておく(513)。主記憶部201へのDMA転送が終了したときに(514)、DMA部208は、通信制御部203にDMA転送が終了したことを通信制御部203に通知する(515)。DMA転送が終了するのとほぼ同時に演算部215の演算結果が求められているので(516)、通信制御部203は、その加算演算結果を参照する(517)。そして、先に求めた不要加算値と擬似ヘッダサム値と演算結果を元にチェックサムを求めて誤りの有無を判定し(518)、最終的に受信したパケットが有効であったか否か判断をする(519)。
【0053】
以上、有線通信部207からTCP/IPパケットを受信した場合について説明したが、無線通信部206からTCP/IPパケットを受信した場合についても同様である。すなわち、無線通信部206からの受信通知を受け、それを元にDMA転送を開始するまでは同様の手順でよい。異なるのは補助記憶部205で解析を行う最初の部分が有線通信部207に係る情報ではなく、無線通信部206にかかる情報に置き換わる点である。この情報の処理が終了すれば、後の処理手順は有線通信の場合と同様で良い。
【0054】
また、上記は全てTCP/IPパケットが来ることを想定している場合の受信方法であり、具体的には、データ長が1500bytes前後(Ethernet(登録商標)のMTUに相当)が予想される場合の受信方法である。しかし、例えば無線を使用してTCP/IPパケットを使用した通信を行う場合、まず無線区間での接続設定等を行う必要がある。この段階でも無線通信部206と通信制御部203との間で各種データのやり取りが必要である。このとき、TCP/IPのパケットよりもデータ長の長いデータは来ないことが分かっている。またシステムによっては、主制御装置102が必要とするデータではないことも分かっている。このような場合は主記憶部201に受信したデータを格納する必要がないので、通信制御部203はDMA部208による主記憶部201への受信データのDMA転送を禁止する。すなわち、通信制御部203は、DMA部208に対して補助記憶部205のみへの受信データのDMA転送を指示することにより、必要のない転送を禁止することができる。これにより、消費電力を削減できる。このDMA部208へ、どのように指示をするかは、接続状態監視部312を具備することにより実現できる。接続状態監視部312により接続処理の進行状態から実際の接続状態まで管理し、その状態に応じて受信が予想される受信データの種別、サイズに応じてDMA部208への転送方法を指定することにより可能となる。
【0055】
以上説明したように、本実施形態によれば、通信制御装置において、ネットワークからデータを受信したときの処理の効率が向上する。すなわち、本実施形態によれば、受信データとその一部のデータが、それぞれDMAにより第1記憶装置である主記憶部201と第2記憶装置である補助記憶部205へ同時にコピーされる。そして、通信制御部203は、主記憶部201への受信データのDMA転送を実行中に、補助記憶部205に記憶された上記一部のデータを用いて当該受信データのヘッダ解析を行うことができる。ここで、主記憶部201と補助記憶部205はそれぞれ別々のバスに接続されている。すなわち、ヘッダ解析の際には、主記憶部201とは独立した補助記憶部205にコピーされたヘッダのデータが用いられるので、メモリアクセスの集中が防止され、処理速度が向上する。なお、第2転送処理はヘッダ部分のみについて行われるので、第2転送処理を終えた後に第1転送処理をおこなうようにして、第1転送処理とヘッダ解析を同時に行うように構成することも可能である。
【0056】
また、受信データのうち必要となるヘッダのサイズだけ抽出して補助記憶部205へコピーするようにしたため、補助記憶部205のメモリサイズを低減することが可能となる。また、必要最低限の転送サイズに留めるため、転送に必要となる消費電力も削減できる。さらに、通信制御部203が高速にアクセスすることができる補助記憶部205にヘッダデータが記憶されるため、ヘッダ解析処理を高速に行うことができる。このように、上記実施形態によれば、所定の通信プロトコルにしたがって外部装置からデータを受信する際の、通信処理の効率を向上することができる。
【0057】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。

【特許請求の範囲】
【請求項1】
他機器との間で無線または有線による通信を行う通信制御装置であって、
他機器から受信した信号から受信データを生成する通信手段と、
前記通信手段から第1記憶手段と前記第1記憶手段とは異なるバスに接続された第2記憶手段とへDMAによるデータ転送を行う転送手段と、
前記転送手段を用いて前記第1記憶手段へ前記受信データを転送する第1転送処理を実行し、前記第1転送処理の実行中に、当該受信データのうちのヘッダを含む一部のデータを前記転送手段を用いて前記第2記憶手段へ転送する第2転送処理を実行する制御手段と、
前記第2転送処理による前記第2記憶手段への前記一部のデータの転送が終了すると、前記第2記憶手段に記憶された前記一部のデータを用いてヘッダ解析を行う解析手段とを備えることを特徴とする通信制御装置。
【請求項2】
前記第1転送処理によって前記第1記憶手段へ転送される前記受信データのチェックサムの値を得るために前記受信データについて加算演算を行う加算手段と、
前記第2記憶手段に転送された前記ヘッダに含まれるチェックサムの情報と、前記第1転送処理による前記第1記憶手段への前記受信データの転送が終了した後の前記加算手段による加算演算の結果とに基づいて誤りの有無を判定する判定手段とを更に備えることを特徴とする請求項1に記載の通信制御装置。
【請求項3】
前記通信手段は、無線通信部と有線通信部とを具備し、
前記解析手段は、前記一部のデータが前記無線通信部と前記有線通信部のいずれにおいて受信されたものであるかに応じて、前記ヘッダに対する解析処理を変更することを特徴とする請求項1または2に記載の通信制御装置。
【請求項4】
前記制御手段は、他機器との間で無線通信の接続設定のための通信が行なわれている場合には、前記第1転送処理の実行を禁止し、前記第2転送処理では、前記受信データの全体を前記第2記憶手段へ前記転送手段を用いて転送することを特徴とする請求項1または2に記載の通信制御装置。
【請求項5】
前記第2記憶手段は、前記第1記憶手段よりも記憶容量が小さいが、前記解析手段からのアクセス速度が前記第1記憶手段より速いことを特徴とする請求項1乃至4のいずれか1項に記載の通信制御装置。
【請求項6】
他機器との間で無線または有線による通信を行う通信装置の通信制御方法であって、
通信手段が、他機器から受信した信号から受信データを生成する通信工程と、
前記通信手段から第1記憶手段と前記第1記憶手段とは異なるバスに接続された第2記憶手段とへDMAによるデータ転送を行う転送手段が、前記第1記憶手段へ前記受信データを転送する第1転送工程と、
前記転送手段が、前記第1転送工程の実行中に、前記受信データのうちのヘッダを含む一部のデータを前記第2記憶手段へ転送する第2転送工程と、
解析手段が、前記第2転送工程による前記第2記憶手段への前記一部のデータの転送が終了すると、前記第2記憶手段に記憶された前記一部のデータを用いてヘッダ解析を行う解析工程とを有することを特徴とする通信制御装置の制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4A】
image rotate

【図4B】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2012−39266(P2012−39266A)
【公開日】平成24年2月23日(2012.2.23)
【国際特許分類】
【出願番号】特願2010−175735(P2010−175735)
【出願日】平成22年8月4日(2010.8.4)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】