(57)【要約】【課題】  パケット変換処理過程におけるメモリへのコピー回数を低減して、スループットを向上させる。【解決手段】  データを記憶する記憶装置４と、データを記憶装置４に格納する際に、データを所定のデータ長毎に分割し、かつ分割データにプロトコルヘッダを付加するための第一のブランク領域および分割データにプロトコルフッタを付加するための第二のブランク領域を確保しながら記憶装置４に分割データを離間配置する転送装置５と、記憶装置４に離間配置されたデータにアクセスする際に連続データとしてアクセスを実現するための読出しアドレス制御手段６と、分割データにパケット変換処理を行った際に、付加されるプロトコルヘッダを第一のブランク領域に格納し、かつ付加されるプロトコルフッタを第二のブランク領域に格納するための書込みアドレス制御手段６とを具備する。【選択図】      図３
2005167965.tif 000002
【特許請求の範囲】
【請求項１】
データをネットワーク間で通信するための通信プロトコルに適合したパケットに変換するパケット処理方法であって、前記データを所定のデータ長毎に分割して複数の分割データとする工程と、前記分割データを記憶する工程と、前記分割データを記憶する際に、前記分割データの各々を格納する記憶領域の前の領域に前記分割データに対応する第一のブランク領域を確保する工程と、前記分割データの各々を格納する記憶領域の後の領域に前記分割データに対応する第二のブランク領域を確保する工程と、前記分割データにパケット変換処理を行った際に、付加されるプロトコルヘッダを前記第一のブランク領域に格納する工程と、前記分割データにパケット変換処理を行った際に、付加されるプロトコルフッタを前記第二のブランク領域に格納する工程と、各々の分割データについて付加されたプロトコルヘッダおよびプロトコルフッタを含む記憶領域のデータを１つのパケットとして識別する工程と、を含むことを特徴とするパケット処理方法。
【請求項２】
請求項１に記載されたパケット処理方法を実現する装置であって、データを記憶する記憶装置と、データを前記記憶装置に格納する際に、データを所定のデータ長毎に分割し、かつ前記分割データにプロトコルヘッダを付加するための第一のブランク領域および前記分割データにプロトコルフッタを付加するための第二のブランク領域を確保しながら前記記憶装置に分割データを離間配置する転送装置と、前記記憶装置に離間配置されたデータにアクセスする際に連続データとしてアクセスを実現するための読出しアドレス制御手段と、前記分割データにパケット変換処理を行った際に、付加されるプロトコルヘッダを前記第一のブランク領域に格納し、かつ付加されるプロトコルフッタを前記第二のブランク領域に格納するための書込みアドレス制御手段と、を具備することを特徴とするパケット処理装置。
【請求項３】
分割データのデータ長と、第一のブランク領域の大きさと、第二のブランク領域の大きさとを、各々任意に設定するためのレジスタを具備することを特徴とする請求項２記載のパケット処理装置。
【請求項４】
転送装置は、転送元から転送先へデータを転送する際に、設定した転送回数毎に転送先アドレスに任意値を加算しながら連続転送する機能を具備して、分割データのデータ長分だけ記憶装置にデータを転送する度に、第一のブランク領域のアドレス数と第二のブランク領域のアドレス数との和を転送先アドレスに加算して次のデータを連続転送することにより、前記記憶装置への分割データの離間配置を実現するように構成されていることを特徴とする請求項２または３に記載のパケット処理装置。
【請求項５】
読出しアドレス制御手段と書込みアドレス制御手段とは、プロトコルヘッダおよび、またはプロトコルフッタを付加する度に更新されるように構成され、パケット処理装置は、任意の時点での記憶装置上の分割データ格納領域の大きさを示す第一のレジスタと、プロトコルヘッダが付加される度に更新され、任意の時点での前記記憶装置上のプロトコルヘッダ格納用ブランク領域の大きさを示す第二のレジスタと、プロトコルフッタが付加される度に更新され、任意の時点での前記記憶装置上のプロトコルフッタ格納用ブランク領域の大きさを示す第三のレジスタとを具備することを特徴とする請求項２から４までのいずれか１項記載のパケット処理装置。
【請求項６】
読出しアドレス制御手段は、第二のレジスタの値と第三のレジスタの値との和から、記憶装置に格納されている分割データ間のブランク領域の大きさを算出する機能を具備して、前記分割データを前記記憶装置の外部からアクセスする際に、第一のレジスタの値に対応した読出し回数毎に、アクセス先のアドレスに前記算出値を加算することで、離間配置した前記分割データに対する連続アクセスを実現可能に構成されていることを特徴とする請求項５記載のパケット処理装置。
【請求項７】
書込みアドレス制御手段は、第一のレジスタの値と第二のレジスタの値と第三のレジスタの値との和に、プロトコルヘッダの付加回数を乗じたうえで、第二のレジスタの値から付加するプロトコルヘッダの大きさを減算したオフセット値を和することで、各々の分割データに対応するプロトコルヘッダ格納領域の離間アドレス値を算出し、また第一のレジスタの値と第二のレジスタの値と第三のレジスタの値との和から、付加するプロトコルフッタの大きさを減算した値に、プロトコルフッタの付加回数を乗ずることで、各々の分割データに対応するプロトコルフッタ格納領域の離間アドレス値を算出する機能を具備して、１つのプロトコルヘッダおよび、または１つのプロトコルフッタを記憶装置に格納する度に、格納先のアドレスに前記算出値を加算することで、前記記憶装置上に離間配置した前記分割データ各々に対するプロトコルヘッダおよび、またはプロトコルフッタの付加を実現可能に構成されていることを特徴とする請求項５または６記載のパケット処理装置。
【請求項８】
付加するプロトコルヘッダおよび、またはプロトコルフッタの大きさを、プロトコル毎に予め設定する手段を有することを特徴とする請求項７記載のパケット処理装置。
【請求項９】
付加するプロトコルヘッダおよび、またはプロトコルフッタの大きさを、各々のデータ長をカウントする専用のカウンタによりその都度算出するように構成されていることを特徴とする請求項７記載のパケット処理装置。
【請求項１０】
データを記憶する記憶装置と、前記記憶装置に格納されたデータに対してパケット処理を行うＣＰＵと、前記記憶装置とＣＰＵとの間でデータ転送を行う転送装置とを具備し、前記転送装置は、任意に設定可能な転送回数毎にデータの転送先アドレスを初期化することで、前記記憶装置上の転送先アドレスを一定領域内で無限にループさせるように構成されていることを特徴とするパケット処理装置。
【請求項１１】
記憶装置内でパケット処理が完了しているデータが格納されている記憶領域の最終アドレスと、転送装置から前記記憶装置にデータを送信する際の送信先アドレスとの差分を算出して、アドレス差分算出値が予め設定したアドレス差分値よりも小さくなる場合に、前記転送装置に対してウェイト制御信号を出力するウェイト命令制御手段を具備することを特徴とする請求項１０記載のパケット処理装置。
【請求項１２】
ウェイト命令制御手段は、アドレス差分値を設定するためのレジスタを具備することを特徴とする請求項１１記載のパケット処理装置。
【請求項１３】
転送装置は、ウェイト命令制御手段よりウェイト制御信号が入力された場合に前記転送装置から記憶装置へのデータ転送を一時停止させるように構成されていることを特徴とする請求項１１または１２記載のパケット処理装置。
【請求項１４】
転送装置は、ウェイト命令制御手段より入力されるウェイト制御信号の入力回数をカウントするカウンタと、このカウンタによるカウント値が予め設定した値に達した場合に、前記転送装置から記憶装置へのデータ転送を一時停止させる制御部とを具備することを特徴とする請求項１１または１２記載のパケット処理装置。
【請求項１５】
転送装置は、ウェイト命令制御手段よりウェイト制御信号が入力された場合に、ＣＰＵに対して通知信号を出力して、前記ＣＰＵの他のタスクに対するパケット処理の優先度を上げるように構成されていることを特徴とする請求項１３記載のパケット処理装置。
【請求項１６】
転送装置は、カウンタによるカウント値が予め設定した値に達した場合に、ＣＰＵに対して通知信号を出力して、前記ＣＰＵの他のタスクに対するパケット処理の優先度を上げるように構成されていることを特徴とする請求項１４記載のパケット処理装置。
【請求項１７】
通知信号は優先レベルを有した割込み要求信号であることを特徴とする請求項１５または１６記載のパケット処理装置。
【請求項１８】
転送装置は、ＣＰＵに割込み要求を出力する際に、アドレス差分算出値に応じた優先レベルの割込み要求を出力するように構成されていることを特徴とする請求項１７記載のパケット処理装置。
【請求項１９】
転送装置は、アドレス差分算出値が小さな時ほど優先レベルの高い割込み要求を出力してパケット処理の優先度を上げるように構成されていることを特徴とする請求項１８記載のパケット処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はパケット処理方法および装置に関し、特にデータをネットワーク間で通信するための通信プロトコルに適合したパケットに変換する際のパケット処理方法および装置に関する。
【背景技術】
【０００２】
データのパケット変換処理は、一般的に以下のように行われる。すなわち、ネットワークに送信されるデータは、通信を行うネットワークの最大伝送ユニットの制約や目的によって定めたデータ長を越えると、分割される。分割された各々のデータは、プロトコルスタックにより処理される。この処理により、各々のデータには複数のプロトコルヘッダやプロトコルフッタが付加され、ネットワーク上で伝送され得るパケットを形成する。このような処理過程において、各々のデータは、プロトコルヘッダやプロトコルフッタを付加される度に、ユーザまたはアプリケーションプログラムに割り当てられたメモリのある領域から、プロセッサの使用専用のメモリの別の領域へ、単にコピーされる。パケットで伝送される各々のデータは別々にコピーされるため、プロセッサにかかる負荷は大きく、また頻繁な伝送により大量のメモリバスの帯域幅が使用される（特許文献１）。
【特許文献１】特表２００２−５３８７３１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記従来の処理方法では、プロトコルスタック処理においてプロトコルヘッダやプロトコルフッタを付加する度に、上記のように各々のデータに対するコピーが発生するため、プロセッサがその処理に必要とする時間が長くなり、スループットが低下するおそれを有するという問題点があった。
【０００４】
本発明は、上記問題点を解決するものであり、パケット変換処理過程におけるメモリへのコピー回数を低減して、スループットを向上させるパケット変換処理方式およびパケット変換処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
パケット処理方法についての本発明は、次のような処理工程を講じることにより、上記の課題を解決する。
データをネットワーク間で通信するための通信プロトコルに適合したパケットに変換するパケット処理方法が、前記データを所定のデータ長毎に分割して複数の分割データとする工程と、前記分割データを記憶する工程と、前記分割データを記憶する際に、前記分割データの各々を格納する記憶領域の前の領域に前記分割データに対応する第一のブランク領域を確保する工程と、前記分割データの各々を格納する記憶領域の後の領域に前記分割データに対応する第二のブランク領域を確保する工程と、前記分割データにパケット変換処理を行った際に、付加されるプロトコルヘッダを前記第一のブランク領域に格納する工程と、前記分割データにパケット変換処理を行った際に、付加されるプロトコルフッタを前記第二のブランク領域に格納する工程と、各々の分割データについて付加されたプロトコルヘッダおよびプロトコルフッタを含む記憶領域のデータを１つのパケットとして識別する工程と、を含む。
【０００６】
以上の処理工程を講じることにより、データに対するパケット変換処理によってプロトコルヘッダおよび、またはプロトコルフッタを付加した際に、前記プロトコルヘッダおよび、またはプロトコルフッタを含むデータを、パケット変換処理で使用するプロセッサにおける使用専用のメモリからユーザスペース（例えばアプリケーションプログラムのデータ格納装置）にその都度コピーする必要がなくなり、付加するプロトコルヘッダおよび、またはプロトコルフッタのみを、ユーザスペース上に確保した第一のブランク領域ないし第二のブランク領域にコピーすればよい。
【０００７】
また、前記パケット処理方法を実現するパケット処理装置についての本発明は、次のような構成により、上記の課題を解決する。
データを記憶する記憶装置と、データを前記記憶装置に格納する際に、データを所定のデータ長毎に分割し、かつ前記分割データにプロトコルヘッダを付加するための第一のブランク領域および前記分割データにプロトコルフッタを付加するための第二のブランク領域を確保しながら前記記憶装置に分割データを離間配置する転送装置と、前記記憶装置に離間配置されたデータにアクセスする際に連続データとしてアクセスを実現するための読出しアドレス制御手段と、前記分割データにパケット変換処理を行った際に、付加されるプロトコルヘッダを前記第一のブランク領域に格納し、かつ付加されるプロトコルフッタを前記第二のブランク領域に格納するための書込みアドレス制御手段と、を具備する。
【０００８】
これにより、データに対するパケット変換処理によってプロトコルヘッダおよび、またはプロトコルフッタを付加した際に、前記プロトコルヘッダおよび、またはプロトコルフッタを含むデータを、パケット変換処理で使用するプロセッサの使用専用のメモリから記憶装置にその都度コピーする必要がなくなり、付加するプロトコルヘッダおよび、またはプロトコルフッタのみを、記憶装置上に確保した第一のブランク領域および、または第二のブランク領域にコピーすればよく、データに対するパケット変換処理のスループットを向上することができる。
【０００９】
また、分割データのデータ長と、第一のブランク領域の大きさと、第二のブランク領域の大きさとを、各々任意に設定するためのレジスタを具備することで、記憶装置に対する分割データの離間配置をより柔軟に制御することが可能である。
【００１０】
転送装置は、転送元側から転送先側へデータを転送する際に、設定した転送回数毎に転送先アドレスに任意値を加算しながら連続転送する機能を有するＤＭＡＣであり、分割データのデータ長分だけ記憶装置にデータを転送する度に、第一のブランク領域のアドレス数と第二のブランク領域のアドレス数との和を転送先アドレスに加算して次のデータを連続転送することにより、前記記憶装置への分割データの離間配置を実現するように構成されているのが好適である。
【００１１】
読出しアドレス制御手段と書込みアドレス制御手段は、プロトコルヘッダおよび、またはプロトコルフッタを付加する度に更新されるように構成され、パケット処理装置は、任意の時点での記憶装置上の分割データ格納領域の大きさを示す第一のレジスタと、プロトコルヘッダが付加される度に更新され、任意の時点での前記記憶装置上のプロトコルヘッダ格納用ブランク領域の大きさを示す第二のレジスタと、プロトコルフッタが付加される度に更新され、任意の時点での前記記憶装置上のプロトコルフッタ格納用ブランク領域の大きさを示す第三のレジスタを具備するのが好適である。これらは、データに対する複数のプロトコルスタック処理を実現する上で有用である。
【００１２】
また、読出しアドレス制御手段は、第二のレジスタの値と第三のレジスタの値との和から、記憶装置に格納されている分割データ間のブランク領域の大きさを算出する機能を具備して、前記分割データを前記記憶装置の外部からアクセスする際に、第一のレジスタの値に対応した読出し回数毎に、アクセス先のアドレスに前記算出値を加算することで、離間配置した前記分割データに対する連続アクセスを実現可能に構成されていることが好適である。
【００１３】
また、書込みアドレス制御手段は、第一のレジスタの値と第二のレジスタの値と第三のレジスタの値との和に、プロトコルヘッダの付加回数を乗じたうえで、第二のレジスタの値から付加するプロトコルヘッダの大きさを減算したオフセット値を和することで、各々の分割データに対応するプロトコルヘッダ格納領域の離間アドレス値を算出し、また第一のレジスタの値と第二のレジスタの値と第三のレジスタの値との和から、付加するプロトコルフッタの大きさを減算した値に、プロトコルフッタの付加回数を乗ずることで、各々の分割データに対応するプロトコルフッタ格納領域の離間アドレス値を算出する機能を具備して、１つのプロトコルヘッダおよび、または１つのプロトコルフッタを記憶装置に格納する度に、格納先のアドレスに前記算出値を加算することで、前記記憶装置上に離間配置した前記分割データ各々に対するプロトコルヘッダおよび、またはプロトコルフッタの付加を実現可能に構成されていることが好適である。
【００１４】
付加するプロトコルヘッダおよび、またはプロトコルフッタの大きさは、例えば標準的なイーサネット（登録商標）対応のＴＣＰ／ＩＰにおいては、ＴＣＰヘッダは２０もしくは２４バイト、ＩＰヘッダは２０バイト以上かつ６０バイト以下、イーサネット（登録商標）ヘッダは１４バイト、フッタとなるＣＲＣは４バイトという具合に、プロトコル毎に予め設定しておくと良い。もしくは、データに対してパケット変換処理を行う過程で、データに対して実際に付加されるプロトコルヘッダおよび、またはプロトコルフッタ各々のデータ長をカウントする専用のカウンタを設けることにより、その都度算出することもできる。
【００１５】
第二のパケット処理装置についての本発明は、転送装置を次のように構成することにより、パケット変換処理に必要な記憶装置上の作業用領域を大幅に削減することが可能である。
【００１６】
すなわち本発明は、データを記憶する記憶装置と、タスクの一つとして前記記憶装置に格納されたデータに対してパケット処理を行うＣＰＵと、前記記憶装置とＣＰＵとの間でデータ転送を行う転送装置とを具備し、前記転送装置は、任意に設定可能な転送回数毎にデータの転送先アドレスを初期化することで、前記記憶装置上の転送先アドレスを一定領域内で無限にループさせるように構成されているものである。
【００１７】
このようなものであると、少ないメモリ空間での連続したパケット処理を実現することができ、例えば画像データをリアルタイムにネットワークに送信するような場合に、つまりデータに対して連続的にパケット変換処理を行ってネットワークに送信し続けるような場合に、パケット変換処理に必要な記憶装置上の作業用領域を大幅に削減することが可能である。
【００１８】
また本発明は、記憶装置内でパケット処理が完了しているデータが格納されている記憶領域の最終アドレスと、転送装置から前記記憶装置にデータを送信する際の送信先アドレスとの差分を算出して、アドレス差分算出値が予め設定したアドレス差分値よりも小さくなる場合に、前記転送装置に対してウェイト制御信号を出力するウェイト命令制御手段を具備していることが好適である。このようなものであると、転送装置によるパケット処理未完了データへの上書きを防止することができる。
【００１９】
またウェイト命令制御手段が、アドレス差分値を任意に設定するためのレジスタを具備することにより、転送装置によるパケット処理未完了データへの上書きをより柔軟に防止することも可能である。
【００２０】
また転送装置が、ウェイト命令制御手段よりウェイト制御信号が入力された場合に、前記転送装置から記憶装置へのデータ転送を一時停止させるように構成されることが好適である。これにより、転送装置によるパケット処理未完了データへの上書きを防止することができる。
【００２１】
また転送装置が、ウェイト命令制御手段より入力されるウェイト制御信号の入力回数をカウントするカウンタと、このカウンタによるカウント値が予め設定した値に達した場合に、前記転送装置から記憶装置へのデータ転送を一時停止させる制御部とを具備することが好適であり、このようなものであると、転送装置によるパケット処理未完了データへの上書きをより柔軟に防止することが可能である。
【００２２】
また転送装置が、ウェイト命令制御手段よりウェイト制御信号が入力された場合に、ＣＰＵに対して優先レベルの高い割込み要求を出力して、前記ＣＰＵの他のタスクに対するパケット処理の優先度を上げるように構成されていると好適である。
【００２３】
また転送装置が、カウンタによるカウント値が予め設定した回数に達した場合に、ＣＰＵに対して優先レベルの高い割込み要求を出力し、前記ＣＰＵの他のタスクに対するパケット処理の優先度を上げるように構成されていることが好適である。このようなものであると、ウェイト命令制御手段からのウェイト制御信号が頻発する場合、すなわちパケット処理のスループットが低下するような場合に、有効に対処することができる。
【００２４】
また転送装置が、ＣＰＵに割込み要求を出力する際に、アドレス差分算出値に応じた優先レベルの割込み要求を出力するように構成され、またアドレス差分算出値が小さな時ほど優先レベルの高い割込み要求を出力するように構成されて、パケット処理の優先度を上げるように構成されていることが好適である。このようなものであると、ＣＰＵの他のタスクの優先度までをも含めた、より柔軟なパケット処理を実現することができる。
【発明の効果】
【００２５】
以上のように、本発明によれば、データに対するパケット変換処理によってプロトコルヘッダおよび、またはプロトコルフッタを付加した際に、プロトコルヘッダおよび、またはプロトコルフッタを含むデータを、パケット変換処理で使用するプロセッサの使用専用のメモリからユーザスペース（例えばアプリケーションプログラムのデータ格納装置）にその都度コピーする必要がなくなり、付加するプロトコルヘッダおよび、またはプロトコルフッタのみを、ユーザスペース上に確保した第一のブランク領域および、または第二のブランク領域にコピーすればよく、その結果として、データに対するパケット変換処理のスループットの向上を図ることができる。
【発明を実施するための最良の形態】
【００２６】
（第１の実施の形態）
以下、本発明の第１の実施の形態のパケット処理方法について、図面を参照しながら説明する。
【００２７】
図１は、本発明の実施の形態のパケット処理方法の態様を示す模式図である。ここで、１はパケット処理実施前のデータ、２は記憶装置、２００はデータ１を所定の大きさに分割した分割データを格納する分割データ格納領域、２０１は分割データ格納領域２００の各分割データに対応するプロトコルヘッダを格納するためのヘッダ用ブランク領域、２０２は分割データ格納領域２００の各分割データに対応するプロトコルフッタを格納するためのフッタ用ブランク領域、２０３はパケット処理によって各分割データにプロトコルヘッダおよびプロトコルフッタが付加された状態のパケットである。
【００２８】
データ１をネットワーク間で通信するための通信プロトコルに適合したパケットに変換する際に、データ１は、まず図１（ａ）に示すように所定の大きさに分割されて、パケット変換処理の作業用領域となる記憶装置２上に離間配置された、分割データ格納領域２００に格納される。このとき、各分割データの大きさと、各分割データに対応する分割データ格納領域２００の大きさとは、等しいものとする。記憶装置２における各々の分割データ格納領域２００の前方の記憶領域にはヘッダ用ブランク領域２０１が確保され、また各々の分割データ格納領域２００の後方の記憶領域にはフッタ用ブランク領域２０２が確保される。
【００２９】
次に、分割データ格納領域２００に格納されている各々の分割データにパケット変換処理を行う。パケット変換処理を行うと、分割データには各々に対応するプロトコルヘッダもしくはプロトコルフッタが付加され、パケットへと変換される。このとき、図１（ｂ）に示すように、付加されるプロトコルヘッダはヘッダ用ブランク領域２０１に格納され、付加されるプロトコルフッタはフッタ用ブランク領域２０２に格納される。プロトコルヘッダは、ヘッダ用ブランク領域２０１に格納されるプロトコルヘッダと該当プロトコルヘッダに対応する分割データとの間にブランク領域がないように格納される。また、プロトコルフッタは、フッタ用ブランク領域２０２に格納されるプロトコルフッタと該当プロトコルフッタに対応する分割データとの間にブランク領域がないように格納される。
【００３０】
図１（ｂ）において「ヘッダＡ」「ヘッダＢ」と表示するように、パケット変換処理において分割データに対して複数のプロトコルヘッダを付加する場合は、パケット変換処理の過程で最初にヘッダ用ブランク領域２０１に格納されたプロトコルヘッダ（ヘッダＡ）よりも前方のブランク領域に、以降付加されるプロトコルヘッダ（ヘッダＢ）を順番に積み上げていく。このとき、各プロトコルヘッダ間にはブランク領域がないように格納される。一方、パケット変換処理において分割データに対して複数のプロトコルフッタを付加する場合は、パケット変換処理の過程で最初にフッタ用ブランク領域２０２に格納されたプロトコルフッタよりも後方のブランク領域に、以降付加されるプロトコルフッタを順番に格納していく。このとき、各プロトコルフッタ間にはブランク領域がないように格納される。分割データに対するパケット変換処理により、各分割データに対応するすべてのプロトコルヘッダおよびプロトコルフッタが付加されると、図１（ｂ）に示すように記憶装置２上にパケット２０３が出来上がる。
【００３１】
以上、本発明のパケット処理方式の実施の形態の概要について説明したが、以下、本発明のパケット処理方式の実施の形態の詳細について、ＴＣＰ／ＩＰのパケット処理を例として、図面を参照しながら説明する。
【００３２】
図２は、本発明の実施の形態におけるイーサネット（登録商標）対応ＴＣＰ／ＩＰパケット処理方法の態様を示す模式図である。ここで、２０４は既に分割データが格納されている分割データ格納領域、２０５はヘッダ用ブランク領域、２０６はフッタ用ブランク領域、２０７はＴＣＰヘッダ、２０８はヘッダ用ブランク領域、２０９はＩＰヘッダ、２１０はヘッダ用ブランク領域、２１１はイーサネット（登録商標）ヘッダ、２１２はＣＲＣ、２１３はパケットである。
【００３３】
図２（ａ）は、イーサネット（登録商標）対応ＴＣＰ／ＩＰパケット変換処理の作業用領域となる記憶装置上の分割データ格納時の初期状態を示す。各々の分割データ格納領域２０４の前後には、各々に対応するヘッダ用ブランク領域２０５とフッタ用ブランク領域２０６とが確保されている。
【００３４】
図２（ｂ）は、イーサネット（登録商標）対応ＴＣＰ／ＩＰパケット変換処理の過程で、各分割データにＴＣＰヘッダ２０７が付加された状態を示す。各分割データ格納領域２０４に対応する同図（ａ）のヘッダ用ブランク領域２０５には、分割データ格納領域２０４の各分割データに対応するＴＣＰヘッダ２０７が格納される。このとき、各々のヘッダ用ブランク領域２０５には、ＴＣＰヘッダ２０７の格納領域を除いたヘッダ用ブランク領域２０８が残る。
【００３５】
図２（ｃ）は、イーサネット（登録商標）対応ＴＣＰ／ＩＰパケット変換処理の過程で、各分割データにＩＰヘッダ２０９が付加された状態を示す。各分割データ格納領域２０４に対応する同図（ｂ）のヘッダ用ブランク領域２０８には、分割データ格納領域２０４の各分割データと各ＴＣＰヘッダ２０７に対応するＩＰヘッダ２０９が格納される。このとき、各々のヘッダ用ブランク領域２０８には、ＩＰヘッダ２０９の格納領域を除いたヘッダ用ブランク領域２１０が残る。
【００３６】
図２（ｄ）は、イーサネット（登録商標）対応ＴＣＰ／ＩＰパケット変換処理の過程で、各分割データにイーサネット（登録商標）ヘッダ２１１およびＣＲＣ２１２が付加された状態を示す。各分割データ格納領域２０４に対応する同図（ｃ）のヘッダ用ブランク領域２１０には、分割データ格納領域２０４の各分割データと各ＴＣＰヘッダ２０７と各ＩＰヘッダ２０９とに対応するイーサネット（登録商標）ヘッダ２１１が格納される。また、各分割データ格納領域２０４に対応する同図（ａ）〜（ｃ）のフッタ用ブランク領域２０６には、分割データ格納領域２０４の各分割データと各ＴＣＰヘッダ２０７と各ＩＰヘッダ２０９と各イーサネット（登録商標）ヘッダ２１１とに対応するＣＲＣ２１２が格納される。以上によって、記憶装置上にパケット２１３が出来上がる。
【００３７】
以上、本発明のパケット処理方法の実施の形態について、ＴＣＰ／ＩＰのパケット処理を例に説明したが、以下、本発明のパケット変換処理方法を実現するパケット処理装置の実施の形態について、図面を参照しながら説明する。
（第２の実施の形態）
図３は、本発明の第２の実施の形態におけるパケット処理装置の構成を示すブロック図である。ここで、３はＣＰＵ、４は記憶装置、５はＤＭＡ、６はＣＰＵ３が記憶装置４にアクセスする際にアドレスデータの変換を行うアドレス変換器、７はＣＰＵ３と記憶装置４とＤＭＡ５との間でアドレスデータを転送する双方向アドレスバス、８はＣＰＵ３と記憶装置４とＤＭＡ５との間でデータを転送する双方向データバス、１０はデータバッファを備えネットワークとの接続制御を行うメディアアクセスコントローラ（以下、「ＭＡＣ」と称する）、１１はネットワークとの物理的なインターフェースであるＰＨＹ、１２はＤＭＡ５からデータバス８にデータを転送するデータバス、１３はデータバス８からＤＭＡ５にデータを転送するデータバス、１４はＤＭＡ５からアドレスバス７にアドレスデータを転送するアドレスバス、１５はアドレスバス７からＤＭＡ５にアドレスデータを転送するアドレスバス、１６はＰＨＹ１１を経てＭＡＣ１０が受信したデータの記憶装置４への転送を指示するためにＣＰＵ３からＤＭＡ５に出力される受信データ転送要求信号、１７は記憶装置４のデータのＭＡＣ１０への転送を指示するためにＣＰＵ３からＤＭＡ５に出力される送信データ転送要求信号、１８はデータバス８からＣＰＵ３にデータを転送するデータバス、１９はＣＰＵ３からデータバス８にデータを転送するデータバス、２０はＣＰＵ３からアドレス変換器６へのアドレスデータを転送するアドレスバス、２１はアドレス変換器６からアドレスバス７にアドレス変換器６で変換されたアドレスデータを転送するアドレスバス、２２は記憶装置４に対してデータ読出しを指示するためにＣＰＵ３から記憶装置４とアドレス変換器６とに出力される読出し要求信号、２３は記憶装置４に対してデータ書込みを指示するためにＣＰＵ３から記憶装置４とアドレス変換器６に出力される書込み要求信号、２４は記憶装置４に対してデータ書込みを指示するためにＤＭＡ５から記憶装置４に出力される書込み要求信号、２５は記憶装置４に対してデータ読出しを指示するためにＤＭＡ５から記憶装置４に出力される読出し要求信号、２６はデータバス８から記憶装置４にデータを転送するデータバス、２７は記憶装置４からデータバス８にデータを転送するデータバス、２８はアドレスバス７から記憶装置４にアドレスデータを転送するアドレスバス、２９はＤＭＡ５からＭＡＣ１０にアドレスデータを転送するアドレスバス、３０はＭＡＣ１０からＤＭＡ５にネットワークからの受信データを転送する受信用データバス、３１はＤＭＡ５からＭＡＣ１０にネットワークへの送信データを転送する送信用データバス、３２はＭＡＣ１０のデータバッファから受信データを読出すためにＤＭＡ５からＭＡＣ１０に出力される読出し要求信号、３３はＭＡＣ１０のデータバッファに対して送信データを格納するためにＤＭＡ５からＭＡＣ１０に出力される書込み要求信号である。
【００３８】
なお、ここでデータバス１２とデータバス１３、アドレスバス１４とアドレスバス１５、データバス１８とデータバス１９、データバス２６とデータバス２７、受信用データバス３０と送信用データバス３１は、各々、双方向バスにて構成してもよい。
【００３９】
ＰＨＹ１１により受信したデータは、ＭＡＣ１０内に備えられているデータバッファに一時格納される。このデータバッファに一時格納された受信データを記憶装置４に転送させるために、ＣＰＵ３は、ＤＭＡ５に対して、受信データ転送要求信号１６と、記憶装置４のデータ転送先となる先頭のアドレスデータとを出力する。このとき、ＣＰＵ３が出力するアドレスデータは、アドレスバス２０を経由してアドレス変換器６に入力されるが、アドレス変換器６では何も行われずにアドレスバス２１に出力され、アドレスバス７とアドレスバス１５を経由してＤＭＡ５に入力される。アドレス変換器６によるアドレスデータの変換については後述する。ＤＭＡ５は、受信データ転送要求信号１６とアドレスデータとが入力されると、ＭＡＣ１０内に備えられているデータバッファから入力されたアドレスデータの示す記憶装置４の記憶領域に対して、ＭＡＣ１０内のデータバッファに一時格納されている受信データの転送を開始する。このときＤＭＡ５は、図２（ａ）に示すように、データを所定の大きさ毎に分割し、かつ記憶装置４上に、分割したデータの離間配置を行う。
【００４０】
以下、ＤＭＡ５によるデータの分割と、分割されたデータの離間配置とについて、図面を参照しながら説明する。
図４は、ＤＭＡ５の構成を示すブロック図である。ここで、５００は初期分割データ長レジスタ、５０１はヘッダ用初期ブランク領域レジスタ、５０２はフッタ用初期ブランク領域レジスタ、５０３は受信用データバス３０から入力されるデータの転送回数をカウントするカウンタ、５０４は初期分割データ長レジスタ５００の値とカウンタ５０３の値との大小関係を比較する比較器、５０５は比較器５０４の比較結果に応じてアドレスデータに加算を行う加算器、５０６は図３の記憶装置４のアドレスを指定するためのアドレスデータを格納する記憶装置用アドレスバッファ、５０７は図３のＭＡＣ１０内のデータバッファのアドレスを指定するためのアドレスデータを格納するＭＡＣ用アドレスバッファ、５０８は受信用データバス３０から入力されるデータを格納する受信データバッファ、５０９はデータバス１３から入力されるデータを格納する送信データバッファ、５１０は制御部である。また、５１１は図３の記憶装置４に配置する分割データ各々の大きさを記憶装置４のアドレス数で示す初期分割データ長情報Ｘ、５１２は記憶装置４に配置するプロトコルヘッダ用の各々のブランク領域の大きさを記憶装置４のアドレス数で示すヘッダ用初期ブランク領域の大きさ情報Ｙ、５１３は記憶装置４に配置するプロトコルフッタ用の各々のブランク領域の大きさを記憶装置４のアドレス数で示すフッタ用初期ブランク領域の大きさ情報Ｚ、５１４はカウンタ５０３のカウント値である転送回数情報、５１５は比較器５０４から加算器５０５に出力される比較結果、５１６は記憶装置用アドレスバッファ５０６から加算機５０５に入力されるアドレスデータ、５１７は加算器５０５から記憶装置用アドレスバッファ５０６に出力されるアドレスデータである。
【００４１】
初期分割データ長レジスタ５００には、図３の記憶装置４にデータを分割配置する際の各分割データの大きさを示す初期分割データ長情報Ｘが予め格納されている。同様に、ヘッダ用初期ブランク領域レジスタ５０１には、記憶装置４に配置するプロトコルヘッダ用の各々のブランク領域の大きさを示すヘッダ用初期ブランク領域の大きさ情報Ｙが予め格納されており、フッタ用初期ブランク領域レジスタ５０２には、記憶装置４に配置するプロトコルフッタ用の各々のブランク領域の大きさを示すフッタ用初期ブランク領域の大きさ情報Ｚが予め格納されている。
【００４２】
ＣＰＵ３からＤＭＡ５に受信データ転送要求信号１６とアドレスデータとが入力されると、受信データ転送要求信号１６は制御部５１０に入力され、アドレスデータはアドレスバス１５を経由して記憶装置用アドレスバッファ５０６に格納される。制御部５１０に受信データ転送要求信号１６が入力されると、制御部５１０はＭＡＣ１０に対して読出し要求信号３２を出力し、またＭＡＣ１０のデータバッファの読み出し先となるアドレスデータをアドレスバス２９に出力する。なおこのときアドレスバス２９に出力されるアドレスデータはＭＡＣ用アドレスバッファ５０７に格納されているアドレスデータであり、ＭＡＣ用アドレスバッファ５０７に格納されているアドレスデータは制御部５１０により逐次更新される。読出し要求信号３２とアドレスバス２９のアドレスデータとによって、ＭＡＣ１０のデータバッファに格納されている受信データは、受信用データバス３０を経由してＤＭＡ５に転送され、受信データバッファ５０８に格納される。このとき、制御部５１０はＭＡＣ１０に対して読出し要求信号３２を連続的に出力し、またＭＡＣ用アドレスバッファ５０７に格納されているアドレスデータをアドレスバス２９に連続的に出力することで、ＭＡＣ１０のデータバッファからＤＭＡ５へのデータ転送を連続的に行うことができる。
【００４３】
カウンタ５０３は、受信用データバス３０から入力されるデータの転送回数をカウントする。カウンタ５０３によってカウントされた転送回数情報５１４は、比較器５０４に入力される。比較器５０４は、カウンタ５０３から入力された転送回数情報５１４が“転送回数が１回目であることを示す値”のとき、比較結果５１５としてデータ“００”を加算器５０５に出力する。カウンタ５０３から入力された転送回数情報５１４が“転送回数が２回目以上であることを示す値”のとき、比較器５０４は、初期分割データ長レジスタ５００から読出した初期分割データ長情報Ｘ５１１と、カウンタ５０３から入力された転送回数情報５１４との大小関係を比較し、転送回数情報５１４によって示される転送済のデータ量が、初期分割データ長情報Ｘ５１１によって示されるデータ量よりも小さい場合には、比較結果５１５としてデータ“０１”を加算器５０５に出力する。一方、カウンタ５０３から入力された転送回数情報５１４が“転送回数が２回目以上であることを示す値”のときにおいて、転送回数情報５１４によって示される転送済のデータ量が、初期分割データ長情報Ｘ５１１によって示されるデータ量と同じ場合には、比較結果５１５としてデータ“１０”を加算器５０５に出力する。
【００４４】
加算器５０５は、予め記憶装置用アドレスバッファ５０６からアドレスデータ５１６を読み出しておき、比較器５０４から入力される比較結果５１５がデータ“００”の場合は、アドレスデータ５１６に対して、ヘッダ用初期ブランク領域レジスタ５０１から読み出したヘッダ用初期ブランク領域の大きさ情報Ｙ５１２を加算し、その加算結果をアドレスデータ５１７として記憶装置用アドレスバッファ５０６に格納する。比較器５０４から入力される比較結果５１５がデータ“０１”の場合は、アドレスデータ５１６に対してインクリメントを行い、その結果をアドレスデータ５１７として記憶装置用アドレスバッファ５０６に格納する。一方、比較器５０４から入力される比較結果５１５がデータ“１０”の場合は、アドレスデータ５１６に対して、ヘッダ用初期ブランク領域レジスタ５０１から読み出したヘッダ用初期ブランク領域の大きさ情報Ｙ５１２と、フッタ用初期ブランク領域レジスタ５０２から読み出したフッタ用初期ブランク領域の大きさ情報Ｚ５１３とを加算し、その加算結果をアドレスデータ５１７として記憶装置用アドレスバッファ５０６に格納する。
【００４５】
制御部５１０は、記憶装置用アドレスバッファ５０６がバッファフルになると、この記憶装置用アドレスバッファ５０６に格納されているアドレスデータをアドレスバス１４に、受信用データバッファ５０８に格納されているデータをデータバス１２に順次出力し、あわせて記憶装置４に対して書込み要求信号２４を出力する。このときアドレスバス１４に出力されるアドレスデータは、アドレスバス７とアドレスバス２８を経由して記憶装置４に入力され、またこのときデータバス１２に出力されるデータは、データバス８とデータバス２６を経由して記憶装置４に入力される。なお、ここでは記憶装置用アドレスバッファ５０６がバッファフルになった場合にＤＭＡ５から記憶装置４へのデータ転送を開始するが、記憶装置用アドレスバッファ５０６にアドレスデータが１つ格納される毎に逐次、ＤＭＡ５から記憶装置４へのデータ転送を行っても良い。
【００４６】
以上のようにＤＭＡ５は、ＭＡＣ１０のデータバッファに格納されているデータを、初期分割データ長レジスタ５００に設定した初期分割データ長情報Ｘに基づく大きさ毎に分割しながら、かつヘッダ用初期ブランク領域レジスタ５０１に設定したヘッダ用初期ブランク領域の大きさ情報Ｙとフッタ用初期ブランク領域レジスタ５０２に設定したフッタ用初期ブランク領域の大きさ情報Ｚとに基づく大きさのブランク領域を確保しながら、記憶装置４上に離間配置する。
【００４７】
以上、ＤＭＡ５によるデータの分割と分割データの離間配置について説明したが、以下、記憶装置４に離間配置された各々の分割データに対するパケット変換処理について説明する。
【００４８】
記憶装置４に離間配置された各々の分割データに対するパケット変換処理を行うために、ＣＰＵ３は、記憶装置４の分割データを読み出す。このとき、ＣＰＵ３は記憶装置４に離間配置された分割データのみを読出し、各々の分割データの前後に確保されているヘッダ用ブランク領域とフッタ用ブランク領域にはアクセスしない方が望ましい。また、記憶装置４に離間配置された各々の分割データに対するパケット変換処理を行うために、ＣＰＵ３は、記憶装置４より読み出した分割データに対して、対応するプロトコルヘッダやプロトコルフッタを付加する。このとき、ＣＰＵ３は、記憶装置４に離間配置されている各々の分割データの前方に確保されているヘッダ用ブランク領域にプロトコルヘッダのみを書込み、各々の分割データの後方に確保されているフッタ用ブランク領域にプロトコルフッタのみを書き込む必要がある。
【００４９】
以下、このようなアドレス制御を行う手段であるアドレス変換器６について図面を参照しながら説明する。
図５は、アドレス変換器６の構成を示すブロック図である。ここで、６００はアドレスレジスタ、６０１はＣＰＵ３が記憶装置４に対して出力する読出し要求信号２２の回数をカウントする読出し回数カウンタ、６０２はＣＰＵ３が記憶装置４に対して出力する書込み要求信号２３の回数をカウントする書込み回数カウンタ、６０３は読出し用アドレス制御部、６０４は書込み用アドレス制御部、６０５は読出し用アドレス制御部６０３および書込み用アドレス制御部６０４からの入力に応じてアドレスレジスタ６００の値に加算を行うアドレス加算器、６０６は分割データに対してプロトコルヘッダやプロトコルフッタが付加される度に逐次更新される分割データ長レジスタ、６０７は分割データに対してプロトコルヘッダが付加される度に逐次更新されるヘッダ用ブランク領域レジスタ、６０８は分割データに対してプロトコルフッタが付加される度に逐次更新されるフッタ用ブランク領域レジスタ、６０９は付加ヘッダのアドレスオフセット情報を格納するヘッダオフセットレジスタ、６１０は付加フッタのアドレスオフセット情報を格納するフッタオフセットレジスタである。また、６１１は任意の時点での各分割データの大きさを記憶装置４のアドレス数で示す分割データ長情報Ｘ´、６１２は任意の時点での各ヘッダ用ブランク領域の大きさを記憶装置４のアドレス数で示すヘッダ用ブランク領域の大きさ情報Ｙ´、６１３は任意の時点での各フッタ用ブランク領域の大きさを記憶装置４のアドレス数で示すフッタ用ブランク領域の大きさ情報Ｚ´、６１４は任意の時点での各分割データの大きさを記憶装置４のアドレス数で示す分割データ長情報Ｘ´（６１１と同じもの）、６１５は任意の時点での各ヘッダ用ブランク領域の大きさを記憶装置４のアドレス数で示すヘッダ用ブランク領域の大きさ情報Ｙ´（６１２と同じもの）、６１６は任意の時点での各フッタ用ブランク領域の大きさを記憶装置４のアドレス数で示すフッタ用ブランク領域の大きさ情報Ｚ´（６１３と同じもの）、６１７は付加ヘッダのアドレスオフセット情報Ｈｏｆｆ、６１８は付加フッタのアドレスオフセット情報Ｆｏｆｆ、６１９は読出し用加算値情報、６２０は書込み用加算値情報である。
【００５０】
なお、分割データ長レジスタ６０６には任意の時点での各分割データの大きさを記憶装置４のアドレス数で示す分割データ長情報Ｘ´が格納されており、分割データ長情報Ｘ´の初期値は初期分割データ長情報Ｘである。また、ヘッダ用ブランク領域レジスタ６０７には任意の時点での各ヘッダ用ブランク領域の大きさを記憶装置４のアドレス数で示すヘッダ用ブランク領域の大きさ情報Ｙ´が格納されており、ヘッダ用ブランク領域の大きさ情報Ｙ´の初期値はヘッダ用初期ブランク領域の大きさ情報Ｙである。また、フッタ用ブランク領域レジスタ６０８には任意の時点での各フッタ用ブランク領域の大きさを記憶装置４のアドレス数で示すフッタ用ブランク領域の大きさ情報Ｚ´が格納されており、フッタ用ブランク領域の大きさ情報Ｚ´の初期値はフッタ用初期ブランク領域の大きさ情報Ｚである。
【００５１】
また、ヘッダオフセットレジスタ６０９には付加するプロトコルヘッダの大きさを記憶装置４のアドレス数で示す付加ヘッダのアドレスオフセット情報Ｈｏｆｆを、付加するプロトコルヘッダに応じてその都度格納し、フッタオフセットレジスタ６１０には付加するプロトコルフッタの大きさを記憶装置４のアドレス数で示す付加フッタのアドレスオフセット情報Ｆｏｆｆを、付加するプロトコルフッタに応じてその都度格納する。付加ヘッダのアドレスオフセット情報Ｈｏｆｆと付加フッタのアドレスオフセット情報Ｆｏｆｆとは、処理するプロトコルに応じてプロトコル毎に予め設定しておいてもよいし、実際に付加するプロトコルヘッダとプロトコルフッタの大きさを示すアドレス数を適時カウントするアドレス数カウンタを別途設け、アドレス数カウンタのカウント値を付加ヘッダのアドレスオフセット情報Ｈｏｆｆもしくは付加フッタのアドレスオフセット情報Ｆｏｆｆとしてもよい。
【００５２】
次に、上記構成のアドレス変換器６の動作について説明する。まず、記憶装置４に離間配置された各々の分割データに対するパケット変換処理を行うため、ＣＰＵ３は、記憶装置４の分割データを読み出す。このとき、ＣＰＵ３は，記憶装置４の読出し先の先頭を示すアドレスデータとして、ＤＭＡ５による記憶装置４へのデータ転送時にデータ転送先となる先頭アドレスデータとして、ＤＭＡ５に指定したアドレスデータと同じアドレスデータを出力するようにする。ＣＰＵ３が出力する記憶装置４の読出し先を示すアドレスデータは、アドレスバス２０を介してアドレス変換器６に入力され、アドレスレジスタ６００に格納される。また、ＣＰＵ３が記憶装置４に対して出力する読出し要求信号２２は、アドレス変換器６にも入力される。読出し回数カウンタ６０１は、アドレス変換器６に入力される読出し要求信号２２をカウントし、カウント値を読出し用アドレス制御部６０３に出力する。読出し用アドレス制御部６０３は、予め、分割データ長レジスタ６０６とヘッダ用ブランク領域レジスタ６０７とフッタ用ブランク領域レジスタ６０８とから、各々、分割データ長情報Ｘ´６１１と、ヘッダ用ブランク領域の大きさ情報Ｙ´６１２と、フッタ用ブランク領域の大きさ情報Ｚ´６１３とを読み出しておく。
【００５３】
読出し用アドレス制御部６０３は、読出し回数カウンタ６０１から入力されるカウント値が分割データ長情報Ｘ´６１１の示す値よりも小さい値のときは、ヘッダ用ブランク領域の大きさ情報Ｙ´６１２を読出し用加算値情報６１９として加算器６０５に出力する。
【００５４】
また読出し用アドレス制御部６０３は、読出し回数カウンタ６０１から入力されるカウント値が分割データ長情報Ｘ´６１１の示す値と同じ値のとき、ヘッダ用ブランク領域の大きさ情報Ｙ´６１２とフッタ用ブランク領域の大きさ情報Ｚ´６１３との和に、さらにヘッダ用ブランク領域の大きさ情報Ｙ´６１２を加算した値を、読出し用加算値情報６１９として加算器６０５に出力し、同時に読出し回数カウンタ６０１を初期化する。
【００５５】
ＣＰＵ３から記憶装置４に対して連続的に読出しが実行される場合の読出し用加算値情報６１９は、以下のように定義する。
読出し用加算値情報６１９＝
[読出し回数カウンタ６０１の初期化回数]×{Ｙ´＋Ｚ´}＋Ｙ´
加算器６０５は、アドレスレジスタ６００に格納されているアドレスデータに読出し用アドレス制御部６０３から入力された読出し用加算値情報６１９を加算し、その結果を、変換後のアドレスデータとしてアドレスバス２１に出力する。アドレスバス２１に出力された読出し先アドレスデータは、アドレスバス７とアドレスバス２８を経由して記憶装置４に入力される。記憶装置４は、ＣＰＵ３から出力される読み出し要求信号２２と上記のアドレスデータとを受け取ると、アドレスデータに対応するアドレスのデータをデータバス２７に出力する。データバス２７に出力されたデータは、データバス８とデータバス１８とを経由してＣＰＵ３へと転送され、ＣＰＵ３によってパケット変換処理が実行される。
【００５６】
以上、ＣＰＵ３が記憶装置４から離間配置された分割データを読み出すときのアドレス変換器６の動作について説明したが、以下、ＣＰＵ３から記憶装置４のヘッダ用ブランク領域とフッタ用ブランク領域とに対してプロトコルヘッダとプロトコルフッタとを書き込むときの動作について説明する。
【００５７】
このときＣＰＵ３は、記憶装置４に書き込むプロトコルヘッダもしくはプロトコルフッタのデータを、データバス１９に出力する。またＣＰＵ３は、記憶装置４の書込み先の先頭を示すアドレスデータとして、ＤＭＡ５による記憶装置４へのデータ転送時にデータ転送先となる先頭アドレスデータとして、ＤＭＡ５に指定したアドレスデータと同じアドレスデータを出力する。このようにＣＰＵ３が出力する記憶装置４の書込み先を示すアドレスデータは、アドレスバス２０を介してアドレス変換器６に入力され、アドレスレジスタ６００に格納される。また、ＣＰＵ３が記憶装置４に対して出力する書込み要求信号２３は、アドレス変換器６にも入力される。書込み回数カウンタ６０２は、アドレス変換器６に入力される書込み要求信号２３をカウントし、カウント値を書込み用アドレス制御部６０４に出力する。書込み用アドレス制御部６０４は、予め、分割データ長レジスタ６０６とヘッダ用ブランク領域レジスタ６０７とフッタ用ブランク領域レジスタ６０８とヘッダオフセットレジスタ６０９とフッタオフセットレジスタ６１０とから各々、分割データ長情報Ｘ´６１４と、ヘッダ用ブランク領域の大きさ情報Ｙ´６１５と、フッタ用ブランク領域の大きさ情報Ｚ´６１６と、付加ヘッダのアドレスオフセット情報Ｈｏｆｆ６１７と、付加フッタのアドレスオフセット情報Ｆｏｆｆ６１８とを読み出しておく。
【００５８】
プロトコルヘッダを書き込む場合に、書込み用アドレス制御部６０４は、書込み回数カウンタ６０２から入力されるカウント値が付加ヘッダのアドレスオフセット情報Ｈｏｆｆ６１７の示す値よりも小さい値のときは、ヘッダ用ブランク領域の大きさ情報Ｙ´６１５から付加ヘッダのアドレスオフセット情報Ｈｏｆｆ６１７を減算した値を、書込み用加算値情報６２０として、加算器６０５に出力する。また書込み用アドレス制御部６０４は、書込み回数カウンタ６０２から入力されるカウント値が付加ヘッダのアドレスオフセット情報Ｈｏｆｆ６１７の示す値と同じ値のときは、分割データ長情報Ｘ´６１４とヘッダ用ブランク領域の大きさ情報Ｙ´６１５とフッタ用ブランク領域の大きさ情報Ｚ´６１６との和に対して、さらにヘッダ用ブランク領域の大きさ情報Ｙ´６１５から付加ヘッダのアドレスオフセット情報Ｈｏｆｆ６１７を減算した値を加算した値を、書込み用加算値情報６２０として加算器６０５に出力し、同時に書込み回数カウンタ６０２を初期化する。
【００５９】
ＣＰＵ３から記憶装置４に対して連続的にプロトコルヘッダの書込みが実行される場合の書込み用加算値情報６２０を、以下のように定義する。
ヘッダ書込み時の書込み用加算値情報６２０＝
[書込み回数カウンタ６０２の初期化回数]×｛Ｘ´＋Ｙ´＋Ｚ´｝
＋Ｙ´−Ｈｏｆｆ
プロトコルフッタを書き込む場合に、書込み用アドレス制御部６０４は、書込み回数カウンタ６０２から入力されるカウント値が付加フッタのアドレスオフセット情報Ｆｏｆｆ６１８の示す値よりも小さい値のときは、分割データ長情報Ｘ´６１４とヘッダ用ブランク領域の大きさ情報Ｙ´６１５との和を、書込み用加算値情報６２０として加算器６０５に出力する。また書込み用アドレス制御部６０４は、書込み回数カウンタ６０２から入力されるカウント値が付加フッタのアドレスオフセット情報Ｆｏｆｆ６１７の示す値と同じ値のときは、分割データ長情報Ｘ´６１４とヘッダ用ブランク領域の大きさ情報Ｙ´６１５とフッタ用ブランク領域の大きさ情報Ｚ´６１６との和から付加フッタのアドレスオフセット情報Ｆｏｆｆ６１７の値を減算した値に対して、分割データ長情報Ｘ´６１４とヘッダ用ブランク領域の大きさ情報Ｙ´６１５との和を加算した値を、書込み用加算値情報６２０として加算器６０５に出力し、同時に、書込み回数カウンタ６０２を初期化する。
【００６０】
ＣＰＵ３から記憶装置４に対して連続的にプロトコルフッタの書込みが実行される場合の書込み用加算値情報６２０を、以下のように定義する。
フッタ書込み時の書込み用加算値情報６２０＝
[書込み回数カウンタ６０２の初期化回数]
×｛Ｘ´＋Ｙ´＋Ｚ´−Ｆｏｆｆ｝＋Ｘ´＋Ｙ´
加算器６０５は、アドレスレジスタ６００に格納されているアドレスデータに書込み用アドレス制御部６０４から入力された書込み用加算値情報６２０を加算し、その結果を、変換後のアドレスデータとしてアドレスバス２１に出力する。アドレスバス２１に出力された書込み先アドレスデータは、アドレスバス７とアドレスバス２８を経由して記憶装置４に入力される。記憶装置４は、ＣＰＵ３から出力される書込み要求信号２３と書込みデータとアドレスデータとを受け取ると、アドレスデータに対応するアドレスに対して、データバス１９とデータバス８とを経由してデータバス２６より入力されるデータを書き込む。
（第３の実施の形態）
図６は、本発明の第３の実施の形態のパケット処理装置の構成を示すブロック図である。以下において、図３に示したものと同一のものには、同一の参照番号を付して説明する。ここで、９はＤＭＡであり、その詳細は後述する。この図６のパケット処理装置においては、図３のパケット処理装置に比べて、アドレス変換器６が省略されているとともに、ウェイト制御部３７と、処理済アドレスレジスタ３４とが設けられている点で相違する。
【００６１】
すなわち、３はＣＰＵ、９はＤＭＡ、４は記憶装置、７はＣＰＵ３と記憶装置４とＤＭＡ９との間でアドレスデータを転送する双方向アドレスバス、８はＣＰＵ３と記憶装置４とＤＭＡ９との間でデータを転送する双方向データバス、１０はデータバッファを備えネットワークとの接続制御を行うＭＡＣ、１１はネットワークとの物理的なインターフェースであるＰＨＹ、１２はＤＭＡ９からデータバス８にデータを転送するデータバス、１３はデータバス８からＤＭＡ９にデータを転送するデータバス、１４はＤＭＡ９からアドレスバス７にアドレスデータを転送するアドレスバス、１５はアドレスバス７からＤＭＡ９にアドレスデータを転送するアドレスバス、１６はＰＨＹ１１を経てＭＡＣ１０が受信したデータの記憶装置４への転送を指示するためにＣＰＵ３からＤＭＡ９に出力される受信データ転送要求信号、１７は記憶装置４のデータのＭＡＣ１０への転送を指示するためにＣＰＵ３からＤＭＡ９に出力される送信データ転送要求信号、１８はデータバス８からＣＰＵ３にデータを転送するデータバス、１９はＣＰＵ３からデータバス８にデータを転送するデータバスである。
【００６２】
２１５はＣＰＵ３からアドレスバス７にアドレスデータを転送するアドレスバス、２２は記憶装置４に対してデータ読出しを指示するためにＣＰＵ３から記憶装置４に出力される読出し要求信号、２３は記憶装置４に対してデータ書込みを指示するためにＣＰＵ３から記憶装置４に出力される書込み要求信号、２４は記憶装置４に対してデータ書込みを指示するためにＤＭＡ９から記憶装置４に出力される書込み要求信号、２５は記憶装置４に対してデータ読出しを指示するためにＤＭＡ９から記憶装置４に出力される読出し要求信号、２６はデータバス８から記憶装置４にデータを転送するデータバス、２７は記憶装置４からデータバス８にデータを転送するデータバス、２８はアドレスバス７から記憶装置４にアドレスデータを転送するアドレスバス、２９はＤＭＡ９からＭＡＣ１０にアドレスデータを転送するアドレスバス、４５はＭＡＣ１０からＤＭＡ９にネットワークからの受信データを転送する受信用データバス、３１はＤＭＡ９からＭＡＣ１０にネットワークへの送信データを転送する送信用データバス、３２はＭＡＣ１０のデータバッファから受信データを読出すためにＤＭＡ９からＭＡＣ１０に出力される読出し要求信号、３３はＭＡＣ１０のデータバッファに対して送信データを格納するためにＤＭＡ９からＭＡＣ１０に出力される書込み要求信号である。
【００６３】
処理済アドレスレジスタ３４には、記憶装置４上でパケット処理が完了しているデータが格納されている記憶領域の最終アドレスが格納される。３５は、ＣＰＵ３から処理済アドレスレジスタ３４に出力される処理済アドレス更新命令である。ウェイト制御部３７は、ＤＭＡ９から記憶装置４にデータを転送するときの転送先アドレスデータ３８と、処理済アドレスレジスタ３４に格納されている処理済アドレスデータ３９とに基づき、ＤＭＡ９に対してウェイト命令４１を出力する。ウェイト制御部３７の動作については後述する。
【００６４】
なお、ここで、データバス１２とデータバス１３、アドレスバス１４とアドレスバス１５、データバス１８とデータバス１９、データバス２６とデータバス２７、受信用データバス４５と送信用データバス３１は、各々、双方向バスにて構成してもよい。
【００６５】
このような構成において、ＰＨＹ１１により受信したデータは、ＭＡＣ１０内に備えられているデータバッファに一時格納される。このデータバッファに一時格納された受信データを記憶装置４に転送させるために、ＣＰＵ３は、ＤＭＡ９に対して、受信データ転送要求信号１６と、記憶装置４におけるデータ転送先となる先頭のアドレスデータとを出力する。このとき、ＣＰＵ３が出力するアドレスデータは、アドレスバス２１５とアドレスバス７とアドレスバス１５とを経由してＤＭＡ９に入力される。ＤＭＡ９は、受信データ転送要求信号１６とアドレスデータとが入力されると、ＭＡＣ１０内に備えられているデータバッファから入力されたアドレスデータの示す記憶装置４の記憶領域に対して、ＭＡＣ１０内のデータバッファに一時格納されている受信データの転送を開始する。このときＤＭＡ９は、記憶装置４上の転送先アドレスを一定領域内で無限にループさせる。
【００６６】
以下、ＤＭＡ９による転送先アドレスを一定領域内で無限にループさせる機能について、図面を参照しながら説明する。
図７は、ＤＭＡ９の構成を示すブロック図である。ここで、９００は転送回数設定レジスタ、９０１は受信用データバス４５から入力されるデータの転送回数をカウントするカウンタ、９０２は転送回数設定レジスタ９００の値とカウンタ９０１の値との大小関係を比較する比較器、９０３は比較器９０２の比較結果に応じてアドレスデータに加算を行う加算器、９０４は図６の記憶装置４のアドレスを指定するためのアドレスデータを格納する記憶装置用アドレスバッファ、９０５は図６のＭＡＣ１０内のデータバッファのアドレスを指定するためのアドレスデータを格納するＭＡＣ用アドレスバッファ、９０６は受信用データバス４５から入力されるデータを格納する受信データバッファ、９０７はデータバス１３から入力されるデータを格納する送信データバッファ、９０８は制御部である。また、９０９は転送回数情報、９１０はカウンタ９０１のカウント値、９１１は比較器９０２から加算器９０３と制御部９０８に出力される比較結果、９１２は記憶装置用アドレスバッファ９０４から加算機９０３に入力されるアドレスデータ、９１３は加算器９０３から記憶装置用アドレスバッファ９０４に出力されるアドレスデータ、９１４はアドレス初期化情報レジスタ、９１５はＤＭＡ９から記憶装置４へのデータ転送回数をカウントするアドレス初期化用カウンタ、９１６は初期化アドレスレジスタ、９１７はアドレス初期化のための制御を行うアドレス初期化用制御部、９１８はアドレス初期化情報、９１９はアドレス初期化用カウンタ９１５のカウント値、９２０は、初期化アドレスレジスタ９１６が格納しているアドレスデータを記憶装置用アドレスバッファ９０４に転送するために、アドレス初期化用制御部９１７から初期化アドレスレジスタ９１６に出力される転送命令、９２１は初期化アドレスレジスタ９１６から記憶装置用アドレスバッファ９０４に出力される初期化アドレスデータである。
【００６７】
転送回数設定レジスタ９００には、ＤＭＡ９から記憶装置４へのデータ転送を何アドレス分連続で行うかを示す転送回数情報が格納されている。
ＣＰＵ３からＤＭＡ９に受信データ転送要求信号１６とアドレスデータとが入力されると、受信データ転送要求信号１６は制御部９０８に入力され、アドレスデータはアドレスバス１５を経由して記憶装置用アドレスバッファ９０４に格納される。制御部９０８に受信データ転送要求信号１６が入力されると、制御部９０８はＭＡＣ１０に対して読出し要求信号３２を出力し、またＭＡＣ１０のデータバッファの読み出し先となるアドレスデータをアドレスバス２９に出力する。なおこのときアドレスバス２９に出力されるアドレスデータはＭＡＣ用アドレスバッファ９０５に格納されているアドレスデータであり、ＭＡＣ用アドレスバッファ９０５に格納されているアドレスデータは制御部９０８により逐次更新される。読出し要求信号３２とアドレスバス２９のアドレスデータとによって、ＭＡＣ１０のデータバッファに格納されている受信データは、受信用データバス４５を経由してＤＭＡ９に転送され、受信データバッファ９０６に格納される。このとき、制御部９０８はＭＡＣ１０に対して読出し要求信号３２を連続的に出力し、またＭＡＣ用アドレスバッファ９０５に格納されているアドレスデータをアドレスバス２９に連続的に出力することで、ＭＡＣ１０のデータバッファからＤＭＡ９へのデータ転送を連続的に行うことができる。
【００６８】
カウンタ９０１は、受信用データバス４５から入力されるデータの転送回数をカウントする。カウンタ９０１のカウント値９１０は、比較器９０２に入力される。比較器９０２は、転送回数設定レジスタ９００から入力される転送回数情報９０９とカウンタ９０１から入力されるカウント値９１０との大小関係を比較し、比較結果９１１を加算器９０３と制御部９０８に出力する。加算器９０３は、カウント値９１０が転送回数情報９０９以下であることを示す比較結果９１１が入力された場合は、記憶装置用アドレスバッファ９０４より読み出したアドレスデータ９１２をインクリメントし、これをアドレスデータ９１３として記憶装置用アドレスバッファ９０４に格納する。また、制御部９０８は、カウント値９１０が転送回数情報９０９以下であることを示す比較結果９１１が入力された場合はデータ転送制御を継続し、カウント値９１０が転送回数情報９０９より大きいことを示す比較結果９１１が入力された場合はデータ転送制御を終了する。また、制御部９０８は、記憶装置用アドレスバッファ９０４がバッファフルになると、この記憶装置用アドレスバッファ９０４に格納されているアドレスデータをアドレスバス１４に出力するとともに、受信用データバッファ９０６に格納されているデータをデータバス１２に順次出力し、あわせて記憶装置４とアドレス初期化用カウンタ９１５に対して書込み要求信号２４０を出力する。このときアドレスバス１４に出力されるアドレスデータは、アドレスバス７とアドレスバス２８とを経由して記憶装置４に入力され、またこのときデータバス１２に出力されるデータは、データバス８とデータバス２６とを経由して記憶装置４に入力される。
【００６９】
なお、ここでは記憶装置用アドレスバッファ９０４がバッファフルになった場合にＤＭＡ９から記憶装置４へのデータ転送を開始するが、記憶装置用アドレスバッファ９０４にアドレスデータが１つ格納される毎に逐次、ＤＭＡ９から記憶装置４００へのデータ転送を行っても良い。
【００７０】
次に、ＤＭＡ９が記憶装置４にデータを転送する際に転送先アドレスを一定領域内で無限にループさせる機能について説明する。
アドレス初期化情報レジスタ９１４には、ＤＭＡ９から記憶装置４に対して何回すなわち何アドレス分データを転送したら転送先アドレスを初期化するかを示すアドレス初期化情報が予め格納されている。
【００７１】
ＣＰＵ３からＤＭＡ９に入力されるアドレスデータは、アドレスバス１５を介して初期化アドレスレジスタ９１６にも格納される。また、ＤＭＡ９から記憶装置４にデータを転送するために出力される書込み要求信号２４は、アドレス初期化用カウンタ９１５にも入力される。アドレス初期化用カウンタ９１５は、書込み要求信号２４の入力回数すなわちＤＭＡ９から記憶装置４へのデータ転送回数をカウントする。アドレス初期化用制御部９１７は、アドレス初期化情報レジスタ９１４とアドレス初期化用カウンタ９１５から、アドレス初期化情報９１８とカウント値９１９とを逐次読み出して大小関係を比較し、カウント値９１９がアドレス初期化情報９１８以上の場合に、初期化アドレスレジスタ９１６に対して転送命令９２０を出力し、初期化アドレスデータ９２１を記憶装置用アドレスバッファ９０４に転送する。この結果、記憶装置用アドレスバッファ９０４に初期のアドレスデータが格納され、ＤＭＡ９が記憶装置４にデータを転送する際に転送先アドレスを一定領域内で無限にループさせる機能を実現する。
【００７２】
以上、ＤＭＡ９が記憶装置４にデータを転送する際に転送先アドレスを一定領域内で無限にループさせる機能について説明したが、以下、アドレスの無限ループ時に、記憶装置４上のパケット処理未完了の領域に対するデータの上書きを防止するための機能について、ウェイト制御部３７の動作も踏まえて説明する。
【００７３】
図６の処理済アドレスレジスタ３４には、ＣＰＵ３によるパケット処理が完了している領域の最終アドレスのアドレスデータが格納されており、このアドレスデータは、ＣＰＵ３より出力される処理済アドレス更新命令３５により逐次更新される。また、ウェイト制御部３７には、ＤＭＡ９から記憶装置４にデータを転送するときの転送先アドレスデータ３８がアドレスバス７より入力される。
【００７４】
ウェイト制御部３７は、処理済アドレスレジスタ３４から処理済アドレスデータ３９を読み出し、処理済アドレスデータ３９と転送先アドレスデータ３８とのアドレスの差分を算出し、算出したアドレス差分値が所定の値以下の場合に、ＤＭＡ９に対してウェイト命令４１を出力する。
【００７５】
図７に示すＤＭＡ９において、ウェイト制御部３７から出力されたウェイト命令４１は制御部９０８に入力され、制御部９０８はウェイト命令４１を受け取ると、直ちにＤＭＡ９によるデータの転送処理を一時待機させる。一時待機させる期間は、予め設定した一定の時間でもよいし、またはウェイト命令４１が入力される期間であっても構わない。これにより、記憶装置４上のパケット処理未完了の領域に対するデータの上書きを防止することができる。
【００７６】
なお、ここで、ＤＭＡ９は図８に示す構成であっても構わない。
図８において、９３１はウェイト制御部３７からＤＭＡ９に入力されるウェイト命令４１の入力回数をカウントするウェイト制御カウンタ、９３２はウェイト制御レジスタ、９０８０は制御部、９３３はウェイト制御カウンタ９３１のカウント値、９３４はウェイト制御レジスタ９３２に予め格納されているウェイト制御情報である。このウェイト制御情報９３４は、ＤＭＡ９に対するウェイト命令４１の入力回数が何回に達したら、ＤＭＡ９によるデータの転送処理を一時待機させるかを示すものである。制御部９０８０は、図７に示す制御部９０８の機能を強化させて、ＤＭＡ９によるデータの転送処理を一定時間待機させるようにしたものである。それ以外の機能は、制御部９０８と同じである。
【００７７】
図８に示すＤＭＡ９にウェイト命令４１が入力されると、ウェイト制御カウンタ９３１によりウェイト命令４１の入力回数がカウントされ、カウントの結果はカウント値９３３として制御部９０８０に出力される。制御部９０８０は、ウェイト制御レジスタ９３２よりウェイト制御情報９３４を読み出して、カウント値９３３とウェイト制御情報９３４との大小関係を比較し、カウント値９３３がウェイト制御情報９３４以上であった場合に、ＤＭＡ９によるデータの転送処理を一時待機させる。一時待機させる期間は、予め設定した一定の時間でもよいし、またはウェイト命令４１が入力される期間であっても構わない。これにより、記憶装置４上のパケット処理未完了の領域に対するデータの上書きを防止することができる。
（第４の実施の形態）
図９は、本発明の第４の実施の形態におけるパケット処理装置の構成を示すブロック図である。
【００７８】
ここで、３６はウェイト制御レジスタ、４０はウェイト制御レジスタ３６に格納されているアドレス差分情報、３７０はウェイト制御部である。ウェイト制御部３７０は、ＤＭＡ９から記憶装置４にデータを転送するときの転送先アドレスデータ３８と、処理済アドレスレジスタ３４に格納されている処理済アドレスデータ３９と、ウェイト制御レジスタ３６に格納されているアドレス差分情報４０とに基づき、ＤＭＡ９に対してウェイト命令４１を出力する。
この第４の実施の形態におけるパケット処理装置は、図６に示す第３の実施の形態のパケット処理装置におけるウェイト制御部３７の構成を換えたものであり、ウェイト制御部３７０とウェイト制御レジスタ３６とアドレス差分情報４０以外の構成要素は、図６に示すものと同じである。また、図９のＤＭＡ９は、図７もしくは図８のいずれの構成であっても構わない。
【００７９】
図９のウェイト制御レジスタ３６には、記憶装置４上でＣＰＵ３によるパケット処理が完了している領域の最終アドレスと、ＤＭＡ９から記憶装置４に対してデータを転送する際の転送先アドレスとのアドレス間隔がどこまで狭まったら、ＤＭＡ９に対してウェイトを持たせるかを示すためのアドレス差分情報が予め格納されている。
【００８０】
ウェイト制御部３７０は、処理済アドレスレジスタ３４とウェイト制御レジスタ３６から処理済アドレスデータ３９とアドレス差分情報４０とを読み出し、まず処理済アドレスデータ３９と転送先アドレスデータ３８とのアドレスの差分を算出する。次に、算出したアドレス差分値とアドレス差分情報４０との大小関係を比較し、算出したアドレス差分値がアドレス差分情報４０以下の場合に、ＤＭＡ９に対してウェイト命令４１を出力する。
【００８１】
ＤＭＡ９は、ウェイト制御部３７０からウェイト命令４１を入力されると、データの転送処理を一定時間待機させる。これにより、記憶装置４上のパケット処理未完了の領域に対するデータの上書きを防止することができる。
（第５の実施の形態）
図１０は、本発明の第５の実施の形態のパケット処理装置の構成を示すブロック図である。
【００８２】
ここで、３はＣＰＵ、９１はＤＭＡ、４３はＤＭＡ９１からＣＰＵ３に対して出力される割込み要求信号である。
この本発明の第４の実施の形態のパケット処理装置は、図９に示す第４の実施の形態のパケット処理装置におけるＣＰＵ３とＤＭＡ９１との機能を変えたものであり、ＣＰＵ３はＤＭＡ９１からの割込み要求信号４３を受け付ける機能を有し、またＤＭＡ９１はＣＰＵ３に対する割込み制御を行う。それ以外の構成要素は、図９に示すものと同じである。
【００８３】
以下、ＤＭＡ９１について、図面を参照しながら説明する。
図１１は、図１０に示したＤＭＡ９１の構成を示すブロック図である。ここで、９２６は割込み制御部である。
【００８４】
図１０のウェイト制御部３７０よりＤＭＡ９１に対してウェイト命令４１が入力されると、このウェイト命令４１は制御部９０８と割込み制御部９２６とに入力される。
制御部９０８は、ウェイト命令４１を受け取ると、直ちにＤＭＡ９１によるデータの転送処理を一定時間待機させる。一方、割込み制御部９２６は、ウェイト命令４１を受け取ると、直ちにＣＰＵ３に対して常に一定の優先度レベルの割込み要求信号４３を出力する。これにより、ＤＭＡ９１へのウェイト命令４１が発生した場合に、ＤＭＡ９１から記憶装置４に対するデータ転送を一時停止させるだけでなく、ＣＰＵ３のパケット処理以外のタスクに対するパケット処理の優先度を向上させ、スループットの低下を防止することができる。
【００８５】
なお、ここで、ＤＭＡ９１は、図１２に示す構成であっても構わない。
図１２において、９２６は割込み制御部である。９２２はウェイト命令カウンタで、図１０のウェイト制御部３７０からＤＭＡ９１に入力されるウェイト命令４１の入力回数をカウントする。９２３は割込み制御レジスタ、９２７はウェイト命令カウンタ９２２のカウント値、９２８は割込み制御情報である。
【００８６】
割込み制御レジスタ９２３には、ウェイト命令４１が何回入力された場合にＣＰＵ３への割込み要求を発生させるかを示す割込み制御情報が予め格納されている。
１２において、図１０のウェイト制御部３７０よりＤＭＡ９１に対してウェイト命令４１が入力されると、このウェイト命令４１は制御部９０８とウェイト命令カウンタ９２２とに入力される。制御部９０８は、ウェイト命令４１を受け取ると、直ちにＤＭＡ９１によるデータの転送処理を一定時間待機させる。一方、ウェイト命令カウンタ９２２は、ウェイト命令４１の入力回数をカウントし、カウント値９２７を割込み制御部９２６に出力する。割込み制御部９２６は、割込み制御レジスタ９２３より割込み制御情報９２８を読み出し、カウント値９２７と割込み制御情報９２８との大小関係を比較する。比較の結果、カウント値９２７が割込み制御情報９２８以上であった場合は、ＣＰＵ３に対して常に一定の優先度レベルの割込み要求信号４３を出力する。これにより、ＣＰＵ３のパケット処理以外のタスクに対するパケット処理の優先度を向上させ、スループットの低下を防止するだけでなく、ＤＭＡ９１へのウェイト命令４１の頻発の度合いに応じて、より柔軟にＣＰＵ３に対する割込み要求が可能となる。
（第６の実施の形態）
図１３は、本発明の第６の実施の形態におけるパケット処理装置の構成を示すブロック図である。
【００８７】
ここで、３７０はウェイト制御部、９２はＤＭＡ、４２はウェイト制御部３７０からＤＭＡ９２に対して出力するアドレス差分情報である。
この第６の実施の形態のパケット処理装置は、図１０に示す第５の実施の形態のパケット処理装置におけるウェイト制御部３７０とＤＭＡ９２との機能を変えたものであり、ウェイト制御部３７０はＤＭＡ９２に対してアドレス差分情報４２を出力する機能を有し、またＤＭＡ９２はＣＰＵ３に対する割込み制御においてアドレス差分情報４２に応じて優先度レベルを任意に変えることができる機能を有する。それ以外は、図１０に示すものと同じである。
【００８８】
図１３に示すウェイト制御部３７０は、処理済アドレスレジスタ３４とウェイト制御レジスタ３６から処理済アドレスデータ３９とアドレス差分情報４０とを読み出し、まず処理済アドレスデータ３９と転送先アドレスデータ３８とのアドレスの差分を算出する。次に、算出したアドレス差分値とアドレス差分情報４０との大小関係を比較し、算出したアドレス差分値がアドレス差分情報４０以下の場合に、ＤＭＡ９２に対してウェイト命令４１を出力する。また、ウェイト制御部３７０は、このときに、算出したアドレス差分値をアドレス差分情報４２としてＤＭＡ９２に出力する。
【００８９】
図１４は、図１３に示したＤＭＡ９２の構成を示すブロック図である。ここで、９２６は割込み制御部、９２４は割込みレベル制御レジスタ、９２５はアドレス差分情報レジスタ、９２９は割込みレベル制御情報、９３０はアドレス差分情報である。
【００９０】
割込みレベル制御レジスタ９２４には、アドレス差分情報９３０に応じた割込みの優先度レベルを設定するための割込みレベル制御情報が予め格納されている。この割込みレベル制御情報は、例えばアドレス差分情報がＡの場合は割込みの優先度レベルは１、アドレス差分情報がＢの場合は割込みの優先度レベルは２、アドレス差分情報がＣの場合は割込みの優先度レベルは３といった具合に、アドレス差分情報に対して、割込みの優先度レベルを関連付けるための情報である。
【００９１】
図１４に示すＤＭＡ９２において、図１３のウェイト制御部３７０より入力されたウェイト命令４１は、制御部９０８のみでなく、割込み制御部９２６にも入力される。一方、ウェイト制御部３７０より入力されたアドレス差分情報４２は、アドレス差分情報レジスタ９２５に格納される。割込み制御部９２６は、ウェイト命令４１を受け取ると、割込みレベル制御レジスタ９２４とアドレス差分情報レジスタ９２５から割込みレベル制御情報９２９とアドレス差分情報９３０を読み出す。次に、割込み制御部９２６は、割込みレベル制御情報９２９を参照しながら、読み出したアドレス差分情報９３０に対して関連付けされる割込みレベルを検出し、検出結果に応じた優先度レベルを持つ割込み要求信号を、割込み要求信号４３として、ＣＰＵ３に出力する。これにより、ＤＭＡ９２へのウェイト命令４１が発生する場合に、ＣＰＵ３に対してそのときのアドレス差分に応じた優先度レベルの割込み要求が可能となり、アドレス差分が小さい時ほど高い優先度レベルの割込み要求信号を出力するといった具合に、ＣＰＵ３のパケット処理以外のタスクに対するパケット処理の優先度を柔軟に向上させることができる。
【００９２】
なお、ここで、ＤＭＡ９２は、図１５に示す構成であっても構わない。図１５において、図１３のウェイト制御部３７０から出力されたウェイト命令４１はウェイト命令カウンタ９２２に入力され、また、ウェイト制御部３７０から出力されたアドレス差分情報４２はアドレス差分情報レジスタ９２５に格納される。ウェイト命令カウンタ９２２はウェイト命令４１の入力回数をカウントし、カウント値９２７を割込み制御部９２６に出力する。割込み制御部９２６は、まず割込み制御レジスタ９２３より割込み制御情報９２８を読み出し、カウント値９２７と割込み制御情報９２８との大小関係を比較する。比較の結果、カウント値９２７が割込み制御情報９２８以上であった場合は、ＣＰＵ３のパケット処理以外のタスクに対するパケット処理の優先度を上げる必要があることを意味する。割込み制御部９２６は、カウント値９２７が割込み制御情報９２８以上であった場合は、割込みレベル制御レジスタ９２４とアドレス差分情報レジスタ９２５から割込みレベル制御情報９２９とアドレス差分情報９３０を読み出す。次に、割込み制御部９２６は、割込みレベル制御情報９２９を参照しながら、読み出したアドレス差分情報９３０に対して関連付けされる割込みレベルを検出し、検出結果に応じた優先度レベルを持つ割込み要求信号４３をＣＰＵ３に出力する。これにより、ＤＭＡ９２へのウェイト命令４１が頻発する場合に、ＣＰＵ３に対してウェイト命令４１の頻発の度合いとそのときのアドレス差分に応じた優先度レベルの割込み要求が可能となり、アドレス差分が小さい時ほど高い優先度レベルの割込み要求信号を出力するといった具合に、ＣＰＵ３のパケット処理以外のタスクに対するパケット処理の優先度をより柔軟に向上させることができる。
【産業上の利用可能性】
【００９３】
本発明にかかるパケット処理方法および装置は、データに対するパケット変換処理によってプロトコルヘッダおよび、またはプロトコルフッタを付加した際に、プロトコルヘッダおよび、またはプロトコルフッタを含むデータを、パケット変換処理で使用するプロセッサの使用専用のメモリからユーザスペース（例えばアプリケーションプログラムのデータ格納装置）にその都度コピーする必要がなくなり、付加するプロトコルヘッダおよび、またはプロトコルフッタのみを、ユーザスペース上に確保した第一のブランク領域および、または第二のブランク領域にコピーすればよく、その結果として、データに対するパケット変換処理のスループットの向上を図ることができ、データをネットワーク間で通信するための通信プロトコルに適合したパケットに変換する際のパケット処理方法および装置等として有用である。
【図面の簡単な説明】
【００９４】
【図１】本発明の実施の形態のパケット処理方法の処理態様を示す模式図
【図２】本発明の実施の形態におけるイーサネット（登録商標）対応ＴＣＰ／ＩＰパケット処理方法の処理態様を示す模式図
【図３】本発明の実施の形態のパケット処理装置の構成を示すブロック図
【図４】図３におけるＤＭＡの構成を示すブロック図
【図５】図４におけるアドレス変換器の構成を示すブロック図
【図６】本発明の他の実施の形態のパケット処理装置の構成を示すブロック図
【図７】図６におけるＤＭＡの構成を示すブロック図
【図８】図６におけるＤＭＡの他の構成を示すブロック図
【図９】本発明のさらに他の実施の形態のパケット処理装置の構成を示すブロック図
【図１０】本発明のさらに他の実施の形態のパケット処理装置の構成を示すブロック図
【図１１】図１０におけるＤＭＡの構成を示すブロック図
【図１２】図１０におけるＤＭＡの他の構成を示すブロック図
【図１３】本発明のさらに他の実施の形態のパケット処理装置の構成を示すブロック図
【図１４】図１３におけるＤＭＡの構成を示すブロック図
【図１５】図１３におけるＤＭＡの他の構成を示すブロック図
【符号の説明】
【００９５】
４    記憶装置
５    ＤＭＡ
６    アドレス変換器
７    アドレスバス
８    データバス
５００    初期分割データ長レジスタ
５０１    ヘッダ用初期ブランク領域レジスタ
５０２    フッタ用初期ブランク領域レジスタ
６０３    読出し用アドレス制御部
６０４    書込み用アドレス制御部
６０６    分割データ長レジスタ
６０７    ヘッダ用ブランク領域レジスタ
６０８    フッタ用ブランク領域レジスタ
６０９    ヘッダオフセットレジスタ
６１０    フッタオフセットレジスタ
【図１】
2005167965.tif 000003
【図２】
2005167965.tif 000004
【図３】
2005167965.tif 000005
【図４】
2005167965.tif 000006
【図５】
2005167965.tif 000007
【図６】
2005167965.tif 000008
【図７】
2005167965.tif 000009
【図８】
2005167965.tif 000010
【図９】
2005167965.tif 000011
【図１０】
2005167965.tif 000012
【図１１】
2005167965.tif 000013
【図１２】
2005167965.tif 000014
【図１３】
2005167965.tif 000015
【図１４】
2005167965.tif 000016
【図１５】
2005167965.tif 000017