(57)【要約】【課題】さまざまなプロトコルに対応するパケット処理を行い、かつ開発効率の良い通信処理装置を提供する。【解決手段】ＤＭＡコントローラ１００はＣＰＵ１０１からのプログラムコードによってパケット処理と、ネットワークインターフェイス１１０とメモリ１０２間の転送を実行する。実行するパケット処理プログラムはパケットのヘッダ情報から自動的に判別される。このことにより、特定のパケット処理に依存しないＤＭＡコントローラが構成でき、開発効率の向上を図ることができる。【選択図】図４
2007027951.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークインターフェイスとプロセッサが扱う共有メモリとの間でデータを転送するためのＤＭＡコントローラであって、
前記プロセッサから与えられるプログラムコードとパケットデータを格納するためのメモリと、前記メモリの前記プログラムコードを出力する命令制御部と、前記メモリより出力された前記プログラムコードをデコードする命令デコーダと、前記命令デコーダのデコード結果を受けてプロトコル処理を実行するとともに、前記ネットワークインターフェイスおよび前記共有メモリ間のデータ転送を実行する演算器と、ネットワークインターフェイスおよびバスを介して前記プロセッサと接続するバスインターフェイスとを備えたＤＭＡコントローラ。
【請求項２】
命令制御部から起動されて特定の演算を高速化させる専用演算器を演算器とは別に有する請求項１記載のＤＭＡコントローラ。
【請求項３】
プロセッサからアクセスするが可能なレジスタを有し、命令制御部は前記レジスタの内容に応じて動作し、プロトコル処理を実行する請求項１記載のＤＭＡコントローラ。
【請求項４】
パケットデータの送受信処理を行う通信処理装置であって、バスを通じて接続されたプロセッサ、メモリ、およびプログラムによって動作するＤＭＡコントローラと、ＤＭＡコントローラに対して前記バスと異なるバスで接続されたネットワークインターフェイスとを備え、前記プロセッサは前記ＤＭＡコントローラに対してプログラムコードを供給し、前記ＤＭＡコントローラは前記プログラムコードに従ってプロトコル処理を実行し、前記ネットワークインターフェイスと前記メモリ間のデータ転送を行うことを特徴とする通信処理装置。
【請求項５】
ＤＭＡコントローラは請求項１、請求項２、または請求項３記載のＤＭＡコントローラである請求項４記載の通信処理装置。
【請求項６】
パケットデータの送受信処理を行う通信処理装置であって、バスを通じて接続されたプロセッサ、メモリ、およびプログラムによって動作するＤＭＡコントローラと、前記ＤＭＡコントローラに対して前記バスとは異なるバスで接続された２つ以上のネットワークインターフェイスとを備え、前記プロセッサは前記ＤＭＡコントローラに対してプログラムコードを供給し、前記ＤＭＡコントローラは、前記プログラムコードに従ってそれぞれの前記ネットワークインターフェイスと送受信を行うパケットデータに応じたプロトコル処理を実行し、前記ネットワークインターフェイスと前記メモリ間のデータ転送を行うことを特徴とする通信処理装置。
【請求項７】
ＤＭＡコントローラは請求項１、請求項２または請求項３記載のＤＭＡコントローラである請求項６記載の通信処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＤＭＡコントローラおよび通信処理装置に関し、詳しくは、計算機とネットワークインターフェイスとのデータ転送処理装置に関する。
【背景技術】
【０００２】
イーサネット(登録商標）に代表されるネットワークでは、ネットワークインターフェイスにおいてネットワーク上を流れるパケットとの送受信を行い、そのプロトコル処理はマイクロプロセッサ（以下、ＣＰＵと略す）で行われる。ネットワークインターフェイスとＣＰＵとのデータ転送には、最も簡単な構成の場合、ＣＰＵがネットワークインターフェイスに実装されているＦＩＦＯバッファをＣＰＵのメモリ空間上にマッピングし、ＣＰＵからメモリアクセス命令を発行する事によって実行される。
【０００３】
しかしながら、大量のパケットデータを送受信しなければならない場合には、メモリアクセスを行う処理時間が増加する。これによりＣＰＵが行うパケット処理の時間を圧迫してしまい、その結果として通信のスループットが低下してしまう問題が発生する。
【０００４】
通信スループットを確保する方式として、ダイレクトメモリアクセス（ＤＭＡ）コントローラを設置し、ネットワークインターフェイスからＣＰＵのメモリへの転送を行わせ、データコピーに費やされるＣＰＵ負荷を低減させる方法が取られる事が多い。その一例である特許文献１では、ＤＭＡコントローラにプログラマブルシーケンサを利用し、開発効率の短縮等に伴うコスト増大を抑える方法が開示されている。
【０００５】
また、例えば特許文献２では、ネットワークインターフェイスとＣＰＵの間に２種類のデータバスを設け、一方のデータバスにはプロトコル処理をネットワークインターフェイスで行ったデータを、他方のデータバスにはホストコンピュータで実行されるプロトコル処理のデータを送受信できるようにした方式が開示されている。
【特許文献１】特開平１１−４１２９７号公報
【特許文献２】特開２０００−２３５５３６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ＤＭＡコントローラを利用してパケットデータをメモリ上に展開し、ＣＰＵ負荷を下げる方法においては、全ての受信データをCPUのメモリ上に展開しなければならず、データバスで輻輳が生じる。また、実際には処理する必要のないパケットデータをも受信しデータメモリに転送されるので、割り込み頻度が増加し、ＣＰＵの処理時間を圧迫してしまう。また、プロトコル処理をＣＰＵが行うことでその処理に時間を費やし、結果的に通信のスループットが低下してしまう。これは、ＤＭＡコントローラにプログラマブルシーケンサを使用した場合でも同様である。十分な通信スループットを得るためには高速高機能なＣＰＵが必要となるが、チップ面積は増大し、コストが増加する。
【０００７】
一方、プロトコル処理の一部をハードウェアによって処理する方法においては、搭載するハードウェアによって処理できるプロトコルの処理が決定される。複数のプロトコル処理（例えばＩＰｖ４とＩＰｖ６など）が共存するネットワーク環境においては、それぞれのプロトコルに対応するハードウェアを実装しなければならず、コストの増大につながる。また、搭載されているハードウェアのプロトコル処理以外をＣＰＵで行うようなシステムではソフト処理を行うプロトコルは、高コストな高速高機能なＣＰＵを実装しない限り十分なスループットを得る事が出来ない。
【０００８】
したがって、本発明の目的は、開発効率の短縮を図り、通信スループットの向上を図ることができるＤＭＡコントローラおよび通信処理装置を提供することである。
【課題を解決するための手段】
【０００９】
本発明のＤＭＡコントローラは、ネットワークインターフェイスとプロセッサが扱う共有メモリとの間でデータを転送するためのＤＭＡコントローラであって、
プロセッサから与えられるプログラムコードとパケットデータを格納するためのメモリと、メモリのプログラムコードを出力する命令制御部と、メモリより出力されたプログラムコードをデコードする命令デコーダと、命令デコーダのデコード結果を受けてプロトコル処理を実行するとともに、ネットワークインターフェイスおよび共有メモリ間のデータ転送を実行する演算器と、ネットワークインターフェイスおよびバスを介してプロセッサと接続するバスインターフェイスとを備えたものである。
【００１０】
上記構成において、命令制御部から起動されて特定の演算を高速化させる専用演算器を演算器とは別に有する。
【００１１】
上記構成において、プロセッサからアクセスするが可能なレジスタを有し、命令制御部はレジスタの内容に応じて動作し、プロトコル処理を実行する。
【００１２】
本発明の通信処理装置は、パケットデータの送受信処理を行う通信処理装置であって、バスを通じて接続されたプロセッサ、メモリ、およびプログラムによって動作するＤＭＡコントローラと、ＤＭＡコントローラに対してバスと異なるバスで接続されたネットワークインターフェイスとを備え、プロセッサはＤＭＡコントローラに対してプログラムコードを供給し、ＤＭＡコントローラはプログラムコードに従ってプロトコル処理を実行し、ネットワークインターフェイスとメモリ間のデータ転送を行うことを特徴とするものである。
【００１３】
上記構成において、ＤＭＡコントローラは請求項１、請求項２、または請求項３記載のＤＭＡコントローラである。
【００１４】
本発明の通信処理装置は、パケットデータの送受信処理を行う通信処理装置であって、バスを通じて接続されたプロセッサ、メモリ、およびプログラムによって動作するＤＭＡコントローラと、ＤＭＡコントローラに対してバスとは異なるバスで接続された２つ以上のネットワークインターフェイスとを備え、プロセッサはＤＭＡコントローラに対してプログラムコードを供給し、ＤＭＡコントローラは、プログラムコードに従ってそれぞれのネットワークインターフェイスと送受信を行うパケットデータに応じたプロトコル処理を実行し、ネットワークインターフェイスとメモリ間のデータ転送を行うことを特徴とするものである。
【００１５】
上記構成において、ＤＭＡコントローラは請求項１、請求項２または請求項３記載のＤＭＡコントローラである。
【発明の効果】
【００１６】
本発明によれば、例えばネットワークインターフェイスに設置される専用のＤＭＡコントローラはプログラムによって動作し、ＣＰＵがバスを経由してＤＭＡコントローラ内に設置されたメモリへ命令コードを格納する。ＣＰＵはＤＭＡコントローラに処理を行わせるプロトコル処理によって格納する命令コードを選択する。複数のプロトコル処理が必要な場合は、それに対応したプログラムをＤＭＡコントローラにダウンロードさせる。ＤＭＡコントローラはＣＰＵによるリセットの解除後、メモリに格納された命令をプログラムカウンタに従って実行していく。このプログラムによってネットワークインターフェイスと送受信を行うデータのプロトコル処理を実行し、ＣＰＵのバス上に設置されているメモリとネットワークインターフェイスとのデータ送受信を実行する。
【００１７】
本発明のＤＭＡコントローラによれば、通信処理装置が複数のプロトコルデータを送受信する場合においても、ＤＭＡコントローラの処理プログラムを変更する事によって対応することが可能となり、開発効率の短縮が図られる。また、ＤＡＭコントローラによってこれまでＣＰＵが行ってきたプロトコル処理を実行することが可能となり、通信スループットの向上を図る事が可能となる。
【００１８】
特に高速な処理が必要とされる場合においては、ＤＭＡコントローラ内部に専用処理アクセラレータを搭載する。このアクセラレータをＤＭＡコントローラが命令によって起動させることができる。このように、特定処理を行うアクセラレータをＤＭＡコントローラに実装する事により、ＣＰＵの負荷を上げることなく、処理の更なる高速化を図る事が可能となる。
【００１９】
また、ＤＭＡコントローラに種類の異なる複数のネットワークインターフェイスを接続し、送受信するパケットのヘッダ情報から、パケットに対応したプロトコル処理を選択する事が出来る。
【００２０】
ＤＭＡコントローラにプロトコルの異なる複数のネットワークインターフェイスを接続し、ＤＭＡコントローラによってそのプロトコル処理をプログラムによって実行させる。
【００２１】
このように、パケット処理の設定を動作最中に替える事が可能となることで、動作設定を変更してもＤＭＡコントローラに対するプログラムコードの再書き込みが不要となり、多様な通信設定を行う事ができるようになる。
【００２２】
また、既存の通信処理装置に新たなネットワークインターフェイスを接続し、それに対応するＤＭＡコントローラのプログラムを用意する事によって、複数の通信処理を実行できる装置が簡易に設計できる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の実施の形態について説明する。
【００２４】
図１に請求項１記載の第１の実施の形態のＤＭＡコントローラの内部構成の一例を示す。
【００２５】
ＤＭＡコントローラの内部には命令メモリ２００Ａとデータメモリ２００Ｂが設置される。命令メモリ２００Ａは命令制御部２０２に従ってプログラムコードを命令デコーダ２０１に出力する。命令デコーダ２０１はプログラムコードをデコードし、その結果を汎用演算器２０３や命令制御部２０２に出力する。汎用演算器２０３はデコード結果を受けてＤＭＡコントローラ１００に内蔵するデータメモリ２００Ｂやバスインターフェイス２０４を通じてバス１０に接続された共有メモリ１０２へのアクセス、データの演算を実行する。また、命令制御部２０２は命令デコーダ２０１の結果を受けてプログラムカウンタの操作を実行し、その結果を命令メモリ２００Ａへ出力する。
【００２６】
このＤＭＡコントローラの動作について説明する。
【００２７】
ＤＭＡコントローラ１００は外部に接続されるネットワークインターフェイスと、プロセッサであるＣＰＵ１０１との共有メモリ１０２を、自らのデータメモリ空間にマッピングし、内蔵された命令メモリ２００Ａから発行されるＤＭＡ命令によって、メモリアクセスを実行する。データは、例えば受信の場合、ネットワークインターフェイスからデータを内蔵するデータメモリ２００Ｂに一旦格納し、このデータをＣＰＵ１０１との共有メモリ１０２へ転送する。同時にプロトコルの処理が必要なパケットデータである場合、ネットワークインターフェイスから内蔵するデータメモリ２００Ｂへ転送したデータを、内部の演算器２０３を利用する事によってパケット処理を行い、その後、ＣＰＵ１０１との共有メモリ１０２へと転送を実行する。
【００２８】
図２に請求項２記載の第２の実施の形態のＤＭＡコントローラの内部構成を示す。
【００２９】
ＤＭＡコントローラ１００には第１の実施の形態の構成に加え、例えば暗号処理などの特定処理を行う専用演算器としてアクセラレータ２０５が接続されている。このアクセラレータ２０５は命令制御部２０１によって起動され、データメモリ２００Ｂのデータを高速に演算する事が出来る機能を持つ。
【００３０】
このＤＭＡコントローラの動作について説明する。
【００３１】
データの転送に関しては、第１の実施の形態のＤＭＡコントローラと同様の動作を行う。パケット処理において、アクセラレータ２０５に対応した処理を行う事が可能な場合、このアクセラレータ２０５にデータを渡して、処理を実行させる。これには、例えばイーサネットパケットのＩＰｓｅｃで行われる暗復号処理などがある。命令制御部２０２でアクセラレータ２０５の処理終了を感知すると、その処理結果に対して、必要であるならばさらにパケットの処理を行い、送信であればネットワークインターフェイスに、受信であればＣＰＵとの共有メモリ上にパケットデータを展開する。
【００３２】
図３に請求項３記載の第３の実施の形態のＤＭＡコントローラの内部構成を示す。
【００３３】
第１の実施の形態の構成に加え、ＣＰＵ１０１がバス１０、バスインターフェイス２０４を通じてアクセスすることが可能であるレジスタ２０６を設ける。このレジスタ２０６は命令制御部２０２へ接続され、レジスタ２０６の値はプログラム動作に関与する。
【００３４】
このＤＭＡコントローラにおいて、命令メモリ２００Ａに格納されたプログラムコードに従って転送処理、演算処理を実行していくが、この実行のための情報は、ＣＰＵ１０１から随時アクセスすることが可能なレジスタ２０６に格納されている。ＤＭＡコントローラ１００のプログラムはこのレジスタ２０６を参照し、例えば特殊パケットの処理を行うか否か、または特定アドレスから送付されたパケットデータを破棄する、などの動作を行う。
【００３５】
図４は、請求項４記載の第４の実施の形態の通信処理装置を示す。一例として、上記各実施の形態のＤＭＡコントローラが使用された場合について説明する。
【００３６】
データバス１０にはＤＭＡコントローラ１００、プロセッサであるＣＰＵ１０１、ＣＰＵ１０１とＤＭＡコントローラ１００が共にアクセスする事が出来る共有メモリ１０２、ＤＭＡコントローラ１００とＣＰＵ１０１からアクセスすることが可能である、ＤＭＡコントローラ１００の制御用のレジスタ１０３が接続されている。ネットワークインターフェイス１１０はＤＭＡコントローラ１００に、ＣＰＵ１０１のバス１０とは異なるバスを通じて接続されている。
【００３７】
このシステムが立ち上がると、ＣＰＵ１０１の起動処理が行われ、その際にＣＰＵ１０１が、ＤＭＡコントローラ１００に実行させるプロトコル処理およびデータ転送方式を記述したＤＭＡコントローラ１００のプログラムコードをＤＭＡコントローラ１００の内蔵のメモリ２００に書き込む。書き込みが終了した時点でＣＰＵ１０１はＤＭＡコントローラ１００のリセットを解除する。リセットを解除されたＤＭＡコントローラ１００はメモリ２００に格納されているプログラムコードに従って動作する。
【００３８】
ＤＭＡコントローラ１００のプログラム動作の受信の一例について説明する。ＤＭＡコントローラ１００はネットワークインターフェイス１１０の制御レジスタを監視し、パケットデータの受信が終了した段階でネットワークインターフェイス１１０に格納されているパケットデータをメモリ２００に取り込む。取り込んだ後、ＤＭＡコントローラ１００はメモリ２００を利用してパケットの処理を行う。この処理には、例えば、データのチェックサム計算やパケットのフィルタリング処理などがある。この処理はパケットデータのヘッダ情報に基づいてＤＭＡコントローラ１００が行う処理が選択されることで、そのパケットに応じた処理が実行される。パケット処理を行った後、ＤＭＡコントローラ１００はデータバス１０のアクセス権を獲得して、共有メモリ１０２の受信パケット格納領域へ、パケットデータの転送を行う。パケットデータの転送後、レジスタ１０３に設定された受信ディスクリプタにパケットの格納情報を設定し、１パケット受信の処理が終了する。ＣＰＵ１０１への受信通知はＤＭＡコントローラ１００のメモリ２００に格納されているプログラムコードに従って行われ、例えば１パケット毎、設定された複数パケット毎、設定された総受信バイト数毎などで行われる。
【００３９】
次に送信処理について説明する。ＣＰＵ１０１が主メモリ１０２にパケットデータを設定し、レジスタ１０３上に設定された送信ディスクリプタへパケットデータの情報を格納する。ＤＭＡコントローラ１００はこの情報を基にして主メモリ１０２からパケットデータを取得し、内蔵メモリ２００へ格納する。ＤＭＡコントローラ１００は送信ディスクリプタに登録されたパケット処理を選択し、処理を開始する。ＤＭＡコントローラ１００はパケットデータを取得した時点で送信ディスクリプタの有効フラグを無効にし、ＣＰＵ１０１に対してパケットデータを取得した事を示す。ＤＭＡコントローラ１００に取得されたパケットデータはＤＭＡコントローラ１００の送信処理に従ってパケット処理、例えばチェックサム計算とその計算結果をパケットヘッダへ埋め込む等、を行う。処理が終了した時点でネットワークインターフェイス１２０にデータを送信し、送信処理を終了する。
【００４０】
以上の動作は、ＤＭＡコントローラ１００が請求項２および請求項３記載のＤＭＡコントローラである場合も同様であり、請求項２記載のＤＭＡコントローラであれば、特定のパケット処理をアクセラレータ２０５によって処理を行い、請求項３記載のＤＭＡコントローラであれば、ＣＰＵ１０１が動作中に随時ＤＭＡコントローラ１００の内部レジスタ２０６にアクセスし、その動作情報を更新して、動作中であってもパケットの処理を変更することが可能となる。
【００４１】
図５に、請求項６記載の第６の実施の形態の通信処理装置を示す。一例として、上記各実施の形態のＤＭＡコントローラが使用された場合について説明する。
【００４２】
データバス１０にはＤＭＡコントローラ１００、ＣＰＵ１０１、ＣＰＵ１０１とＤＭＡコントローラ１００が共にアクセスする事が出来る共有メモリ１０２、ＤＭＡコントローラ１００とプロセッサ１０１からアクセスすることが可能であるレジスタ１０３が接続されている。ネットワークインターフェイス１１０Ａと１１０ＢはＤＭＡコントローラ１００に、ＣＰＵ１０１が接続されているバス１０とは異なるバスで接続されている。
【００４３】
この動作について、まず受信について説明する。
【００４４】
ＤＭＡコントローラ１００はＣＰＵ１０１から書き込まれたプログラムコードを基にして、ネットワークインターフェイス１１０Ａと１１０Ｂの動作を監視し、どちらか一方のネットワークインターフェイスでパケットデータの受信が完了した時点で、そのパケットデータをＤＭＡコントローラ１００の内蔵データメモリ２００Ｂへ転送する。パケットデータに含まれるヘッダ情報を基にして、ＤＭＡコントローラ１００は処理内容を決定し、そのネットワークに対応したプロトコル処理を施した後、共有メモリ１０２へデータを転送し、レジスタ１０３に設定されている受信ディスクリプタにパケット情報を登録して、受信処理を完了する。他方のネットワークインターフェイスで受信パケットがあった場合、そのプロトコルに対応した処理がＤＭＡコントローラで選択され、その処理を実行して、メモリ１０２に転送される。
【００４５】
次に送信の動作について説明する。ＣＰＵ１０１がパケットデータを共有メモリ１０２へ転送し、レジスタ１０３に設定されている送信ディスクリプタにパケット情報を登録する。ＤＭＡコントローラ１００はパケットデータ内に含まれているヘッダ情報、若しくはレジスタ１０３の送信ディスクリプタに登録されている情報と、パケットに含まれるヘッダの情報を基にしてプロトコル処理を実行し、ネットワークインターフェイス１１０Ａと１１０Ｂのどちらに転送するのかを決定、パケットデータの転送を実行する。
【００４６】
なお、第５の実施の形態において、ネットワークインターフェイスは３以上でもよい。
【００４７】
また上記各実施の形態において、ＤＭＡコントローラ１００のメモリは命令、データと分離していたが、これをひとつにまとめて攻勢することも可能である。
【００４８】
また、受信ディスクリプタ、送信ディスクリプタ、制御情報はレジスタ１０３に設定されるように記載されているが、ＣＰＵ１０１とＤＭＡコントローラ１００の共有メモリ１０２上に設けることも可能である。また、その専用レジスタをＤＭＡコントローラ１００内に設置することもできる。
【００４９】
また、ＤＭＡコントローラ１００がネットワークインターフェイス１１０、１１０Ａ、１１０Ｂを常に監視する例を記載しているが、ネットワークインターフェイス１１０、１１０Ａ、１１０ＢからＤＭＡコントローラ１００に対して受信割り込みを実行することも可能である。
【産業上の利用可能性】
【００５０】
本発明に係るＤＭＡコントローラおよび通信処理装置は、開発効率の短縮を図り、通信スループットの向上を図ることができる効果を有し、特定の通信プロトコルにかかわらず、通信処理装置のインターフェイス部に有効である。
【図面の簡単な説明】
【００５１】
【図１】本発明の請求項１記載の第１の実施の形態のＤＭＡコントローラの構成を示すブロック図である。
【図２】本発明の請求項２記載の第２の実施の形態のＤＭＡコントローラの構成を示すブロック図である。
【図３】本発明の請求項３記載の第３の実施の形態のＤＭＡコントローラの構成を示すブロック図である。
【図４】本発明の請求項４記載の第４の実施の形態の通信処理装置の構成を示すブロック図である。
【図５】本発明の請求項５記載の第５の実施の形態の通信処理装置の構成を示すブロック図である。
【符号の説明】
【００５２】
１０  データバス
１００  ＤＭＡコントローラ
１０１  ＣＰＵ
１０２  共有メモリ
１０３  レジスタ
１１０、１１０Ａ、１１０Ｂ  ネットワークインターフェイス
２００  メモリ
２００Ａ  命令メモリ
２００Ｂ  データメモリ
２０１  命令デコーダ
２０２  命令制御部
２０３  演算器
２０４  バスインターフェイス
２０５  アクセラレータ
２０６  レジスタ
【図１】
2007027951.tif 000003
【図２】
2007027951.tif 000004
【図３】
2007027951.tif 000005
【図４】
2007027951.tif 000006
【図５】
2007027951.tif 000007