(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-13
(45)【発行日】2024-02-21
(54)【発明の名称】通信装置、通信装置の制御方法、および集積回路
(51)【国際特許分類】
G06F 12/00 20060101AFI20240214BHJP
G06F 13/36 20060101ALI20240214BHJP
G06F 13/362 20060101ALI20240214BHJP
H04L 47/24 20220101ALI20240214BHJP
【FI】
G06F12/00 550K
G06F12/00 560B
G06F13/36
G06F13/362 510B
H04L47/24
(21)【出願番号】P 2020041070
(22)【出願日】2020-03-10
【審査請求日】2023-01-11
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】100155712
【氏名又は名称】村上 尚
(72)【発明者】
【氏名】中谷 好博
【審査官】後藤 彰
(56)【参考文献】
【文献】特開2001-257684(JP,A)
【文献】特開2003-319009(JP,A)
【文献】特開2011-182369(JP,A)
【文献】特開2020-27995(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G06F 13/36
G06F 13/362
H04L 47/24
(57)【特許請求の範囲】
【請求項1】
主メモリにDMA(Direct Memory Access)方式でアクセスする通信装置であって、
前記主メモリの送信ディスクリプタ領域から送信ディスクリプタを取得し、前記送信ディスクリプタに基づいて前記送信ディスクリプタに対応する送信データの優先度を判定し、判定された優先度に対応するキューに前記送信ディスクリプタを渡す送信ディスクリプタフェッチと、
複数の優先度にそれぞれ対応した複数のキューであって、前記主メモリから前記送信ディスクリプタに対応する送信データを取得する前記複数のキューと、
優先度に応じて前記複数のキューが取得した複数の前記送信データの送信順を調停する送信調停部と、
を備える通信装置。
【請求項2】
前記送信ディスクリプタフェッチは、
前記送信ディスクリプタに基づいて、前記送信ディスクリプタに対応する前記送信データのヘッダの少なくとも一部を取得し、
前記送信データのヘッダの少なくとも一部に基づいて前記送信データの優先度を判定する、請求項1に記載の通信装置。
【請求項3】
前記送信ディスクリプタフェッチは、前記送信データのヘッダに含まれる宛先アドレスに基づいて前記送信データの優先度を判定する、請求項2に記載の通信装置。
【請求項4】
複数の宛先アドレスと、前記複数の優先度とを関連付けて記憶する優先度記憶部を備える、請求項3に記載の通信装置。
【請求項5】
前記送信ディスクリプタは、前記送信データに関する優先度情報を含み、
前記送信ディスクリプタフェッチは、前記優先度情報に基づいて、前記送信データの優先度を判定する、請求項1に記載の通信装置。
【請求項6】
前記送信ディスクリプタは、前記送信データの宛先アドレスを含み、
前記送信ディスクリプタフェッチは、前記宛先アドレスに基づいて前記送信データの優先度を判定する、請求項1に記載の通信装置。
【請求項7】
主メモリにDMA(Direct Memory Access)方式でアクセスする通信装置の制御方法であって、
前記主メモリの送信ディスクリプタ領域から送信ディスクリプタを取得するステップと、
前記送信ディスクリプタに基づいて前記送信ディスクリプタに対応する送信データの優先度を判定するステップと、
判定された優先度に対応するキューに前記送信ディスクリプタを渡すステップと、
前記主メモリから前記送信ディスクリプタに対応する送信データを取得するステップと、
優先度に応じて複数の前記送信データの送信順を調停するステップと、を含む通信装置の制御方法。
【請求項8】
請求項1に記載の通信装置として機能する集積回路であって、
前記送信ディスクリプタフェッチと、前記複数のキューと、前記送信調停部と、として機能する、ハードウェアの論理回路が形成されていることを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、優先度に応じたEtherパケット送信を自動振り分けする通信装置に関する。
【背景技術】
【0002】
従来、産業用制御装置に用いられる通信手段は多数あり、EtherCAT(登録商標)などが多く用いられてきている。データ容量の増加またはリアルタイム性の向上の為に、Gigabpsに対応したEtherCAT Gへの対応または、Time Sensitive Network(以下、TSN)への対応が求められている。更に、一定周期での制御データの通信と、不定期での情報データの通信とが混在した通信規格が求められている。
【0003】
制御データは低遅延、小ジッターである必要があり、大容量の情報データよりも、制御データは高優先に通信を行う必要がある。この通信を実現するため、FirmWare(以下、FW)が、送信データの種類により、送信の優先順位を決め、それに応じて通信経路の振り分け処理を行うことが従来技術として知られている。
【0004】
特許文献1に、送信されるデータの優先度によって、複数ある送信バッファを、排他的に切り替える技術が開示されている。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上述のような従来技術は、FWによる通信経路の振り分け処理に時間がかかり、産業用制御装置のCPU負荷を増大させ、遅延を発生させるという課題がある。
【0007】
また、高優先度を優先して処理していた場合、低優先度のバッファが送信ポートを排他的に占有している間に、高優先度のバッファにデータが入った場合、高優先度のデータの送信は開始されず、遅延が発生する課題がある。
【0008】
本発明の一様態は、主メモリを備える情報処理装置のプロセッサの負荷を低減し、かつ、優先度に応じて適切に送信順を調停することを目的とする。
【課題を解決するための手段】
【0009】
本発明の一様態に係る通信装置は、主メモリにDMA(Direct Memory Access)方式でアクセスする通信装置であって、前記主メモリの送信ディスクリプタ領域から送信ディスクリプタを取得し、前記送信ディスクリプタに基づいて前記送信ディスクリプタに対応する送信データの優先度を判定し、判定された優先度に対応するキューに前記送信ディスクリプタを渡す送信ディスクリプタフェッチと、複数の優先度にそれぞれ対応した複数のキューであって、前記主メモリから前記送信ディスクリプタに対応する送信データを取得する前記複数のキューと、優先度に応じて前記複数のキューに格納された前記送信データの送信順を調停する送信調停部と、を備える。
【0010】
上記の構成によれば、送信ディスクリプタフェッチによって、主メモリにDMAでアクセスし、送信ディスクリプタに基づいて優先度を判定する。優先度を基に、送信順を調停されたキューからデータを送信できる。これにより、例えば主メモリを備える情報処理装置のプロセッサの負荷を低減し、かつ、優先度に応じて適切に送信順を調停することができる。
【0011】
前記通信装置は、前記送信ディスクリプタフェッチが、前記送信ディスクリプタに基づいて、前記送信ディスクリプタに対応する前記送信データのヘッダの少なくとも一部を取得し、前記送信データのヘッダの少なくとも一部に基づいて前記送信データの優先度を判定してもよい。
【0012】
上記の構成によれば、優先度を判定するために、ヘッダに加えて、全データを取得する必要がなく、送信データの一部だけ取得すればよい。そのため、必要なデータアクセスが減り、低負荷で優先度判定ができる。
【0013】
前記通信装置は、前記送信ディスクリプタフェッチが、前記送信データのヘッダに含まれる宛先アドレスに基づいて前記送信データの優先度を判定する、構成でもよい。
【0014】
上記の構成によれば、優先度を判定するための情報は、ヘッダのみでよい。そのため、部分的なデータアクセスにより、低負荷で優先度判定ができる。
【0015】
前記通信装置は、複数の宛先アドレスと、前記複数の優先度とを関連付けて記憶する優先度記憶部を備えていてもよい。
【0016】
上記の構成によれば、宛先アドレスから優先度を調べるためにFWへの問い合わせが不要になり、高速な送信が可能になる。
【0017】
前記通信装置は、前記送信ディスクリプタが、前記送信データに関する優先度情報を含み、前記送信ディスクリプタフェッチが、前記優先度情報に基づいて、前記送信データの優先度を判定する、構成でもよい。
【0018】
前記通信装置は、前記送信ディスクリプタが、前記送信データの宛先アドレスを含み、前記送信ディスクリプタフェッチが、前記宛先アドレスに基づいて前記送信データの優先度を判定する、構成であってもよい。
【0019】
本発明の一様態に係る通信装置の制御方法は、主メモリにDMA(Direct Memory Access)方式でアクセスする通信装置の制御方法であって、前記主メモリの送信ディスクリプタ領域から送信ディスクリプタを取得するステップと、前記送信ディスクリプタに基づいて前記送信ディスクリプタに対応する送信データの優先度を判定するステップと、判定された優先度に対応するキューに前記送信ディスクリプタを渡すステップと、前記主メモリから前記送信ディスクリプタに対応する送信データを取得するステップと、優先度に応じて複数の前記送信データの送信順を調停するステップと、を含む。
【0020】
前記通信装置として機能する集積回路は、前記送信ディスクリプタフェッチと、前記複数のキューと、前記送信調停部と、として機能する、ハードウェアの論理回路が形成されていてもよい。
【発明の効果】
【0021】
本発明の一態様によれば、主メモリを備える情報処理装置のプロセッサの負荷を低減し、かつ、優先度に応じて適切に送信順を調停することができる。
【図面の簡単な説明】
【0022】
【
図1】本実施形態に係る情報処理装置の構成要素を示すブロック図である。
【
図2】本実施形態に係る情報処理装置の構成要素を示すブロック図である。
【
図3】送信ディスクリプタと送信データのデータ構造を示す図である。
【発明を実施するための形態】
【0023】
〔実施形態1〕
§1 適用例
図2は、本実施形態の情報処理装置1の構成要素を示すブロック図である。情報処理装置1では、FW(ドライバ23)によって送信データの優先度振分を行うのではなく、通信装置4で送信データのヘッダ内にある宛先アドレスから、優先度をハードウェア処理で判別する。その後、優先度に基づき、送信キューを振り分けられ、送信データの送信順を調停されながら送信される。そのため、FWによって優先度振分を行い送信する従来技術よりも、FWの処理を低減することができ、低遅延・低負荷な処理が実現できる。
【0024】
§2 構成例
〔通信装置の機能構成〕
図1と
図2は、本実施形態の情報処理装置の構成要素を示すブロック図である。情報処理装置1は、CPU2(中央演算処理装置)と、主メモリ3と、通信装置4と、を備える。
【0025】
CPU2は、複数のアプリケーション21と、TCP/IPスタック22と、ドライバ23と、OS24(Operating System)と、を動作させる。CPU2はソフトウェアを動作させるプロセッサ(ハードウェア)で、FWを動作させている。
【0026】
アプリケーション21は、ソフトウェアであり、OS24上で動作する。TCP/IPスタック22は、TCP/IP通信のプロトコルに関するソフトウェアである。ドライバ23は、ソフトウェアとハードウェアの仲立ちをするソフトウェアである。
【0027】
主メモリ3は、送信ディスクリプタ領域31と、送信データ領域32と、を備える。送信ディスクリプタは送信データに関わる情報をまとめたヘッダである。
【0028】
主メモリ3は、CPU2が処理したまたは処理に用いるデータを保存しておく記憶装置であり、例えばDRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、SDRAM(Synchronous Dynamic Random Access Memory)、SSD(Solid State Drive)、HDD(Hard Disc Drive)、またはSDカードなどの記憶装置である。送信ディスクリプタ領域31は、送信ディスクリプタを複数格納しておくデータ領域である。送信データ領域32は、送信データを複数格納しておくデータ領域である。
【0029】
通信装置4(通信コントローラ)は、送信ディスクリプタフェッチ41と、2以上の複数の送信キュー42と、インタフェース43と、優先度記憶部44と、送信調停部45と、送受信ポート46と、を備える。通信装置4は、送信データを送信する処理を行うハードウェアである。通信装置4は、例えばネットワークインタフェースカード(NIC)であり、ASIC(Application Specific Integrated Circuit)、またはFPGA(Field-Programmable Gate Array)で構成された集積回路である。通信装置4は、送信データに優先度をつけ通信する機能を有する。
【0030】
送信ディスクリプタフェッチ41は、送信ディスクリプタを解釈し、送信キューへの振り分けを行う。送信ディスクリプタフェッチ41は、送信データの優先度に応じて、優先度に対応する送信キュー42に送信ディスクリプタを出力する。送信キュー42は、送信ディスクリプタを保存しておき、先入れ先出しで送信データを送受信ポートから送信できる。送信キュー42は、送信優先度が高優先度(TX0)のものから低優先度(TXm)のものまで複数ある。インタフェース43(I/F)は、CPU2と主メモリ3と通信する。
【0031】
優先度記憶部44は、複数の宛先アドレスと複数の優先度とを互いに関連付けて記憶する。送信調停部45は、複数の送信キューの優先度を考慮し、送信順を調停する。
【0032】
送受信ポート46は、実際にデータ(送信データ/受信データ)を、ネットワークを介して複数の外部装置へ送受信する部位である。ここでは、ネットワークとしてEthernet(登録商標)を想定した例を説明するが、これに限らない。ネットワークは、EtherCAT、EtherCAT G、またはTSN等のネットワークであってもよい。複数のネットワークがブランチコントローラを介して送受信ポート46に接続されていてもよい。外部装置としては、複数の優先度があり、外部装置に応じて優先度は異なる。外部装置としては、センサ入力、またはバルブ制御などの低遅延で定周期の制御データを送受信すべき高優先度の外部装置と、画像処理装置などの大容量の情報データを送受信すべき遅延を許した低優先度の外部装置とがある。
【0033】
送信ディスクリプタフェッチ41は、DMAC411と、振分部412と、を有する。複数の送信キュー42は、それぞれ、ディスクリプタFIFO421と、DMAC422と、データFIFO423と、を有する。DMAC411、422は、主メモリにDMA(Direct Memory Access)方式でアクセスする。振分部412は、送信データの優先度を確認し、該当する優先度の送信キュー42に振り分ける。ディスクリプタFIFO421(ディスクリプタバッファ)は、送信ディスクリプタを保存しておき、先入れ先出しで取り出せる。データFIFO423(データバッファ)は、送信データを保存しておき、先入れ先出しで取り出せる。
【0034】
主メモリ3は、通信装置4のインタフェース43と、CPU2を介して接続されている。通信装置4のインタフェース43は、送信ディスクリプタフェッチ41と、2以上の送信キュー42と、接続されている。送信ディスクリプタフェッチ41は、2以上の送信キュー42と接続されている。接続されている箇所では、通信によりデータの受け渡しが可能である。
【0035】
送信ディスクリプタフェッチ41と2以上の送信キュー42とは、DMAC411、422を用いて、インタフェース43を介して、主メモリと通信できる。
【0036】
図3は、送信ディスクリプタと送信データのデータ構造を示す図である。送信ディスクリプタ5は、バッファアドレス領域51と、送信完了フラグ領域52と、予約領域53と、を有する。
【0037】
バッファアドレス領域51は、主メモリ3における送信データ6の格納アドレスを含む領域である。送信完了フラグ領域52は、送信ディスクリプタ5に対応する送信データ6が送信されたか否かを示す情報を含む領域である。予約領域53は、その他通信に必要な情報および予備領域を含む。
【0038】
送信データ6は、Ethernetフレームである。送信データ6は、ヘッダ60と、IPフレーム61と、を含む。送信データ6のヘッダ60は、宛先MACアドレス領域62と、予約領域63と、を含む。送信データ6のIPフレーム61は、IPフレーム61のヘッダ64と、データ領域67とを含む。IPフレーム61のヘッダ64は、宛先IPアドレス領域65と、予約領域66と、を含む。
【0039】
宛先MACアドレス領域62は、送信先の外部装置(宛先)のMACアドレスを含む領域である。宛先IPアドレス領域65は、送信先の外部装置(宛先)のIPアドレスを含む領域である。予約領域63、66は、その他通信に必要な情報および予備領域を含む。宛先MACアドレス領域62と宛先IPアドレス領域65とのうちいずれか一方でも設定されていれば送信は成立するプロトコルを採用している。
【0040】
§3 動作例
図4は、通信装置のCPU2の動作フローチャートである。まず、CPU2での処理の流れを記す。
【0041】
ドライバ23は、通信装置4のインタフェース43を介して、予め優先度記憶部44に複数の宛先アドレスと複数の優先度とを互いに関連付けて設定する。宛先アドレスとしては、MACアドレス、IPアドレス、および/またはその他ネットワーク独自のアドレスでもよい。また、宛先アドレスがIPアドレスの場合、IPv6に対応していてもよい。
【0042】
宛先と優先度との関係は、上位のコンピュータでユーザが任意に設定したものを、CPU2が主メモリ3に保存しておく。宛先と優先度との関係は、通信装置4の初期化時に主メモリ3から通信装置4に読み込まれる。
【0043】
CPU2内では、複数のアプリケーション21が動作している。アプリケーション21は、APIを利用し、TCP/IPスタック22に対し、パケット送信を行う(S11)。
【0044】
TCP/IPスタック22は、受信したパケットを基に、IPフレーム61を生成し、生成したIPフレーム61をドライバ23に送信する(S12)。IPフレーム61の宛先IPアドレス領域には、宛先IPアドレスが、設定されていてもよい。
【0045】
ドライバ23は、Ethernet(登録商標)フレームを生成し、主メモリ3の送信データ領域32に、生成したEthernetフレームを送信データ6として書き込む(S13)。Ethernetフレーム(送信データ6)の宛先MACアドレス領域62には、宛先MACアドレスが、設定されていてもよい。この時、OS24は、主メモリ3の領域管理を行う。
【0046】
ドライバ23は、送信ディスクリプタ5を生成し、主メモリ3の送信ディスクリプタ領域31に送信ディスクリプタ5を書き込む(S14)。この時、OS24は、主メモリ3の領域管理を行う。ドライバ23は、主メモリ3の送信データ領域32に書き込んだ送信データ6の先頭アドレスおよびデータ長を、送信ディスクリプタ5のバッファアドレス領域51に格納する。
【0047】
ドライバ23は、通信装置4の送信ディスクリプタフェッチ41に対して、インタフェース43を介して、送信ディスクリプタ5を用意したことを通知する(S15)。この通知を受けて、通信装置4の送信ディスクリプタフェッチ41は動作を開始する。ドライバ23は、処理を終了する。
【0048】
CPU2は、アプリケーション21からパケット送信が行われると、S11からの処理を繰り返す。
【0049】
図5は、通信装置4の動作フローチャートである。次に、通信装置4での処理の流れを記す。
【0050】
送信ディスクリプタフェッチ41は、ドライバ23から送信ディスクリプタ5を用意したことの通知を受けると、DMAC411によって、DMA方式で主メモリ3の送信ディスクリプタ領域31にアクセスし、送信ディスクリプタ5を一つ取得する(S21)。
【0051】
DMAC411は、送信ディスクリプタ5の中の、バッファアドレス領域51を参照し、参照したアドレスを利用して、主メモリ3に格納されている送信データ6のヘッダの少なくとも一部を取得する(S22)。例えば、DMAC411は、送信データ6のヘッダ60全体および/またはヘッダ64全体を取得してもよいし、宛先MACアドレス領域62または宛先IPアドレス領域65を含むヘッダ60またはヘッダ64の一部を取得してもよい。すなわち、DMAC411は、送信データ6のうち、宛先アドレスの情報を含む送信データ6の一部を取得する。そのため、DMAC411は、送信データ6の他の一部(データ領域67)を取得しなくてもよい。DMAC411は、振分部412に、取得したヘッダ60、64を出力する。
【0052】
送信ディスクリプタフェッチ41の振分部412は、ヘッダ60、64に含まれる宛先アドレスに基づいて、送信データ6の優先度を判定する。振分部412は、優先度記憶部44から、受け取った宛先アドレスと優先度との関係を示す情報を取得し、該宛先アドレスに送信される送信データ6の優先度を判定する(S23)。
【0053】
送信ディスクリプタフェッチ41の振分部412は、判定した優先度を用いて、優先度に対応する送信キュー42内のディスクリプタFIFO421に送信ディスクリプタ5を渡す(S24)。
【0054】
送信キュー42のDMAC422は、ディスクリプタFIFO421から送信ディスクリプタ5を取得する。DMAC422は、送信ディスクリプタ5が示す主メモリ3のアドレスから、送信ディスクリプタ5に対応する送信データ6を取得する(S25)。DMAC422は、取得した送信データ6をデータFIFO423に格納する。
【0055】
送信調停部45は、優先度に応じて複数の送信キュー42に格納された複数の送信データ6の送信順を調停する。送信調停部45は、優先度がより高い送信キュー42から順に、送信キュー42に送信指令を出力する。送信キュー42は、送信調停部45の調停によった送信指令に従い、送信動作を開始する。送信指令を受けた送信キュー42は、データFIFO423に格納された送信データ6を、送受信ポート46から送信する(S26)。
【0056】
送信完了後、送信キュー42は、主メモリ3の送信ディスクリプタ領域31内の該当する送信ディスクリプタ5の送信完了フラグ領域52に、送信データ6の送信が完了した旨を示す送信完了フラグを記載する(S27)。
【0057】
(参考例)
参考例として、ドライバで優先度振分を行う場合について説明する。この場合、優先度が異なる複数の送信キューに応じて、異なる複数の送信ディスクリプタ領域および複数の送信データ領域を主メモリに確保する必要がある。ドライバが複数の送信データ領域から1つの送信データ領域を選択して送信データを書き込むとき、および複数の送信ディスクリプタ領域から1つの送信ディスクリプタ領域を選択して送信ディスクリプタを書き込むとき、OSによる主メモリの領域管理が必要になる。また、ドライバは、優先度を判定し、優先度に応じて1つの送信キューを選択して、起動する該送信キューのDMACを指定する必要がある。すなわち、ドライバは、優先度に応じて通信装置へのレジスタアクセスを変更する必要がある。各送信キューは、対応する送信ディスクリプタ領域から送信ディスクリプタを取得する。このように、ドライバで優先度振分を行う場合、ドライバ(FW)、およびOSにおいて、優先度に応じた処理が必要になる。そのため、ドライバおよびOSにおける負荷が増大し、処理の遅延が生じ得る。
【0058】
§ 作用・効果
一方、本実施形態に係る情報処理装置1は、ドライバ23(FW)によって、優先度に関係なく、一つの送信ディスクリプタ領域と、一つの送信データ領域とにデータを格納する。その後、通信装置4は、送信ディスクリプタフェッチ41でのハードウェア処理により優先度振分をする。優先度振分された送信データは、送信調停部により送信順を制御され送信される。そのため、情報処理装置1は、ドライバ23(FW)によって優先度振分を行う参考例よりも、ドライバ23およびOS24の処理負荷を低減することができる。また、複数の送信ディスクリプタ領域のメモリスイッチおよび複数の送信データ領域のメモリスイッチに起因するメモリアクセスのオーバーヘッドを低減することができる。それゆえ、OS24によるメモリ管理が容易である。これにより、高速・低負荷な処理が実現でき、リアルタイム性の向上が見込める。また、ドライバ23は、通信装置4の1つの送信ディスクリプタフェッチ41のみにアクセスすればよいので、既存のドライバおよびOSを流用することができる。
【0059】
〔変形例1〕
実施形態1ではS21~S23において、送信ディスクリプタフェッチ41は、送信ディスクリプタ5を一度読み込み、バッファアドレス領域51から送信データ6のアドレスを取得する。取得した一部の送信データ6内の、宛先MACアドレス領域62から宛先MACアドレスを、または、宛先IPアドレス領域65から宛先IPアドレスを取得する。振分部412は、これら、MACアドレスまたはIPアドレスと優先度との関係から、優先度の判定を行う。このステップを短縮するために、送信ディスクリプタ5の予約領域53に、宛先アドレス領域を設けてもよい。そしてドライバ23は、宛先アドレス領域に宛先MACアドレスまたは宛先IPアドレスを保存してもよい。この場合、送信ディスクリプタフェッチ41は、送信データの一部を取得せず、送信ディスクリプタのみから、送信データの優先度判定ができる。
【0060】
〔変形例2〕
実施形態1ではS22とS23とで、送信ディスクリプタフェッチ41は、送信データ6から宛先MACアドレスまたは宛先IPアドレスを取得し、優先度記憶部44の情報と照合し優先度を判定する。このステップを短縮するために、送信ディスクリプタ5の予約領域53に、優先度領域を設けてもよい。送信データの優先度は、アプリケーション21によって決定される。S11において、TCP/IPスタック22は、アプリケーション21によって決定された優先度情報をパケットに付加する。そしてドライバ23は、優先度領域に直接送信データに関する優先度情報(送信データの優先度を示す情報)を保存してもよい。送信ディスクリプタフェッチ41は、S22およびS23の処理をスキップし、送信ディスクリプタのみから、送信データの優先度判定ができる。S24で、振分部412は、その優先度に基づき、送信データを送信キューに振り分けできる。
【0061】
この場合、同じ宛先アドレスでも送信データに応じて異なる優先度をアプリケーション21で設定できる利点がある。
【0062】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【符号の説明】
【0063】
1 情報処理装置
2 CPU
3 主メモリ
4 通信装置
5 送信ディスクリプタ
6 送信データ
21 アプリケーション
22 TCP/IPスタック
23 ドライバ
24 OS
31 送信ディスクリプタ領域
32 送信データ領域
41 送信ディスクリプタフェッチ
42 送信キュー
43 インタフェース
44 優先度記憶部
45 送信調停部
46 送受信ポート
51 バッファアドレス領域
52 送信完了フラグ領域
53、63、66 予約領域
60、64 ヘッダ
61 IPフレーム
62 宛先MACアドレス領域
65 宛先IPアドレス領域
67 データ領域