(57)【要約】【課題】メモリ上のデータをDMAにより読み出して送信する際の送信間隔を高い精度で調整する。【解決手段】  ディスクリプタには、対応するパケットのメモリにおける記録開始アドレスの上位３２ビットを示すaddress(high)および下位３２ビットを示すaddress(low)、並びにパケット長を示す１６ビットのlengthが記述され、さらにパケットのDMA転送の間隔を調整するための遅延時間を示すdelayが記述されている。本発明はDMA転送を行う全ての電子装置に適用することが可能である。【選択図】図７
2006293799.tif 000002
【特許請求の範囲】
【請求項１】
パケット単位でメモリに記録されているデータをDMA(Direct Memory Access)によって読み出す情報処理装置において、
前記メモリ上における前記データのパケット単位の記録位置を示す位置情報、およびパケット単位の処理に関わる遅延時間を含むディスクリプタを生成する生成手段と、
前記生成手段によって生成された前記ディスクリプタを取得し、取得した前記ディスクリプタから前記位置情報および前記遅延時間を抽出する抽出手段と、
抽出された前記位置情報に基づき、前記メモリからパケット単位のデータをDMAによって読み出すDMA手段と、
前記抽出手段、または前記DMA手段の少なくとも一方の処理を、前記抽出手段によって抽出済の前記遅延時間だけ遅延させる遅延手段と
を含むことを特徴とする情報処理装置。
【請求項２】
前記生成手段はソフトウェアにより実現され、
前記遅延手段はハードウェアにより実現される
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記抽出手段は、前記生成手段によって生成された前記ディスクリプタを１つずつ取得する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記抽出手段は、前記生成手段によって生成された複数の前記ディスクリプタを一括して取得する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項５】
パケット単位でメモリに記録されているデータをDMA(Direct Memory Access)によって読み出す情報処理装置の情報処理方法において、
前記メモリ上における前記データのパケット単位の記録位置を示す位置情報、およびパケット単位の処理に関わる遅延時間を含むディスクリプタを生成する生成ステップと、
前記生成ステップの処理で生成された前記ディスクリプタを取得する取得ステップと、
前記取得ステップの処理で取得された前記ディスクリプタから前記遅延時間を抽出する抽出ステップと、
前記取得ステップの処理で取得された前記ディスクリプタから前記位置情報を抽出し、抽出した前記位置情報に基づき、前記メモリからパケット単位のデータをDMAによって読み出すDMAステップと、
前記取得ステップの処理、または前記DMAステップの処理の少なくとも一方を、前記抽出ステップの処理によって抽出済の前記遅延時間だけ遅延させる遅延ステップと
を含むことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、および情報処理方法に関し、特に、メモリ上のデータをDMA(Direct Memory Access)にて読み出し、ネットワークを介して送信する場合に用いて好適な情報処理装置、および情報処理方法に関する。
【背景技術】
【０００２】
送信装置からネットワークを介して受信装置にデータを送信するシステムを考える。図１は、当該システムの構成例を示している。
【０００３】
送信装置１は、所定のプログラムを実行することにより送信装置１の全体を制御するCPU１１と、データバス１２を介してCPU１１に接続されたメモリ１３、メモリコントローラ１４、およびネットワークカード１５から構成されている。受信装置３に送信すべきデータ（以下、送信データと記述する）はメモリ１３に記憶されており、通常、CPU１１を占有しないように、メモリ１３からDMA(Direct Memory Access)によって読み出されてネットワークカード１５に移動された後、ネットワークカード１５からネットワーク２を介して受信装置３に送信される。
【０００４】
メモリ１３に記録されている送信データをネットワークカード１５にDMAを行う動作について、図２のフローチャートを参照して説明する。ステップＳ１においてCPU１１は、メモリ１３上に設けられたディスクリプタテーブルの各ディスクリプタに、送信データのパケット単位の情報を記述する。
【０００５】
図３はディスクリプタテーブルの一例を示している。ディスクリプタテーブルは、メモリ１３の連続した領域に記録された複数のディスクリプタ＃０乃至＃ｎから構成される。図４は各ディスクリプタのデータ構造を示している。ディスクリプタには、対応するパケットのメモリ１３における記録開始アドレスの上位３２ビットを示すaddress(high)および下位３２ビットを示すaddress(low)、未使用１６ビットのreserved、並びにパケット長を示す１６ビットのlengthが記述される。
【０００６】
図２に戻り、ステップＳ２においてCPU１１は、ネットワークカード１５に対して利用可能となった（すなわち、ステップＳ１の処理でパケット単位の情報を記述した）ディスクリプタの番号を通知する。
【０００７】
この通知に対応し、ステップＳ３においてネットワークカード１５は、利用可能なディスクリプタを順に１つずつメモリ１３から読み出す。そしてステップＳ４においてネットワークカード１５は、ディスクリプタに記述されている記録開始アドレスおよびパケット長をメモリコントローラ１４に通知する。この通知に対応してメモリコントローラ１４は、メモリ１３の当該記録開始アドレスを先頭とする当該パケット長のデータを、メモリ１３からネットワークカード１５にDMAにより転送させる。ネットワークカード１５は、DMA転送されたパケットを、ネットワーク２を介して受信装置３に送信する。ステップＳ３およびＳ４の処理によって、送信データの１パケットがネットワークカード１５に移動され、受信装置３に送信されたことになる。
【０００８】
ステップＳ５においてネットワークカード１５は、利用可能なディスクリプタのうち、読み出していないものが存在するか否かを判定する。読み出していないディスクリプタが存在すると判定された場合、ステップＳ３に戻り、それ以降の処理が繰り返される。そしてステップＳ５において、読み出していないディスクリプタが存在しないと判定した場合、送信データを構成する全てのパケットがネットワークカード１５に移動され、受信装置３に送信されたことになるので、処理はステップＳ６に進む。ステップＳ６において、ネットワークカード１５は、CPU１１に対してDMAの終了を通知する。ステップＳ７においてCPU１１は、送信データが記録されていたメモリ１３の上の空間を開放する。以上で、メモリ１３からネットワークカード１５にDMA転送を行う動作の説明を終了する。
【０００９】
なお、DMA転送については、例えば特許文献１に記載がある。
【００１０】
【特許文献１】特開２０００−２９８６４０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
以上説明したように、DMA転送はCPU１１からネットワークカード１５に利用可能となったディスクリプタの番号を通知することにより開始されるが、ソフトウェアに従って動作するCPU１１の処理の粒度（動作のタイミングを制御するときの時間的間隔）が、ハードウェアであるネットワークカード１５のそれに比較して大きいので、ソフトウェアの処理の粒度がボトルネックとなり、ネットワークカード１５が本来有している性能（処理の粒度の細かさ）を充分に活かしきることができない。よって、例えばネットワークカード１５からネットワーク２を介してパケットを送信するときの送信間隔を、ネットワークカード１５が本来有している性能にみあった精度で調整することができなかった。
【００１２】
本発明はこのような状況に鑑みてなされたものであり、メモリ上のデータをDMAにより読み出して送信する際の送信間隔を高い精度で調整できるようにするものである。
【課題を解決するための手段】
【００１３】
本発明の情報処理装置は、メモリ上におけるデータのパケット単位の記録位置を示す位置情報、およびパケット単位の処理に関わる遅延時間を含むディスクリプタを生成する生成手段と、生成手段によって生成されたディスクリプタを取得し、取得したディスクリプタから位置情報および遅延時間を抽出する抽出手段と、抽出手段によって抽出された位置情報に基づき、メモリからパケット単位のデータをDMAによって読み出すDMA手段と、抽出手段、またはDMA手段の少なくとも一方の処理を、抽出手段によって抽出済の遅延時間だけ遅延させる遅延手段とを含むことを特徴とする。
【００１４】
前記生成手段はソフトウェアにより実現され、前記遅延手段はハードウェアにより実現されるようにすることができる。
【００１５】
前記取得手段は、生成手段によって生成されたディスクリプタを１つずつ取得するようにすることができる。
【００１６】
前記取得手段は、生成手段によって生成された複数のディスクリプタを一括して取得するようにすることができる。
【００１７】
本発明の情報処理方法は、メモリ上における前記データのパケット単位の記録位置を示す位置情報、およびパケット単位の処理に関わる遅延時間を含むディスクリプタを生成する生成ステップと、生成ステップの処理で生成されたディスクリプタを取得する取得ステップと、取得ステップの処理で取得されたディスクリプタから遅延時間を抽出する抽出ステップと、取得ステップの処理で取得されたディスクリプタから位置情報を抽出し、抽出した位置情報に基づき、メモリからパケット単位のデータをDMAによって読み出すDMAステップと、取得ステップの処理、またはDMAステップの処理の少なくとも一方を、抽出ステップの処理によって抽出済の前記遅延時間だけ遅延させる遅延ステップとを含むことを特徴とする。
【００１８】
本発明においては、メモリ上におけるデータのパケット単位の記録位置を示す位置情報、およびパケット単位の処理に関わる遅延時間を含むディスクリプタが生成され、生成されたディスクリプタが取得されて、取得されたディスクリプタから位置情報および遅延時間が抽出され、抽出された位置情報に基づき、メモリからパケット単位のデータがDMAによって読み出される。そして、抽出の処理、またはDMAの処理の少なくとも一方が、抽出済の遅延時間だけ遅延される。
【発明の効果】
【００１９】
本発明によれば、メモリ上のデータをDMAにより読み出して送信する際の送信間隔を高い精度で調整することが可能となる。
【発明を実施するための最良の形態】
【００２０】
以下に本発明の実施の形態を説明するが、請求項に記載の構成要件と、発明の実施の形態における具体例との対応関係を例示すると、次のようになる。この記載は、請求項に記載されている発明をサポートする具体例が、発明の実施の形態に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、構成要件に対応するものとして、ここには記載されていない具体例があったとしても、そのことは、その具体例が、その構成要件に対応するものではないことを意味するものではない。逆に、具体例が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その具体例が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００２１】
さらに、この記載は、発明の実施の形態に記載されている具体例に対応する発明が、請求項に全て記載されていることを意味するものではない。換言すれば、この記載は、発明の実施の形態に記載されている具体例に対応する発明であって、この出願の請求項には記載されていない発明の存在、すなわち、将来、分割出願されたり、補正により追加されたりする発明の存在を否定するものではない。
【００２２】
請求項１に記載の情報処理装置（例えば、図５の送信装置３０）は、
メモリ上におけるデータのパケット単位の記録位置を示す位置情報、およびパケット単位の処理に関わる遅延時間を含むディスクリプタを生成する生成手段（例えば、図６のディスクリプタ設定部４１）と、
生成手段によって生成されたディスクリプタを取得し、取得したディスクリプタから位置情報および遅延時間を抽出する抽出手段（例えば、図６のディスクリプタ取得部５２）と、
抽出手段によって抽出された位置情報に基づき、メモリからパケット単位のデータをDMAによって読み出すDMA手段（例えば、図６のDMA制御部５４）と、
抽出手段、またはDMA手段の少なくとも一方の処理を、抽出手段によって抽出済の遅延時間だけ遅延させる遅延手段（例えば、図６の待機時間制御部５３）と
を含む。
【００２３】
請求項５に記載の情報処理方法は、メモリ上におけるデータのパケット単位の記録位置を示す位置情報、およびパケット単位の処理に関わる遅延時間を含むディスクリプタを生成する生成ステップ（例えば、図８のステップＳ１１）と、生成ステップの処理で生成されたディスクリプタを取得する取得ステップ（例えば、図８のステップＳ１５）と、取得ステップの処理で取得されたディスクリプタから遅延時間を抽出する抽出ステップ（例えば、図８のステップＳ１６）と、取得ステップの処理で取得されたディスクリプタから位置情報を抽出し、抽出した位置情報に基づき、メモリからパケット単位のデータをDMAによって読み出すDMAステップ（例えば、図８のステップＳ１７）と、取得ステップの処理、またはDMAステップの処理の少なくとも一方を、抽出ステップの処理によって抽出済の遅延時間だけ遅延させる遅延ステップ（例えば、図８のステップＳ１４）とを含む。
【００２４】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
【００２５】
図５は、本発明の一実施の形態である送信装置の構成例を示している。この送信装置３０は、内蔵するメモリ３３に記録されている（あるいは蓄積される）送信データを、送信レートを制御しながらネットワーク２を介して受信装置３にデータ送信するものである。
【００２６】
送信装置３０は、メモリ３３に記録されているプログラム３６を実行することにより図６に示す機能ブロック（ディスクリプタ設定部４１、デバイスドライバ４３、および割り込み処理部４４）を実現するCPU３１と、データバス３２を介してCPU３１に接続されたメモリ３３、メモリコントローラ３４、およびネットワークカード３５から構成されている。
【００２７】
メモリ３３には、CPU３１によって実行されるプログラム３６（ネットワークカード３５を制御するためのデバイスドライバプログラムを含む）が記録されている。また、メモリ３３には、送信データ４５（図６）が蓄積されるとともに、複数のディスクリプタから構成されるディスクリプタテーブル４６（図６）が設けられている。
【００２８】
メモリコントローラ３４は、ネットワークカード３５から通知される記録開始アドレスaddressおよびパケット長lengthに従い、メモリ３３に記録されている送信データ４５をパケット単位でネットワークカード３５にDMAによって転送させる。
【００２９】
ネットワークカード３５は、CPU３１によってメモリ３３上に記述されたディスクリプタを読み出し、読み出したディスクリプタに従ってメモリコントローラ３４を制御することにより、パケット単位の送信データ４５をDMA転送により取得し、ネットワーク２を介して受信装置３に送信する。
【００３０】
図６は、CPU３１がプログラム３６を実行することによって実現される機能ブロックと、ネットワークカード３５の詳細な構成例を示している。
【００３１】
機能ブロックであるディスクリプタ設定部４１、デバイスドライバ４３、および割り込み処理部４４は、CPU３１がプログラム３６を実行することにより実現される。
【００３２】
ディスクリプタ設定部４１は、メモリ３３に設けられたディスクリプタテーブル４６の各ディスクリプタに送信データ４５のパケット単位の情報を記述する。なお、ディスクリプタテーブル４６は、図３に示されたように、連続的に配置された複数のディスクリプタから構成される。
【００３３】
図７は、ディスクリプタ設定部４１によって記述されるディスクリプタのデータ構造を示している。このディスクリプタには、図３に示されたディスクリプタと同様に、対応するパケットのメモリ３３における記録開始アドレスの上位３２ビットを示すaddress(high)および下位３２ビットを示すaddress(low)、並びにパケット長を示す１６ビットのlengthが記述され、さらに図３に示されたディスクリプタでは未使用であった１６ビットのreservedに、パケットのDMA転送の間隔を調整するための遅延時間を示すdelayが記述されている。このdelayは、ディスクリプタ設定部４１の遅延時間記述部４２によって記述される。なお、ディスクリプタテーブル４６をメモリ３３上ではなく、例えばネットワークカード３５に設ける記憶部（不図示）に設けるようにしてもよい。
【００３４】
デバイスドライバ４３は、利用可能となったディスクリプタ、すなわち、ディスクリプタ設定部４１によって記述されたディスクリプタの番号を、ネットワークカード３５のディスクリプタ制御部５１に通知する。
【００３５】
割り込み処理部４４は、ネットワークカード３５の割り込み制御部５６からDMAの終了が通知されたとき、所定の割り込み処理（送信データ４５が占めるメモリ３の空間を開放する処理等）を行う。
【００３６】
一方、ネットワークカード３５は、ディスクリプタ制御部５１、ディスクリプタ取得部５２、待機時間制御部５３、待機時間制御部５３、DMA制御部５４、送信部５５、および割り込み制御部５６から構成される。
【００３７】
ディスクリプタ制御部５１は、デバイスドライバ４３から通知される利用可能なディスクリプタの番号を内蔵されたレジスタに記憶する。ディスクリプタ取得部５２は、ディスクリプタ制御部５１に記憶されている利用可能なディスクリプタの番号に基づき、メモリ３３に設けられたディスクリプタテーブル４６から利用可能なディスクリプタを取得し、当該ディスクリプタに記述されている記録開始アドレスaddressとパケット長lengthをDMA制御部５４に通知し、遅延時間delayを待機時間制御部５３に通知する。
【００３８】
待機時間制御部５３は、待機時間Ｄを保持しており、ディスクリプタ取得部５２から遅延時間delayが通知される毎、通知された遅延時間delayを用いて待機時間Ｄを更新する。さらに、待機時間制御部５３は、ディスクリプタ取得部５２の動作開始を待機時間Ｄだけ遅延させる。
【００３９】
DMA制御部５４は、ディスクリプタ取得部５２から通知された記録開始アドレスaddressとパケット長lengthをメモリコントローラ３４に通知してDMAの実行を依頼する。さらに、DMA制御部５４は、利用可能なディスクリプタが存在しない旨の通知をディスクリプタ取得部５２から受け取り、かつ、利用可能な最後のディスクリプタに基づくDMAの終了を示す通知を送信部５５から受け取った場合、割り込み制御部５６にDMAが終了した旨を通知する。
【００４０】
送信部５５は、メモリコントローラ３４による制御に対応してメモリ４５からDMAによって転送されるパケット単位の送信データ４５を、ネットワーク２を介して受信装置３に送信する。割り込み制御部５６は、DMAの終了を示す通知をDMA制御部５４から受け取ったとき、DMAが終了した旨を割り込み処理部４４に通知する。
【００４１】
送信装置３０による動作を説明する。送信装置３０は以下に説明する第１または第２のパケット送信処理を実行する。
【００４２】
はじめに第１のパケット送信処理について、図８のフローチャートを参照して説明する。なお、送信データ４５はメモリ３３に蓄積されているものとする。
【００４３】
ステップＳ１１においてディスクリプタ設定部４１は、メモリ３３に設けられたディスクリプタテーブル４６の各ディスクリプタに送信データ４５のパケット単位の情報（delayを含む）を記述する。ステップＳ１２においてデバイスドライバ４３は、利用可能となったディスクリプタ、すなわち、ステップＳ１１の処理でディスクリプタ設定部４１により記述されたディスクリプタの番号を、ネットワークカード３５のディスクリプタ制御部５１に通知する。ディスクリプタ制御部５１は、通知されたディスクリプタの番号を内蔵するレジスタに記憶する。ステップＳ１３において待機時間制御部５３は、保持する待機時間Ｄを０に初期化する。
【００４４】
ステップＳ１４において待機時間制御部５３は、保持する待機時間Ｄだけ待機する。したがって、ステップＳ１５以降の処理の開始が待機時間Ｄだけ遅延される。いまの場合、待機時間Ｄ＝０なので、処理は直ちにステップＳ１５に進む。
【００４５】
ステップＳ１５においてディスクリプタ取得部５２は、メモリ３３に設けられたディスクリプタテーブル４６から、ディスクリプタ制御部５１のレジスタに記憶されている番号に対応する１つのディスクリプタを取得する。ステップＳ１６においてディスクリプタ取得部５２は、取得したディスクリプタに記述されている遅延時間delayを待機時間制御部５３に通知する。待機時間制御部５３は、保持している待機時間Ｄに通知された遅延時間delayを代入する。
【００４６】
ステップＳ１７においてディスクリプタ取得部５２は、取得したディスクリプタに記述されている記録開始アドレスaddressとパケット長lengthをDMA制御部５４に通知する。DMA制御部５４は、通知された記録開始アドレスaddressとパケット長lengthをメモリコントローラ３４に通知してDMAの実行を依頼する。これに対応して、メモリコントローラ３４は、メモリ３３の、通知された記録開始アドレスaddressからパケット長length分のデータをDMAにより送信部５５に転送する。送信部５５は、DMA転送されたパケット単位の送信データ４５を、ネットワーク２を介して受信装置３に送信する。
【００４７】
ステップＳ１８においてディスクリプタ取得部５２は、ディスクリプタ制御部５１のレジスタに記憶されている番号に対応するディスクリプタのうち、未取得のものが残っているか否かを判定する。未取得のディスクリプタが残っていると判定された場合、ステップＳ１４に戻り、それ以降の処理が繰り返される。なお、２回目以降のステップＳ１４の処理では、前回のステップＳ１６の処理で待機時間Ｄに遅延時間delayが代入されているので実際に待機時間が設けられることになる。したがって、ステップＳ１４を含むステップＳ１４乃至Ｓ１８の処理の繰り返し間隔は、ディスクリプタに記述されている遅延時間delayに依存することになる。
【００４８】
そしてステップＳ１８において、未取得のディスクリプタが残っていないと判定された場合、処理はステップＳ１９に進む。ステップＳ１９においてDMA制御部５４は、割り込み制御部５６にDMAが終了した旨を通知する。この通知に対応し、割り込み制御部５６は、DMAが終了した旨を割り込み処理部４４に通知する。ステップＳ２０において割り込み処理部４４は、当該通知に対応し、所定の割り込み処理（送信データ４５が占めるメモリ３の空間を開放する処理等）を行う。なお実際には、割り込み制御部５６からの通知に対応して、割り込み処理部４４を実現するプログラムが起動されて、所定の割り込み処理が行われる。以上で、送信装置３０による第１のパケット送信処理の説明を終了する。
【００４９】
第１のパケット送信処理によれば、ステップＳ１４乃至Ｓ１８の処理、すなわち、ディスクリプタを取得し、取得したディスクリプタに基づいてパケットをDMA転送し、ネットワーク２を介して送信する処理の繰り返し間隔は、ディスクリプタに記述されている遅延時間delayが代入された遅延時間Ｄに相当し、遅延時間Ｄは待機時間制御部５３により制御される。ここで待機時間制御部５３はハードウェアであるネットワークカード３５上の一回路である。したがって、ステップＳ１４乃至Ｓ１８の処理の繰り返し間隔を高い精度で制御することが可能となる。よって、送信データの送信レートを安定させ、送信データがバースト(burst)的に送信されることを抑止することができ、いわゆるトラフィックシェーピングを実現することが可能となる。
【００５０】
次に第２のパケット送信処理について、図９のフローチャートを参照して説明する。なお、送信データ４５はメモリ３３に蓄積されているものとする。
【００５１】
ステップＳ２１においてディスクリプタ設定部４１は、メモリ３３に設けられたディスクリプタテーブル４６の各ディスクリプタに送信データ４５のパケット単位の情報（delayを含む）を記述する。ステップＳ３２においてデバイスドライバ４３は、利用可能となったディスクリプタ、すなわち、ステップＳ１１の処理でディスクリプタ設定部４１により記述されたディスクリプタの番号を、ネットワークカード３５のディスクリプタ制御部５１に通知する。ディスクリプタ制御部５１は、通知されたディスクリプタの番号を内蔵するレジスタに記憶する。
【００５２】
ステップＳ３３においてディスクリプタ取得部５２は、メモリ３３に設けられたディスクリプタテーブル４６から、ディスクリプタ制御部５１のレジスタに記憶されている番号に対応する全てのディスクリプタを取得する。
【００５３】
ステップＳ３４において待機時間制御部５３は、保持する待機時間Ｄを０に初期化する。
【００５４】
ステップＳ３５においてディスクリプタ取得部５２は、メモリ３３から取得済のディスクリプタのうち、記録開始アドレスaddress等を読み出していない１つのディスクリプタを読み出す。ステップＳ３６において待機時間制御部５３は、保持する待機時間Ｄだけ待機する。したがって、ステップＳ３７以降の処理の開始が待機時間Ｄだけ遅延される。いまの場合、待機時間Ｄ＝０なので、処理は直ちにステップＳ３７に進む。
【００５５】
ステップＳ３７においてディスクリプタ取得部５２は、ステップＳ３５の処理で読み出したディスクリプタに記述されている遅延時間delayを待機時間制御部５３に通知する。待機時間制御部５３は、保持している待機時間Ｄに通知された遅延時間delayを代入する。
【００５６】
ステップＳ３８においてディスクリプタ取得部５２は、ステップＳ３５の処理で読み出したディスクリプタに記述されている記録開始アドレスaddressとパケット長lengthをDMA制御部５４に通知する。DMA制御部５４は、通知された記録開始アドレスaddressとパケット長lengthをメモリコントローラ３４に通知してDMAの実行を依頼する。これに対応して、メモリコントローラ３４は、メモリ３３の、通知された記録開始アドレスaddressからパケット長length分のデータをDMAにより送信部５５に転送する。送信部５５は、DMA転送されたパケット単位の送信データ４５を、ネットワーク２を介して受信装置３に送信する。
【００５７】
ステップＳ３９においてディスクリプタ取得部５２は、ステップＳ３３の処理で取得済のディスクリプタのうち、ステップＳ３５の処理で読み出していないものが残っているか否かを判定する。読み出していないディスクリプタが残っていると判定された場合、ステップＳ３５に戻り、それ以降の処理が繰り返される。なお、２回目以降のステップＳ３６の処理では、前回のステップＳ３７の処理で待機時間Ｄに遅延時間delayが代入されているので実際に待機時間が設けられることになる。したがって、ステップＳ３６を含むステップＳ３５乃至Ｓ３９の処理の繰り返し間隔は、ディスクリプタに記述されている遅延時間delayに依存することになる。
【００５８】
そしてステップＳ３９において、読み出していないディスクリプタが残っていないと判定された場合、処理はステップＳ４０に進む。ステップＳ４０においてDMA制御部５４は、割り込み制御部５６にDMAが終了した旨を通知する。この通知に対応し、割り込み制御部５６は、DMAが終了した旨を割り込み処理部４４に通知する。ステップＳ４１において割り込み処理部４４は、当該通知に対応し、所定の割り込み処理（送信データ４５が占めるメモリ３の空間を開放する処理等）を行う。なお実際には、割り込み制御部５６からの通知に対応して、割り込み処理部４４を実現するプログラムが起動されて、所定の割り込み処理が行われる。以上で、送信装置３０による第２のパケット送信処理の説明を終了する。
【００５９】
第２のパケット送信処理によれば、ステップＳ３５乃至Ｓ３９の処理、すなわち、取得済のディスクリプタを読み出し、読み出したディスクリプタに基づいてパケットをDMA転送し、ネットワーク２を介して送信する処理の繰り返し間隔は、ディスクリプタに記述されている遅延時間delayが代入された遅延時間Ｄに相当し、遅延時間Ｄは待機時間制御部５３により制御される。ここで待機時間制御部５３はハードウェアであるネットワークカード３５上の一回路である。したがって、ステップＳ３５乃至Ｓ３９の処理の繰り返し間隔を高い精度で制御することが可能となる。よって、送信データの送信レートを安定させ、送信データがバースト(burst)的に送信されることを抑止することができ、いわゆるトラフィックシェーピングを実現することが可能となる。
【００６０】
なお、上述した第１または第２のパケット送信処理のいずれにおいても、パケット単位でディスクリプタが記述されるので、パケット長が一定ではない場合においても、すなわち、可変長パケットにより構成される送信データを送信する場合においても本発明を適用することが可能である。
【図面の簡単な説明】
【００６１】
【図１】ネットワークを介してデータを送受信するシステムの一例を示す図である。
【図２】図１の送信装置による動作を説明するフローチャートである。
【図３】複数のディスクリプタから構成されるディスクリプタテーブルの一例を示す図である。
【図４】DMAに用いられるディスクリプタのデータ構造を示す図である。
【図５】本発明を適用した送信装置の構成例を示すブロック図である。
【図６】図５のCPUより実現される機能ブロックとネットワークカードの構成例を示すブロック図である。
【図７】図６のディスクリプタ設定部により記述されるディスクリプタのデータ構造を示す図である。
【図８】図５の送信装置による第１のパケット送信処理を説明するフローチャートである。
【図９】図５の送信装置による第２のパケット送信処理を説明するフローチャートである。
【符号の説明】
【００６２】
２  ネットワーク，  ３  受信装置，  ３０  送信装置，  ３１  CPU，  ３２  データバス，３３  メモリ，  ３４  メモリコントローラ，  ３５  ネットワークカード，  ３６  プログラム，  ４１  ディスクリプタ設定部，  ４２  遅延時間記述部，  ４３  デバイスドライバ，  ４４  割り込み処理部，  ４５  送信データ，  ４６  ディスクリプタテーブル，  ５１  ディスクリプタ制御部，  ５２  ディスクリプタ取得部，  ５３  待機時間制御部，  ５４  DMA制御部，  ５５  送信部，  ５６  割り込み制御部
【図１】
2006293799.tif 000003
【図２】
2006293799.tif 000004
【図３】
2006293799.tif 000005
【図４】
2006293799.tif 000006
【図５】
2006293799.tif 000007
【図６】
2006293799.tif 000008
【図７】
2006293799.tif 000009
【図８】
2006293799.tif 000010
【図９】
2006293799.tif 000011