(57)【要約】【課題】本発明は、プロセッサの処理負荷を軽減し、高スループットを実現するデータ処理装置を提供する。【解決手段】本データ処理装置では、扱っているイーサネット(登録商標)フレームの通信プロトコルを認識し、チェックサム演算結果を該イーサネット(登録商標)フレームに挿入して通信インターフェイス１０８に送信する一連の処理をハードウェアで行う。その際、再送信を行う通信プロトコルでは、再送信に備えてチェックサム演算結果を転送元であるメモリ１１０に格納されたイーサネット(登録商標)フレームの所定の位置に書き込む。【選択図】図１
2008109473.tif 000002
【特許請求の範囲】
【請求項１】
メモリに格納されているデータを送信するデータ処理装置であって、
前記データを送信する通信プロトコルを判別する判別手段と、
前記データのチェックサム演算を行う演算手段と、
前記判別手段による判別に応じて、前記データに前記演算手段による演算結果を付加して送信すると共に、前記演算結果を前記メモリに格納する処理手段と、
を有することを特徴とするデータ処理装置。
【請求項２】
外部にデータを送信するためのインターフェイスと、
前記処理手段を有し、直接メモリアクセス制御により前記メモリに格納されているデータを前記インターフェイスに転送するコントローラと、を更に有し、
前記処理手段は、前記コントローラが前記メモリに格納されているデータを前記インターフェイスに転送する際に、前記データに前記演算手段による演算結果を付加して送信すると共に、前記演算結果を前記メモリに格納することを特徴とする請求項１記載のデータ処理装置。
【請求項３】
前記データは、通信フレーム化されて前記メモリに記憶されており、前記処理手段は、前記メモリに記憶されている通信フレームのチェックサム格納位置に前記演算結果を格納することを特徴とする請求項１又は２記載のデータ処理装置。
【請求項４】
前記判別手段は、再送処理を行う通信プロトコルか否かを判別することを特徴とする請求項１乃至３のいずれか１項に記載のデータ処理装置。
【請求項５】
前記判別手段は、前記データのネットワーク層を解析し、通信プロトコルを判別することを特徴とする請求項１乃至４のいずれか１項に記載のデータ処理装置。
【請求項６】
前記コントローラは一時記憶メモリを有し、
前記コントローラは、前記メモリから前記一時記憶メモリを経由する前記インターフェイスへのデータ転送と前記メモリから前記一時記憶メモリを経由せずに前記インターフェイスへのデータ転送の少なくとも１つを行うことを特徴とする請求項２記載のデータ処理装置。
【請求項７】
前記判別手段による判別に応じて、前記演算手段によるチェックサム演算を行わせるか否かを判断する判断手段を更に有し、
前記演算手段による演算と前記処理手段による前記処理は前記判断手段による判断に応じて行われることを特徴とする請求項１乃至６のいずれか１項に記載のデータ処理装置。
【請求項８】
前記データを再送する際に、前記処理手段により前記メモリに格納された演算結果が付加されたデータを再送する再送手段を更に有することを特徴とする請求項１乃至７のいずれか１項に記載のデータ処理装置。
【請求項９】
前記処理手段は、前記判別手段が判別した通信プロトコルに再送信の可能性がある場合に、前記演算結果を前記メモリに格納することを特徴とする請求項１乃至８のいずれか１項に記載のデータ処理装置。
【請求項１０】
請求項１乃至９のいずれか１項に記載のデータ処理装置を有する通信装置。
【請求項１１】
メモリに格納されているデータを送信するデータ処理方法であって、
前記データを送信する通信プロトコルを判別する判別工程と、
前記データのチェックサム演算を行う演算工程と、
前記判別工程における判別に応じて、前記データに前記演算工程における演算結果を付加して送信すると共に、前記演算結果を前記メモリに格納する処理工程と、
を有することを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高スループットを実現するデータ処理装置及び方法に関する。
【背景技術】
【０００２】
従来のデータ処理装置には、チェックサム演算のためにプロセッサに負荷がかかり、スループットが低下するという欠点があった。その解決策として、チェックサム演算をハードウェアで且つ直接メモリアクセス（ＤＭＡ）転送中に行い、通信フレームにチェックサムを挿入するといった工夫がなされてきた。
【０００３】
ハードウェアでチェックサム演算を行う従来技術として、例えば、特許文献１がある。特許文献１記載の従来技術では、ハードウェアでチェックサム演算まで行っているが、チェックサム演算結果をＣＰＵが読み取って扱う構成となっている。
【０００４】
また、ハードウェアでチェックサム演算結果を通信フレームに自動挿入する従来技術として、例えば、特許文献２がある。特許文献２に記載の通信インターフェイスシステムは、プロセッサが直接メモリアクセス手段にネットワークパケットのデータ転送の命令を与えると、自動でチェックサムが挿入されたネットワークパケットをネットワークに送信する。プロセッサが、チェックサム演算に必要な制御情報をネットワークパケットにチェックサムヘッダという形で事前に付加し、チェックサムヘッダがついているネットワークパケットを通信インターフェイスに送信する。そして、ＣＰＵが通信インターフェイス内でチェックサムヘッダをデコードし、チェックサム演算を行う方式をとっている。
【特許文献１】特開平４−３５２０５４号公報
【特許文献２】特開平６−７８０２４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献１記載の従来技術では、ＣＰＵがチェックサム演算後まで待たなければ、今扱っているネットワークパケットを外部へ出力する際の命令を出すことができず、スループットが低下する原因となる。
【０００６】
また、チェックサム演算結果を通信パケット内に格納する位置は通信プロトコルにより異なる。そのため、ＣＰＵがチェックサム演算結果を扱う上記特許文献１記載の従来技術を通信プロトコルが混在するシステムに適用した場合、毎回の通信フレームの送信時においてＣＰＵで行う処理内容が異なる可能性があり、このこともスループットの低下の原因となり得る。
【０００７】
上記特許文献２記載の従来技術では、チェックサムを計算して該チェックサムをネットワークパケットに挿入するという一連の処理を行うにあたり、プロセッサが常に通信フレームの通信プロトコルを把握しておかなければならない。また、通信フレーム中のチェックサム演算結果を挿入するアドレスをハードウェアに指示しなければならない。さらに通信プロトコルに再送信のケースがある場合の再送信手順については記載されていない。
【０００８】
これらのことから、通信プロトコルが混在するシステムでは、プロセッサが常に通信インターフェイスに与えるチェックサムヘッダ、すなわちプロセッサ命令を変更しなければならず、プロセッサが実行する処理が増加する。
【０００９】
また、プロセッサが主記憶装置にネットワークパケットを構成することが前提となっており、ブリッジ回路等でプロセッサが現在扱っている通信プロトコルを認識していない状態ではチェックサム演算を実行することができない。
【００１０】
また、通信フレームの再送信を必要とする通信プロトコルにおいて、再送信を行うときに初回送信時と同じプロセスを辿るとすると、再びチェックサム演算を行わなければならず、スループットの低下の原因となる。
【００１１】
本発明は、上記問題に鑑みて成されたものであり、データ転送における高速なスループットを実現することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するために、本発明は、メモリに格納されているデータを送信するデータ処理装置であって、前記データを送信する通信プロトコルを判別する判別手段と、前記データのチェックサム演算を行う演算手段と、前記判別手段による判別に応じて、前記データに前記演算手段による演算結果を付加して送信すると共に、前記演算結果を前記メモリに格納する処理手段と、を有することを特徴とする。
【００１３】
上記目的を達成するために、本発明は、メモリに格納されているデータを送信するデータ処理方法であって、前記データを送信する通信プロトコルを判別する判別工程と、前記データのチェックサム演算を行う演算工程と、前記判別工程における判別に応じて、前記データに前記演算工程における演算結果を付加して送信すると共に、前記演算結果を前記メモリに格納する処理工程と、を有することを特徴とする。
【発明の効果】
【００１４】
本発明によれば、データ転送における高速なスループットを実現することが可能になる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態を図面を参照して詳細に説明する。
【００１６】
図１は、本発明の実施形態に係るデータ処理装置の構成例を示すブロック図である。本データ処理装置は、入力されたストリーミングデータをイーサネット(登録商標)フレーム単位に処理してネットワークに送出する通信装置である。なお、以下の説明では、図１のデータ処理装置を通信装置として説明するが、図１のデータ処理装置は通信装置を構成する一部の回路としても本発明は適用される。
【００１７】
図１において、プロセッサ１０１（ＣＰＵ）は通信装置を制御する。プロセッサ１０１（ＣＰＵ）は、プロセッサバス１１１を介して、アービタ１０２と、第１の直接メモリアクセス制御装置１０４と、第２の直接メモリアクセス制御装置１０３と、メモリコントローラ１０９に接続されている。
【００１８】
アービタ１０２は、プロセッサバス１１１と、第１の直接メモリアクセス制御装置１０４と、第２のメモリアクセス制御装置１０３と、チェックサム演算器１０６に接続されている。アービタ１０２は、第１の直接メモリアクセス制御装置１０４及び第２のメモリアクセス制御装置１０３がメモリ１１０へアクセスする際のアクセス権を調停する。
【００１９】
第１の直接メモリアクセス制御装置１０４は、プロセッサバス１１１と、メモリバス１１２と、チェックサム演算器１０６と、映像入力インターフェイス１０７に接続されている。第１の直接メモリアクセス制御装置１０４は、映像入力インターフェイス１０７とメモリ１１０との間でのデータ転送を直接的に行うＤＭＡＣ（Direct Memory Access Controller）である。
【００２０】
第２の直接メモリアクセス制御装置１０３は、プロセッサバス１１１と、メモリバス１１２と、チェックサム演算器１０６と、通信インターフェイス１０８に接続されている。第２の直接メモリアクセス制御装置１０３は、通信インターフェイス１０８とメモリ１１０との間でのデータ転送を直接的に行うＤＭＡＣである。また、第２の直接メモリアクセス制御装置１０３は、バッファ１０５を備える。バッファ１０５は、第２の直接メモリアクセス制御装置１０３が他の装置等と競合無くアクセスできるバッファである。
【００２１】
チェックサム演算器１０６は、メモリバス１１２に接続され、メモリバス１１２をスヌープしてチェックサム演算を行う。映像入力インターフェイス１０７はストリーミングデータが入力される。通信インターフェイス１０８はイーサネット(登録商標)フレームのＦＣＳ（Frame Check Sequence）の自動生成及び自動チェックを行う機能を有する。また、通信インターフェイス１０８は第２の直接メモリアクセス制御装置１０３によりメモリ１１０から転送されてきたデータをネットワークに出力する。
【００２２】
メモリコントローラ１０９は、上述した各機能ブロックからメモリ１１０へのＲｅａｄ／Ｗｒｉｔｅアクセスを制御する。メモリ１１０は、入力されたストリーミングデータもしくは生成された通信フレームが格納されるＲＡＭ（Random Access Memory）である。
【００２３】
調停信号線１１３は、第１の直接メモリアクセス制御装置１０４と第２の直接メモリアクセス制御装置１０３がメモリ１１０へアクセスする際に使用するメモリアクセス権調停信号の送受信に用いられる。
【００２４】
制御線１１４は、第１の直接メモリアクセス制御装置１０４と第２の直接メモリアクセス制御装置１０３がチェックサム演算器１０６へ命令を与える際に用いられる。
【００２５】
図１の通信装置では、複数の直接メモリアクセス制御装置１０３，１０４が同時に動作している状態でも、メモリアクセス用のアービタ１０２がこれらの制御装置の競合を制御するので、チェックサム演算器１０６が一つで足りる。この場合、メモリ１１０にアクセスしている直接メモリアクセス制御装置を識別するには、各直接メモリアクセス制御装置１０３，１０４に入力されているメモリアクセス権調停信号をチェックサム演算器１０６に入力すればよい。
【００２６】
次に、上記イーサネット(登録商標)フレームにおける通信プロトコルがＴＣＰ／ＩＰである場合のフレームフォーマットを図２（ａ）、図２（ｂ）に示す。図２（ａ）はＩＰヘッダの構造を示す図であり、図２（ｂ）はＴＣＰヘッダの構造を示す図である。
【００２７】
図２（ａ）において、ＩＰヘッダは、ＩＰのバージョンであるバージョン７０１と、ＩＰヘッダの長さ情報であるヘッダ長７０２と、各データにおける優先順位をあらわすサービスタイプ７０３とを備える。また、ＩＰヘッダは、ＩＰヘッダを含めたＩＰパケット全体の長さ情報であるパケット長７０４と、データの分割と組み立てに関わる情報である識別子７０５と、データが分割されたとききの最終データを示すフラグであるフラグ７０６とを備える。また、ＩＰヘッダは、分割されたデータのオリジナルデータにおける位置情報であるフラグメントオフセット７０７と、パケットの生存時間であるＴｉｍｅ  ｔｏ  Ｌｉｖｅ７０８と、トランスポート層のプロトコル識別情報であるプロトコル番号７０９とを備える。また、ＩＰヘッダは、ＩＰヘッダの誤り検出符号であるヘッダ・チェックサム７１０と、発信元ＩＰアドレスである発信元ＩＰアドレス７１１と、宛先ＩＰアドレス７１２と、オプション情報であるオプション７１４とを備える。
【００２８】
オプション７１４には、オプション使用時における識別子であるオプションタイプ７１３と、ＩＰオプション使用時におけるＩＰヘッダ長調整用データであるＰＡＤ７１５とが含まれる。
【００２９】
図２（ｂ）において、ＴＣＰヘッダは、発信元ポート番号７１６と、宛先ポート番号７１７と、送信データの順序付けを行うための情報であるシーケンス番号７１８とを備える。また、ＴＣＰヘッダは、受信データに対して、どこのバイト位置まで受信したかを表す情報である確認応答番号７１９と、ＴＣＰヘッダのサイズを示すヘッダ長７２０と、ＴＣＰを使用する場合の各種フラグ情報であるコードビット７２１とを備える。また、ＴＣＰヘッダは、受信側のウィンドウサイズの通知情報であるウィンドウサイズ７２２と、擬似ヘッダ、ＴＣＰヘッダ、ＴＣＰペイロードの誤り検出符号であるチェックサム７２３と、緊急データに関する情報である緊急ポインタ７２４とを備える。また、ＴＣＰヘッダは、ＴＣＰにおける各種設定情報であるオプション７２５を備える。オプション７２５は、ＴＣＰオプション使用時におけるＴＣＰヘッダ長調整用データであるＰＡＤ７２６が含まれる。
【００３０】
図３は、図１の通信装置において、映像入力インターフェイス１０７からデータを受信してイーサネット(登録商標)フレーム単位に処理し、通信インターフェイス１０８に転送するまでの一連の処理を示すフローチャートである。
【００３１】
ステップＳ２０１：本処理を開始する。通信装置は、映像入力インターフェイス１０７からデータを受信していない状態にある。
【００３２】
ステップＳ２０２：第１の直接メモリアクセス制御装置１０４が、映像入力インターフェイス１０７からストリーミングデータ（以下、単に「データ」という。）を受信する。
【００３３】
ステップＳ２０３：プロセッサ１０１が第１の直接メモリアクセス制御装置１０４に実行命令を与える。プロセッサ１０１が第１の直接メモリアクセス制御装置１０４に与える実行命令内容は、映像入力インターフェイス１０７から入力されたデータをメモリ１１０に直接メモリアクセス（ＤＭＡ）転送させることである。
【００３４】
ステップＳ２０４：プロセッサ１０１は、映像入力インターフェイス１０７からメモリ１１０へのデータの直接メモリアクセス転送処理が終了したか否かを判別する。直接メモリアクセス転送処理が終了していない場合にはステップＳ２０５へ移行し、直接メモリアクセス転送が終了している場合はステップＳ２０６へ移行する。
【００３５】
ステップＳ２０５：第１の直接メモリアクセス制御装置１０４が映像入力インターフェイス１０７から入力されたデータをメモリ１１０へ直接メモリアクセス転送する処理を行う。
【００３６】
ステップＳ２０６：プロセッサ１０１がメモリ１１０に格納されたストリーミングデータをイーサネット(登録商標)フレームにカプセル化する処理を行う。ここでは、プロセッサ１０１は、ネットワーク層のヘッダ・チェックサム及びトランスポート層のチェックサムの計算を行わない。
【００３７】
ステップＳ２０７：プロセッサ１０１が第２の直接メモリアクセス制御装置１０３に対して、メモリ１１０に格納されているイーサネット(登録商標)フレームの転送命令を送信する処理を行う。プロセッサ１０１から転送命令を受けた第２の直接メモリアクセス制御装置１０３は、メモリ１１０上のイーサネット(登録商標)フレームを、必要に応じてチェックサムを付加した状態で、通信インターフェイス１０８に転送する処理を行う。
【００３８】
ステップＳ２０８：上記一連の処理を終了する。
【００３９】
図４は、図１に示す通信装置における第２の直接メモリアクセス制御装置１０３の構成を示すブロック図である。
【００４０】
図４において、プロセッサインターフェイス３０１は、プロセッサバス１１１を介してプロセッサ１０１との各種情報のやり取り及びプロセッサ１０１から第２の直接メモリアクセス制御装置１０３に対する命令のデコードを行う。
【００４１】
直接メモリアクセスタスクコントローラ３０２は、プロセッサインターフェイス３０１からの命令を実行し、第２の直接メモリアクセス制御装置１０３内部のタスク管理を行う。チェックサム演算器命令出力部３０３は、制御線１１４を介してチェックサム演算器１０６への命令を出力する。バスアクセスコントローラ３０４は、メモリバス１１２、外部バス３０６、及びバッファ１０５の間のデータ転送を制御する。
【００４２】
通信プロトコル解析部３０５は、バスアクセスコントローラ３０４がメモリバス１１２を介してメモリ１１０から読み込んだイーサネット(登録商標)フレームのネットワーク層を解析し、通信プロトコルを特定する。外部バス３０６は通信インターフェイス１０８に接続されている。
【００４３】
アービタインターフェイス３０７は、調停信号線１１３を介してアービタ１０２に接続され、アービタ１０２とのメモリアクセス権調停信号のやり取りを行う。
【００４４】
バッファ１０５は、第２の直接メモリアクセス制御装置１０３がＣＰＵや他の装置、回路等との競合無しに自由に使用できる形態が好適である。そのため、バッファ１０５は第２の直接メモリアクセス制御装置１０３内に配置されていても、外部に配置されていてもよい。
【００４５】
図５及び図６は、図３のステップＳ２０７における第２の直接メモリアクセス制御装置１０３がメモリ１１０に格納されているイーサネット(登録商標)フレームを通信インターフェイス１０８に転送するときの動作処理を示すフローチャートである。
【００４６】
ステップＳ４０１：イーサネット(登録商標)フレームの転送を開始のためのフローチャートであることを示す。第２の直接メモリアクセス制御装置１０３は、プロセッサ１０１から何も命令を受信していない状態にある。
【００４７】
ステップＳ４０２：プロセッサインターフェイス３０１は、プロセッサ１０１からの転送命令をプロセッサバス１１１を介して受信する。プロセッサ１０１から受信した転送命令には、チェックサム演算の必要性、メモリ１１０に格納されたイーサネット(登録商標)フレームの先頭アドレスとデータサイズ等が含まれる。チェックサム演算の必要性とは、チェックサム演算が必要か否かの命令である。
【００４８】
ステップＳ４０３：プロセッサインターフェイス３０１は、プロセッサ１０１から受信した命令をデコードし、直接メモリアクセスタスクコントローラ３０２に渡す。
【００４９】
ステップＳ４０４：直接メモリアクセスタスクコントローラ３０２は、直接メモリアクセス転送を開始するためのメモリ１１０へのアクセス権を、アービタインターフェイス３０７を介してアービタ１０２から取得する。
【００５０】
まず、第２の直接メモリアクセス制御装置１０３は、アービタ１０２に対してリクエスト信号を送る。するとアービタ１０２は、メモリ１１０が使用できる状態になるまで応答しないが、使用できる状態になったときは、第２の直接メモリアクセス制御装置１０３へ許可信号を返す。ここで第２の直接メモリアクセス制御装置１０３はメモリ１１０へアクセスできる状態になる。実際に第２の直接メモリアクセス制御装置１０３がメモリ１１０へアクセスしているときは、メモリ１１０の使用状態を示すアクセス信号をアービタ１０２へ送る。リクエスト信号と許可信号とアクセス信号は、調停信号線１１３を使用してやり取りされる。
【００５１】
ステップＳ４０５：直接メモリアクセスタスクコントローラ３０２はバスアクセスコントローラ３０４に対して命令を送信する。この命令は、メモリ１１０に格納されているイーサネット(登録商標)フレームのネットワーク層の情報を直接メモリアクセス方式により読み込めという命令である。
【００５２】
ステップＳ４０６：バスアクセスコントローラ３０４は、読み込んだイーサネット(登録商標)フレームのネットワーク層の情報を通信プロトコル解析部３０５に送る。
【００５３】
ステップＳ４０７：通信プロトコル解析部３０５は、イーサネット(登録商標)フレームのネットワーク層の情報を元に通信プロトコルを解析し、その解析結果を直接メモリアクセスタスクコントローラ３０２に送る。例えば、イーサネット(登録商標)フレームがネットワーク層にＴＣＰ／ＩＰを使用している場合、ＩＰヘッダの先頭アドレスから１０バイト目にプロトコル番号が格納されている。このプロトコル番号を解析することで通信プロトコルを特定することができる。同時に、ＩＰヘッダの先頭アドレスから２バイト目にはＩＰヘッダ長が格納されている。これを元にイーサネット(登録商標)フレームのどこへチェックサムを格納すればよいかを判断することができる。これ以外でも、例えば、ＩＰｖ４／ＩＰｖ６のバージョン情報を元に、第２の直接メモリアクセス制御装置１０３の処理フローを振り分けてもよい（図２参照）。
【００５４】
ステップＳ４０８：直接メモリアクセスタスクコントローラ３０２は、メモリ１１０から通信インターフェイス１０８へのデータ転送が行われる際、チェックサム演算をする必要があるか否か判別する。これは、イーサネット(登録商標)フレームにチェックサム演算結果を挿入する必要があるか否かを判断するためである。例えば、プロセッサ１０１が事前にチェックサム演算をする必要がないと第２の直接メモリアクセス制御装置１０３に命令していた場合はステップＳ４０９へ移行する。また、ステップＳ４０７にて解析された通信プロトコルの種類によりチェックサム演算の必要がないと直接メモリアクセスタスクコントローラ３０２が判断した場合にはステップＳ４０９へ移行する。一方、チェックサム演算の必要がある場合は図６のステップＳ４１１へ移行する。
【００５５】
ステップＳ４０９：直接メモリアクセスタスクコントローラ３０２は、メモリ１１０から外部バス３０６へのイーサネット(登録商標)フレームの直接メモリアクセス転送を開始する命令をバスアクセスコントローラ３０４に送信する。命令を受信したバスアクセスコントローラ３０４は、直ちにメモリ１１０から外部バス３０６へのイーサネット(登録商標)フレームの直接メモリアクセス転送を開始する。この転送では、バスアクセスコントローラ３０４は、バッファ１０５にメモリ１１０から読み出したデータを記憶することなく、外部バス３０６にデータを転送する。
【００５６】
ステップＳ４１０：直接メモリアクセスタスクコントローラ３０２は、メモリ１１０から外部バス３０６へのイーサネット(登録商標)フレームの直接メモリアクセス転送の終了後に、アービタインターフェイス３０７にメモリ１１０の解放命令を出力させる。これは、第２の直接メモリアクセス制御装置１０３がメモリ１１０へのアクセス権を解放するためである。
【００５７】
図６のステップＳ４１１：直接メモリアクセスタスクコントローラ３０２は、チェックサム演算器命令出力部３０３に、チェックサム演算器１０６へのプリセット命令を出力させる。ここで、チェックサム演算器命令出力部３０３は、制御線１１４を介して直ちにチェックサム演算器１０６にプリセット命令を送信する。このプリセット命令はチェックサム演算範囲が主な情報だが、オプションでその他の情報を付加してもよい。例えば、その他の情報として、チェックサム演算を開始する前のサム値の初期値などをセットしておいてもよい。
【００５８】
ステップＳ４１２：直接メモリアクセスタスクコントローラ３０２は、メモリ１１０からバッファ１０５へのイーサネット(登録商標)フレームの直接メモリアクセス転送を開始する命令を、バスアクセスコントローラ３０４に送信する。
【００５９】
ステップＳ４１３：直接メモリアクセスタスクコントローラ３０２は、チェックサム演算器命令出力部３０３に、チェックサム演算の開始命令を出力させる。ここで、チェックサム演算器命令出力部３０３は、制御線１１４を介して直ちにチェックサム演算器１０６に命令を送信する。なお、チェックサム演算器１０６への命令は、バスアクセスコントローラ３０４がメモリ１１０からバッファ１０５へのイーサネット(登録商標)フレームの直接メモリアクセス転送を開始する前に行われる。そして、直接メモリアクセス転送の開始命令を受けたバスアクセスコントローラ３０４は直接メモリアクセス転送を開始し、チェックサム演算器１０６はメモリバス１１２を介して転送されるイーサネット(登録商標)フレームのチェックサムを演算する。また、バスアクセスコントローラ３０４によりメモリ１１０からバッファ１０５にイーサネット(登録商標)フレームが転送されても、メモリ１１０には転送されたデータが残される。これは、再送時に、再度同じデータが読み出されるためである。
【００６０】
ステップＳ４１４：直接メモリアクセスタスクコントローラ３０２は、メモリ１１０からバッファ１０５へのイーサネット(登録商標)フレームの直接メモリアクセス転送の終了時に、チェックサム演算器命令出力部３０３にチェックサム演算の終了命令を出力させる。ここで、チェックサム演算器命令出力部３０３は、直ちにチェックサム演算器１０６に命令を送信する。
【００６１】
ステップＳ４１５：プロセッサ１０１は、今扱っているイーサネット(登録商標)フレームの通信プロトコルに再送信の可能性があるか否かを判別する。再送信を行わない通信プロトコルならば、ステップＳ４１６へ移行し、再送信を行う通信プロトコルならばステップＳ４１９へ移行する。
【００６２】
ステップＳ４１６：直接メモリアクセスタスクコントローラ３０２は、チェックサム演算器命令出力部３０３にチェックサム演算結果出力命令を出力させる。チェックサム演算器命令出力部３０３は、直ちにチェックサム演算器１０６に命令を送信する。同時に、直接メモリアクセスタスクコントローラ３０２は、バスアクセスコントローラ３０４に、チェックサム演算結果をバッファ１０５に書き込む準備をするよう命令する。バスアクセスコントローラ３０４は、バッファ１０５に格納されたイーサネット(登録商標)フレームの所定の位置にチェックサム演算結果を書き込むため、バッファ上に所定の位置を確定しておく。
【００６３】
ステップＳ４１７：直接メモリアクセスタスクコントローラ３０２は、バスアクセスコントローラ３０４に、チェックサム演算結果をバッファ１０５に格納されたイーサネット(登録商標)フレームの所定の位置に書き込ませる。このチェックサム演算結果は、チェックサム演算結果出力命令を受けたチェックサム演算器１０６からメモリバス１１２のデータ線に出力されたものである。
【００６４】
ステップＳ４１８：直接メモリアクセスタスクコントローラ３０２は、ステップＳ４１７にて行われたバッファ１０５へのチェックサム演算結果の書込み終了後に、アービタインターフェイス３０７にメモリ１１０の解放命令を出力させる。これは、第２の直接メモリアクセス制御装置１０３がメモリ１１０へのアクセス権を解放するためである。
【００６５】
ステップＳ４１９：直接メモリアクセスタスクコントローラ３０２は、チェックサム演算器命令出力部３０３にチェックサム演算結果出力命令を出力させる。チェックサム演算器命令出力部３０３は、直ちにチェックサム演算器１０６に命令を送信する。同時に、直接メモリアクセスタスクコントローラ３０２は、バスアクセスコントローラ３０４に、チェックサム演算結果をバッファ１０５とメモリ１１０に書き込む準備をするよう命令する。バスアクセスコントローラ３０４は、バッファ１０５に格納されたイーサネット(登録商標)フレームの所定の位置にチェックサム演算結果を格納するため、バッファ上の所定の位置を確定しておく。
【００６６】
さらに、バスアクセスコントローラ３０４は、メモリ１１０上にある転送元イーサネット(登録商標)フレームのチェックサム格納アドレスにチェックサム演算結果の書込みができるよう、メモリバス１１２のアドレス線に所定のアドレスを出力してメモリ１１０に書き込む準備をする。
【００６７】
ステップＳ４２０：直接メモリアクセスタスクコントローラ３０２は、バスアクセスコントローラ３０４に、チェックサム演算結果をバッファ１０５とメモリ１１０に格納された各イーサネット(登録商標)フレームの所定の位置（チェックサム格納位置）に書き込ませる。このチェックサム演算結果は、チェックサム演算結果出力命令を受けたチェックサム演算器１０６からメモリバス１１２のデータ線に出力されたものである。
【００６８】
この処理により、現在扱っているイーサネット(登録商標)フレームが送信先に送られた後に再送する必要性が生じた場合であっても、第２の直接メモリアクセス制御装置１０３がチェックサム演算器１０６にチェックサム演算させることなく、メモリ１１０に格納されたイーサネット(登録商標)フレームを速やかに再送することができる。この時点で、バッファ１０５のイーサネット(登録商標)フレームとメモリ１１０の転送元イーサネット(登録商標)フレームが完成し、いつでも出力できる形となる。
【００６９】
ステップＳ４２１：直接メモリアクセスタスクコントローラ３０２は、ステップＳ４２０にて行われたバッファ１０５及びメモリ１１０へのチェックサム演算結果の書込みの終了後に、アービタインターフェイス３０７にメモリ１１０の解放命令を出力させる。これは、第２の直接メモリアクセス制御装置１０３がメモリ１１０へのアクセス権を解放をするためである。
【００７０】
ステップＳ４２２：直接メモリアクセスタスクコントローラ３０２は、バスアクセスコントローラ３０４に、バッファ１０５に格納されたイーサネット(登録商標)フレームを通信インターフェイス１０８へ出力するよう命令する。命令を受信したバスアクセスコントローラ３０４は、直ちにバッファ１０５から外部バス３０６への直接メモリアクセス転送を開始する。
【００７１】
ステップＳ４２３：本処理を終了する。
【００７２】
イーサネット(登録商標)フレームを再送する場合は、第２の直接メモリアクセス制御装置１０３はチェックサム演算器１０６にチェックサム演算させず、ステップ４２０の処理によりチェックサム演算結果が付加された状態のイーサネット(登録商標)フレームをメモリ１１０から読み出し、再送する。
【００７３】
図７は、図１の通信装置におけるチェックサム演算器１０６の概略構成を示すブロック図である。
【００７４】
図７において、チェックサムタスクコントローラ５０１は、第１の直接メモリアクセス制御装置１０４、第２の直接メモリアクセス制御装置１０３から制御線１１４を介して入力される命令を元に、チェックサム演算器全体のタスク制御を行う。即ち、チェックサムタスクコントローラ５０１は第１及び第２の直接メモリアクセス制御装置１０４，１０３から制御線１１４を介してチェックサム開始命令を受信すると、該命令により指定されるチェックサム演算区間をレジスタ５０５に格納する。また、チェックサムタスクコントローラ５０１は、演算部５０２、マスク処理部５０３、メモリバスインターフェイス５０４にチェックサム演算の開始を指示する。
【００７５】
また、チェックサムタスクコントローラ５０１は直接メモリアクセス制御装置から制御線１１４を介してチェックサム演算の終了命令を受信すると、演算部５０２、マスク処理部５０３、メモリバスインターフェイス５０４にチェックサム演算の終了を指示する。
【００７６】
また、チェックサムタスクコントローラ５０１は第１及び第２の直接メモリアクセス制御装置１０４，１０３から制御線１１４を介してチェックサム演算結果の出力命令を受信すると、レジスタ５０５に格納されている演算結果の読み出しとメモリバス１１２のデータ線への出力を、メモリバスインターフェイス５０４に指示する。
【００７７】
演算部５０２は、チェックサムタスクコントローラ５０１からの指示に従い、マスク処理部５０３からの入力データに対して加算やビット反転などを行い、チェックサム演算を行う。また、演算部５０２は、チェックサムタスクコントローラ５０１からの指示に従い、チェックサム演算結果をレジスタ５０５に格納する。
【００７８】
マスク処理部５０３は、チェックサムタスクコントローラ５０１からの指示に従い、レジスタ５０５に格納されているチェックサム演算区間を読み出し、メモリバスインターフェイス５０４からの入力データに対してチェックサム演算区間外のデータに対するマスク処理を行う。
【００７９】
メモリバスインターフェイス５０４は、チェックサムタスクコントローラ５０１からの指示に従い、レジスタ５０５に格納されたチェックサム演算区間とメモリバス１１２のアドレス線の値とから、メモリバス１１２のデータ線に転送されるデータの必要なデータを特定して読み込み（スヌープし）、マスク処理部５０３に入力する。また、メモリバスインターフェイス５０４は、チェックサムタスクコントローラ５０１からの指示に従い、演算部５０２がチェックサム演算結果をレジスタ５０５から読み出し、メモリバス１１２のデータ線に出力する。
【００８０】
レジスタ５０５は、第１及び第２の直接メモリアクセス制御装置１０４，１０３の各チェックサム演算区間と各チェックサム演算過程に必要な中間値と各チェックサム演算結果を格納するレジスタである。チェックサム演算器１０６は、接続されている直接メモリアクセス制御装置の数だけ独立してレジスタを備える。
【００８１】
図８は、図７のチェックサム演算器１０６におけるチェックサム演算対象データ取得時のタイミングを示すタイミングチャートである。
【００８２】
信号６０１はプロセッサ１０１のクロック信号である。信号６０２は第１の直接メモリアクセス制御装置１０４から入力される、第１の直接メモリアクセス制御装置１０４のメモリ１１０へのアクセス状態を示すアクセス信号である。信号６０３は第２の直接メモリアクセス制御装置１０３から入力される、第２の直接メモリアクセス制御装置１０３のメモリ１１０へのアクセス状態を示すアクセス信号である。
【００８３】
信号６０４はメモリバス１１２のアドレス線の値である。信号６０５はメモリバス１１２のデータ線の値である。信号６０６はメモリバスインターフェイス５０４がメモリバス１１２のデータ線からリードしてきた３２ｂｉｔリードデータの値である。
【００８４】
信号６０７はマスク処理部５０３により３２ｂｉｔリードデータをマスク処理した３２ｂｉｔマスクデータの値である。信号６０８は３２ｂｉｔマスクデータを演算部５０２に送る際に分割した単位処理データを示している。
【００８５】
図８では、プロセッサ１０１は、メモリ１１０のデータ線は３２ｂｉｔバス、演算部５０２は８ｂｉｔデータを、それぞれ単位処理データとして扱っているが、もちろん使用するメモリの仕様やチェックサム演算処理系の仕様により上記値を変更してもよい。また、複数の直接メモリアクセス転送時にチェックサムを行うには、各直接メモリアクセス制御装置１０３，１０４からメモリ１１０に入力される、直接メモリアクセス制御装置のメモリ１１０へのアクセス状態を示す信号をチェックサム演算器１０６にも入力する。そして、それを基にメモリ１１０のデータ線から取得した３２ｂｉｔリードデータが、どの直接メモリアクセス制御装置が扱っているデータであるかを判別する。
【００８６】
チェックサムタスクコントローラ５０１は、任意の１つの直接メモリアクセス制御装置から開始命令を受け取ると、その直接メモリアクセス制御装置から入力される直接メモリアクセス制御装置のメモリ１１０へのアクセス状態を示す信号（図８では信号６０２及び信号６０３）を基に、メモリ１１０のデータ線から取得した３２ｂｉｔリードデータが、どの直接メモリアクセス制御装置が扱っているデータであるかを判別する。
【００８７】
その後、予め各直接メモリアクセス制御装置からセットされたチェックサム演算の対象となる区間を元に、必要に応じて３２ｂｉｔリードデータをマスクし３２ｂｉｔマスクデータとする。その後、３２ｂｉｔマスクデータを４分割し、８ｂｉｔの処理単位データとして演算部５０２に送り、サム値を計算していく。
【００８８】
最後に、各直接メモリアクセス制御装置がチェックサム演算器１０６に与えるチェックサム演算終了命令を受けて、サム値を元にチェックサムを計算し、レジスタ５０５に格納しておく。さらに、最後に各直接メモリアクセス制御装置がチェックサム演算器１０６に与えるチェックサム演算結果出力命令を受けて、レジスタ５０５に格納しておいたチェックサム演算結果をメモリバス１１２のデータ線に出力する。
【００８９】
上記実施形態によれば、従来のように、プロセッサが、まずチェックサム演算命令をハードウェアに与え、その応答を待ってから通信フレームの所定のアドレスにチェックサム演算結果を挿入して、再びハードウェアに通信フレームの送信命令を行うという過程を踏む必要が無くなる。また、一つ一つの通信フレームにおいて、通信プロトコルの違いに応じて毎回ハードウェアに与える命令を変える必要も無く、プロセッサの処理負担を減らすことができる。
【００９０】
また、通信フレームの再送信の要求がプロセッサからハードウェアに送られた場合においては、チェックサム演算を再度行わなくてよいので、直ちに直接メモリアクセス転送による通信フレームの送信が可能になる。
【００９１】
以上のことにより、データ転送における高速なスループットを実現することが可能になる。
【００９２】
本発明の目的は、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体を、システム或いは装置に供給することによっても達成される。その場合、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が記憶媒体に格納されたプログラムコードを読み出して実行する。該記憶媒体から読み出されたプログラムコード自体が上述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００９３】
また、プログラムコードを供給するための記憶媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光磁気ディスク等を用いることができる。また、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ±Ｒ、ＤＶＤ−ＲＡＭ、ＤＶＤ±ＲＷ等の光ディスク、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。また、プログラムコードをネットワークを介してダウンロードしてもよい。
【００９４】
コンピュータが読み出したプログラムコードを実行することにより、上述した実施の形態の機能が実現されるだけではない。すなわち、プログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）等が実際の処理の一部又は全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれる。
【００９５】
更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。そして、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部又は全部を行い、その処理によって上述した各実施の形態の機能が実現される場合も含まれる。
【図面の簡単な説明】
【００９６】
【図１】本発明が適用された通信装置の構成を示すブロック図である。
【図２】（ａ）はＩＰヘッダの構造を示す図であり、（ｂ）はＴＣＰヘッダの構造を示す図である。
【図３】図１の通信装置におけるデータ転送処理を示すフローチャートである。
【図４】第２の直接メモリアクセス制御装置の構成を示すブロック図である。
【図５】図３のステップＳ２０７におけるイーサネット(登録商標)フレーム転送時の動作処理を示すフローチャート（その１）である。
【図６】図３のステップＳ２０７におけるイーサネット(登録商標)フレーム転送時の動作処理を示すフローチャート（その２）である。
【図７】チェックサム演算器の概略構成を示すブロック図である。
【図８】チェックサム演算器におけるチェックサム演算対象データ取得時のタイミングチャートの一例を示す図である。
【符号の説明】
【００９７】
１０１  プロセッサ
１０２  アービタ
１０３  第２の直接メモリアクセス装置
１０４  第１の直接メモリアクセス装置
１０５  バッファ
１０６  チェックサム演算器
１０７  映像入力インターフェイス
１０８  通信インターフェイス
１０９  メモリコントローラ
１１０  メモリ
１１１  プロセッサバス
１１２  メモリバス
１１３  調停信号線
１１４  制御線
３０１  プロセッサインターフェイス
３０２  直接メモリアクセスタスクコントローラ
３０３  チェックサム演算器命令出力部
３０４  バスアクセスコントローラ
３０５  通信プロトコル解析部
３０６  外部バス
３０７  アービタインターフェイス
【図１】
2008109473.tif 000003
【図２】
2008109473.tif 000004
【図３】
2008109473.tif 000005
【図４】
2008109473.tif 000006
【図５】
2008109473.tif 000007
【図６】
2008109473.tif 000008
【図７】
2008109473.tif 000009
【図８】
2008109473.tif 000010