IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オムロン株式会社の特許一覧

特許7435055通信装置、通信装置の制御方法、および集積回路
<>
  • 特許-通信装置、通信装置の制御方法、および集積回路 図1
  • 特許-通信装置、通信装置の制御方法、および集積回路 図2
  • 特許-通信装置、通信装置の制御方法、および集積回路 図3
  • 特許-通信装置、通信装置の制御方法、および集積回路 図4
  • 特許-通信装置、通信装置の制御方法、および集積回路 図5
  • 特許-通信装置、通信装置の制御方法、および集積回路 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-13
(45)【発行日】2024-02-21
(54)【発明の名称】通信装置、通信装置の制御方法、および集積回路
(51)【国際特許分類】
   H04L 69/00 20220101AFI20240214BHJP
   G06F 13/28 20060101ALI20240214BHJP
   G06F 13/34 20060101ALI20240214BHJP
   G06F 13/362 20060101ALI20240214BHJP
【FI】
H04L69/00
G06F13/28 310Z
G06F13/34
G06F13/362 510D
【請求項の数】 8
(21)【出願番号】P 2020041071
(22)【出願日】2020-03-10
(65)【公開番号】P2021145182
(43)【公開日】2021-09-24
【審査請求日】2023-01-11
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】100155712
【弁理士】
【氏名又は名称】村上 尚
(72)【発明者】
【氏名】中谷 好博
【審査官】和平 悠希
(56)【参考文献】
【文献】特開2018-025879(JP,A)
【文献】特開2002-288115(JP,A)
【文献】特開平09-312652(JP,A)
【文献】特開2003-318971(JP,A)
【文献】特開2007-088709(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/00-12/66
H04L 41/00-101/695
G06F 13/28
G06F 13/34
G06F 13/362
(57)【特許請求の範囲】
【請求項1】
受信キューを備え、
1つの前記受信キューは、
ネットワークから受信した受信データの優先度を判定する優先度判定部と、
前記受信データを格納するバッファと、
前記バッファに格納されている前記受信データを主メモリに転送する転送部と、
前記転送部が第1優先度の受信データを前記主メモリに転送しているときに、前記バッファが前記第1優先度より優先度が高い第2優先度の受信データを受信すると、前記転送部に前記第1優先度の受信データの転送を中止させ、前記第2優先度の受信データの前記主メモリへの転送を開始させる転送調停部と、を備え、
前記転送部は、受信ディスクリプタが示す前記主メモリのデータ領域に前記受信データを転送するものであり、
前記転送部は、前記転送調停部から前記第1優先度の受信データの転送を中止し、前記第2優先度の受信データの前記主メモリへの転送を開始する指示を受けると、前記第1優先度の受信データを転送するために用いていた受信ディスクリプタを再度用いて、前記第2優先度の受信データを前記主メモリのデータ領域に転送する、通信装置。
【請求項2】
受信キューを備え、
1つの前記受信キューは、
ネットワークから受信した受信データの優先度を判定する優先度判定部と、
前記受信データを格納するバッファと、
前記バッファに格納されている前記受信データを主メモリに転送する転送部と、
前記転送部が第1優先度の受信データを前記主メモリに転送しているときに、前記バッファが前記第1優先度より優先度が高い第2優先度の受信データを受信すると、前記転送部に前記第1優先度の受信データの転送を中止させ、前記第2優先度の受信データの前記主メモリへの転送を開始させる転送調停部と、を備え、
前記バッファは、
前記第1優先度の受信データを格納する第1バッファと、
前記第2優先度の受信データを格納する第2バッファと、を含み、
前記第1バッファは、前記第1優先度の受信データの前記主メモリへの転送が完了するまで、前記第1優先度の受信データの全体を保持し続ける、通信装置。
【請求項3】
前記転送部は、前記第1優先度の受信データの一部を前記主メモリに転送してから転送を中止し、前記第2優先度の受信データを前記主メモリへ転送した後、前記第1優先度の受信データの最初から前記主メモリに再度転送する、請求項2に記載の通信装置。
【請求項4】
前記優先度判定部は、前記受信データの送信元アドレスに基づいて前記受信データの優先度を判定する、請求項1から3のいずれか一項に記載の通信装置。
【請求項5】
前記受信データは優先度情報を含み、
前記優先度判定部は、前記優先度情報に基づいて前記受信データの優先度を判定する、請求項1から3のいずれか一項に記載の通信装置。
【請求項6】
ネットワークから受信した受信データを格納するバッファを有する受信キューを備える通信装置の制御方法であって、
前記受信データの優先度を判定する優先度判定ステップと、
前記バッファに格納されている前記受信データを、受信ディスクリプタが示す主メモリのデータ領域に転送する転送ステップと、
第1優先度の受信データを前記主メモリに転送しているときに、前記バッファが前記第1優先度より優先度が高い第2優先度の受信データを受信すると、前記第1優先度の受信データの転送を中止させ、前記第1優先度の受信データを転送するために用いていた受信ディスクリプタを再度用いて、前記第2優先度の受信データを前記主メモリのデータ領域に転送することを開始させる受信調停ステップとを含む、通信装置の制御方法。
【請求項7】
ネットワークから受信した受信データを格納するバッファを有する受信キューを備える通信装置の制御方法であって、
前記受信データの優先度を判定する優先度判定ステップと、
前記バッファに格納されている前記受信データを主メモリに転送する転送ステップと、
第1優先度の受信データを前記主メモリに転送しているときに、前記バッファが前記第1優先度より優先度が高い第2優先度の受信データを受信すると、前記第1優先度の受信データの転送を中止させ、前記第2優先度の受信データの前記主メモリへの転送を開始させる受信調停ステップと、を含み、
前記バッファは、
前記第1優先度の受信データを格納する第1バッファと、
前記第2優先度の受信データを格納する第2バッファと、を含み、
前記第1バッファには、前記第1優先度の受信データの前記主メモリへの転送が完了するまで、前記第1優先度の受信データの全体を保持し続けさせる、通信装置の制御方法。
【請求項8】
請求項1または2に記載の通信装置として機能する集積回路であって、
前記優先度判定部と、前記バッファと、前記転送部と、前記転送調停部と、として機能する、ハードウェアの論理回路が形成されていることを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、処理順を優先度順にする通信装置に関する。
【背景技術】
【0002】
従来、産業用制御装置に用いられる通信手段は多数あり、EtherCAT(登録商標)などが多く用いられてきている。データ容量の増加またはリアルタイム性の向上の為に、Gigabpsに対応したEtherCAT Gへの対応または、Time Sensitive Network(以下、TSN)への対応が求められている。更に、一定周期での制御データの通信と、不定期での情報データの通信とが混在した通信規格が求められている。
【0003】
制御データは低遅延、小ジッターである必要があり、大容量の情報データよりも、制御データは高優先に通信を行う必要がある。この通信を実現するため、受信データの処理順を、入れ替える処理が従来技術として知られている。
【0004】
特許文献1に、受信データ内のフィールド情報に基づき、受信データを複数あるデータバッファに振り分ける技術が開示されている。また、特許文献2に、パケットを分析し、遅延を許容可能なものかどうかでパケットを振り分けることで、優先度を考慮したパケット処理装置が開示されている。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2007-243382号公報
【文献】特開2016-046669号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上述のような従来技術は、開始された低優先度のデータの受信処理によって、高優先度のデータの受信処理が遅延する課題がある。産業用制御装置のように、リアルタイム性が必要なシステムでは、軽微な遅延またはタイミングのずれであっても無い方が好ましい。
【0007】
本発明の一様態は、優先度順に受信データの転送順を調停でき、かつ高優先度の受信データに関しては、低遅延の転送処理を可能にすることを目的とする。
【課題を解決するための手段】
【0008】
本発明の一様態に係る通信装置は、受信キューを備え、1つの前記受信キューは、ネットワークから受信した受信データの優先度を判定する優先度判定部と、前記受信データを格納するバッファと、前記バッファに格納されている前記受信データを主メモリに転送する転送部と、前記転送部が第1優先度の受信データを前記主メモリに転送しているときに、前記バッファが前記第1優先度より優先度が高い第2優先度の受信データを受信すると、前記転送部に前記第1優先度の受信データの転送を中止させ、前記第2優先度の受信データの前記主メモリへの転送を開始させる転送調停部と、を備える。
【0009】
上記の構成によれば、優先度順に受信データの転送順を調停でき、かつ高優先度の受信データに関しては、低遅延でタイミングのばらつきがないリアルタイムな転送処理が可能である。
【0010】
前記バッファは、前記第1優先度の受信データを格納する第1バッファと、前記第2優先度の受信データを格納する第2バッファとを含んでもよい。
【0011】
上記の構成によれば、優先度毎にバッファを複数用意することができ、ハードウェアの構成が容易になる。
【0012】
前記転送部は、前記主メモリの受信ディスクリプタ領域から受信ディスクリプタを取得し、前記受信ディスクリプタが示す前記主メモリのデータ領域に前記受信データを転送するものであり、前記転送部は、前記転送調停部から前記第1優先度の受信データの転送を中止し、前記第2優先度の受信データの前記主メモリへの転送を開始する指示を受けると、前記第1優先度の受信データを転送するために用いていた受信ディスクリプタを再度用いて、前記第2優先度の受信データを前記主メモリのデータ領域に転送してもよい。
【0013】
上記の構成によれば、受信ディスクリプタを再利用することができ、OS(Operating System)は、転送中止に応じた処理を行う必要が無い。それゆえ、OSによるメモリ管理が容易になる。
【0014】
前記第1バッファは、前記第1優先度の受信データの前記主メモリへの転送が完了するまで、前記第1優先度の受信データの全体を保持し続けてもよい。
【0015】
上記の構成によれば、高優先度の受信データに割り込まれた、低優先度の受信データの再転送を、データの途中から再送信するのではなく、データの先頭から再送信でき、データの齟齬の防止・システムの容易化ができる。
【0016】
前記優先度判定部は、前記受信データの送信元アドレスに基づいて前記受信データの優先度を判定してもよい。
【0017】
前記受信データは優先度情報を含み、前記優先度判定部は、前記優先度情報に基づいて前記受信データの優先度を判定してもよい。
【0018】
上記の構成によれば、送信元アドレスによらず、送信元が能動的に優先度を設定することができる。
【0019】
本発明の一様態に係る通信装置の制御方法は、ネットワークから受信した受信データを格納するバッファを有する受信キューを備える通信装置の制御方法であって、前記受信データの優先度を判定する優先度判定ステップと、前記バッファに格納されている前記受信データを主メモリに転送する転送ステップと、第1優先度の受信データを前記主メモリに転送しているときに、前記バッファが前記第1優先度より優先度が高い第2優先度の受信データを受信すると、前記第1優先度の受信データの転送を中止させ、前記第2優先度の受信データの前記主メモリへの転送を開始させる受信調停ステップと、を含んでいる。
【0020】
前記通信装置として機能する集積回路は、前記優先度判定部と、前記バッファと、前記転送調停部と、として機能する、ハードウェアの論理回路が形成されていてもよい。
【発明の効果】
【0021】
本発明の一様態によれば、優先度順に受信データの転送順を調停でき、かつ高優先度の受信データに関しては、低遅延の転送処理が可能である。
【図面の簡単な説明】
【0022】
図1】本発明の一実施形態に係る情報処理装置の構成要素を示すブロック図である。
図2】本発明の一実施形態に係る受信ディスクリプタと受信データのデータ構造を示す図である。
図3】通信装置の動作フローチャートである。
図4】受信データの転送のタイミングチャートを示す。
図5】本発明の一実施形態の動作例と参考例との受信データの処理順を説明するタイミングチャートである。
図6】本発明の一実施形態の動作例と参考例との受信データの処理順を説明するタイミングチャートである。
【発明を実施するための形態】
【0023】
〔実施形態1〕
§1 適用例
図1は、本実施形態の情報処理装置の構成要素を示すブロック図である。情報処理装置1は、通信装置2と、CPU(中央演算処理装置)3と、主メモリ4と、を備える。
【0024】
受信データを優先度によって並び替えて受信する場合において、ただ並び替えただけでは遅延が発生する。特にネットワークの通信速度が向上すると、通信装置2から主メモリ4への受信データの転送によって、後にネットワークから受信された受信データの転送が待たされる事態が発生し得る。
【0025】
そこで、本実施形態の通信装置2は、優先度が低い第1データを主メモリへ転送している時に、より優先度が高い第2データを受信した場合は、第1データの転送処理(受信処理)を中断し、第2データの転送処理を行う。そのため、単に優先度順に転送処理を開始する従来技術よりも、優先度の高いデータの受信で割り込んで受信することで、低遅延な処理が実現できる。
【0026】
§2 構成例
〔情報処理装置の機能構成〕
図1は、本実施形態の情報処理装置の構成要素を示すブロック図である。情報処理装置1は、通信装置2と、CPU(中央演算処理装置)3と、主メモリ4と、を備える。
【0027】
通信装置2(通信コントローラ)は、送受信ポート21と、受信キュー22と、優先度記憶部23と、インタフェース24と、を備える。通信装置2は、データの受信処理を行うハードウェアである。通信装置2は、例えばネットワークインタフェースカード(NIC)であり、ASIC(Application Specific Integrated Circuit)、またはFPGA(Field-Programmable Gate Array)で構成された、論理回路が形成された集積回路である。通信装置2は、受信データに優先度をつけ通信する機能を有する。
【0028】
送受信ポート21は、実際にデータ(送信データ/受信データ)を、ネットワークを介して複数の外部装置から送受信する部位である。ここでは、ネットワークとしてEthernet(登録商標)を想定した例を説明するが、これに限らない。ネットワークは、EtherCAT、EtherCAT G、またはTSN等のネットワークであってもよい。複数のネットワークがブランチコントローラを介して送受信ポート21に接続されていてもよい。外部装置としては、複数の優先度があり、外部装置に応じて優先度は異なる。外部装置としては、センサ入力、またはバルブ制御などの低遅延で定周期の制御データを送受信すべき高優先度の外部装置と、画像処理装置などの大容量の情報データを送受信すべき遅延を許した低優先度の外部装置とがある。
【0029】
受信キュー22は、受信データを仮保存し、主メモリ4に書き込むまでのバッファとして機能する。優先度記憶部23は、複数の送信元アドレスと複数の優先度とを互いに関連付けて記憶する。インタフェース24は、CPU3と主メモリ4と通信する。
【0030】
受信キュー22は、優先度判定部221と、複数のデータバッファ(バッファ)222と、転送調停部223と、DMAC(転送部)224と、ディスクリプタバッファ225と、を有する。優先度判定部221は、受信データのヘッダに基づいて優先度を判定し、該当の優先度のデータバッファ222に受信データを格納する。データバッファ222は、受信データを保存しておき、主メモリ4に転送する際のバッファとして機能する。データバッファ222は、受信優先度が高優先度(データバッファ0)のものから低優先度(データバッファn)のものまで複数ある。転送調停部223は、データバッファ222に格納されている受信データの主メモリ4へのデータ転送の処理順を、優先度に基づいて調停する機能をもつ。DMAC224は、DMA(Direct Memory Access)方式により主メモリ4にアクセスできる。DMAC224は、ディスクリプタバッファ225から受信ディスクリプタを取得する。DMAC224は、データバッファ222に格納されたデータを、インタフェース24を介して、受信ディスクリプタに基づいて主メモリ4に転送する。ディスクリプタバッファ225は、あらかじめ主メモリ4から複数の受信ディスクリプタを取得しておく。
【0031】
CPU3は、OS(Operating System)31と、ドライバ32と、を動作させる。CPU3はソフトウェアを動作させるプロセッサ(ハードウェア)で、FWを動作させている。
【0032】
OS31上でソフトウェア(アプリケーション)が動作する。ドライバ32は、ソフトウェアとハードウェアの仲立ちをするソフトウェアである。
【0033】
主メモリ4は、受信ディスクリプタ領域41と、受信データ領域42と、を含む。受信ディスクリプタは、受信データを格納すべき主メモリ4の受信データ領域42におけるアドレスを示す情報を含む。
【0034】
主メモリ4は、CPU3が処理したまたは処理に用いるデータを保存しておく領域であり、例えば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カードなどの記憶装置である。受信ディスクリプタ領域41は、受信ディスクリプタを複数格納しておくデータ領域である。受信データ領域42は、受信データを複数格納しておくデータ領域である。
【0035】
図2は、受信ディスクリプタと受信データのデータ構造を示す図である。受信ディスクリプタ5は、バッファアドレス領域51と、受信完了フラグ領域52と、予約領域54と、を含む。バッファアドレス領域51は、受信データ6を格納すべき主メモリ4のアドレス(受信データ領域42におけるアドレス)を示す情報を含む。受信完了フラグ領域52は、受信キュー22から主メモリ4に受信データ6を転送されたか否かを示す情報を含む領域である。予約領域54は、その他通信に必要な情報および予備領域を含む。
【0036】
受信データ6はEthernet(登録商標)フレームである。受信データ6は、ヘッダ60と、IPフレーム61と、を含む。受信データ6のヘッダ60は、送信元MACアドレス領域62と、予約領域63と、を含む。受信データ6のIPフレーム61は、ヘッダ64と、データ領域67と、を含む。IPフレーム61のヘッダ64は、送信元IPアドレス領域65と予約領域66とを含む。送信元MACアドレス領域62は、送信元の外部装置のMACアドレスを含む領域である。送信元IPアドレス領域65は、送信元の外部装置のIPアドレスを含む領域である。予約領域63、66は、その他通信に必要な情報および予備領域を含む。送信元MACアドレス領域62と送信元IPアドレス領域65とのいずれか一方でも設定されていれば受信は成立するプロトコルを採用している。
【0037】
§3 動作例
CPU3は、通信装置2のインタフェース24を介して、予め優先度記憶部23に複数の送信元アドレスと複数の優先度とを互いに関連付けて設定する。送信元アドレスとしては、MACアドレス、IPアドレス、および/またはその他ネットワーク独自のアドレスでもよい。また、宛先アドレスがIPアドレスの場合、IPv6に対応していてもよい。
【0038】
送信元と優先度との関係は、上位のコンピュータでユーザが任意に設定したものを、CPU3が主メモリ4に保存しておく。送信元と優先度との関係は、通信装置2の初期化時に主メモリ4から通信装置2に読み込まれる。
【0039】
ドライバ32は、予め主メモリ4の受信ディスクリプタ領域41に受信ディスクリプタを複数用意する。
【0040】
通信装置2による受信処理に伴い、主メモリ4の受信ディスクリプタ5は消費される。1つの受信データ6を主メモリ4に書き込むために、1つの受信ディスクリプタ5が使用される。
【0041】
図3は、通信装置の動作フローチャートである。受信キュー22は、インタフェース24を介して、主メモリ4の受信ディスクリプタ領域41から、予め受信ディスクリプタ5を取得する。この時、予め複数の受信ディスクリプタ5を取得してもよい。受信キュー22は、取得した受信ディスクリプタ5を、ディスクリプタバッファ225に格納しておく。
【0042】
送受信ポート21がネットワークから受信データ6(パケット)を受信すると、送受信ポート21は受信データ6を受信キュー22に出力する。受信キュー22の優先度判定部221は、受信データ6の送信元MACアドレス領域62および/または送信元IPアドレス領域65から、送信元MACアドレスおよび/または送信元IPアドレスを取得する。優先度判定部221は、優先度記憶部23から送信元アドレス(送信元MACアドレスおよび/または送信元IPアドレス)と優先度との関係を示す情報を取得し、該送信元アドレスから受信された受信データ6の優先度を判定する(S21)。
【0043】
優先度判定部221は、判定した優先度に対応するデータバッファ222に、該受信データ6を格納する(振り分ける)(S22)。データバッファ222は先入れ先出し構造のデータバッファであり、末尾にデータを格納し、先頭からデータを取り出すものとする。また、データバッファ222は、主メモリ4まで受信データ6を転送完了するまでは、途中までデータを取り出していても、データを消さずに受信データ全体を保持する機能を持つ。
【0044】
例えば、該データバッファ222の一例としては、n個のデータを保持できるリングバッファが挙げられる。該リングバッファでは、参照インデックスとして、HEADとTAILとを有する。HEADは現在転送中または次に転送するデータの先頭のアドレスを示し、TAILは未転送のデータの末尾のアドレスを示す。受信データ6がデータバッファ222に入力されると、受信データ6のデータ長さに応じてTAILのアドレスが加算される。受信データ6がデータバッファ222から読み出されると、読み出された分に応じてHEADのアドレスが加算される。転送が進み、HEADとTAILが同じインデックスを示す場合、そのデータバッファ222は空になり、転送が完了したものといえる。また、転送よりも受信が早く、未転送データが増えて、TAILがHEADに追いつく(=HEAD-1)と、リングバッファが満杯になり、リングバッファに空きができるまで、受信処理を中断する。
【0045】
転送調停部223は、受信データ6を格納している1つ以上のデータバッファ222のうち、最も優先度の高いデータバッファ222から受信データ6を読み出す。転送調停部223は、受信データ6をDMAC224に出力し、DMAC224にデータ転送を指示する。DMAC224は、ディスクリプタバッファ225から1つの受信ディスクリプタ5を取得する。DMAC224は、受信ディスクリプタ5に基づき、主メモリ4に最も優先度の高い受信データ6の転送を開始する(S23)。これにより、DMAC224は、受信ディスクリプタ5が示す主メモリ4の受信データ領域42のアドレスに受信データ6を書き込む。この時、転送調停部223は、データバッファが空でない、最も優先度が高いデータバッファの受信データ6の転送をDMAC224にさせる。なお、データバッファ222は、転送を開始するとき、転送前のHEADの値を保存しておく。データバッファ222は、さらに受信データ6が入力され、TAILが増加し、保存したHEADにTAILが追いつくと、リングバッファが満杯になり、リングバッファに空きができるまで、受信処理を中断する。これにより、データバッファ222は、受信データ6の主メモリ4への転送が完了するまで、受信データ6の全体を保持し続ける。
【0046】
転送調停部223は、主メモリ4へのデータ転送中も、転送元以外のデータバッファが受信データ6を受信したか否かを監視する(S24)。転送中の受信データ6を第1データとする。
【0047】
第1データの転送中に、転送元以外のデータバッファが他の受信データ6を受信しなかった場合(S24でNo)、第1データの転送が完了する。転送完了後、DMAC224は、受信データ6が転送されたことを示す情報(転送完了フラグ)を受信ディスクリプタ領域41に書き込む(S27)。
【0048】
第1データの転送中に、転送元以外のデータバッファが他の受信データ6(第2データ)を受信した場合(S24でYes)、転送調停部223は、第2データの方が第1データよりも優先度が高いか否かを判定する(S25)。
【0049】
転送中の第1データの優先度より第2データの優先度が高くない場合(S25でNo)、転送調停部223は、DMAC224に第1データの転送を続けさせる。第1データの転送が完了すると、処理はS27へ進む。
【0050】
転送中の第1データの優先度より第2データの優先度が高い場合(S25でYes)、転送調停部223は、ただちにDMAC224およびデータバッファ222に第1データの転送を中止させる。第1データを格納していたデータバッファ222は、転送前のHEADの値をHEADに上書きする。これにより、既に読み出して転送した分を含めて第1データ全体がデータバッファ222に復元される(S26)。それゆえ、後で第1データ全体を再度読み出すことが可能となる。また、転送調停部223は、DMAC224に最も優先度の高い第2データの主メモリ4への転送を開始させる(S23)。このとき、転送調停部223から第2データの転送開始の指示を受けたDMAC224は、第1データの転送に用いた受信ディスクリプタを再利用する。DMAC224は、第1データの転送に用いた受信ディスクリプタを再度用いて、第2データを主メモリ4の受信データ領域42に転送する。再利用された受信ディスクリプタは、同じ受信データ領域42のアドレスを指しているので、途中まで受信データ領域42に書き込まれた第1データは、第2データによって上書きされる。
【0051】
第2データの転送完了後、DMAC224は、別の受信ディスクリプタ5をディスクリプタバッファ225から取得し、別の受信ディスクリプタ5を用いて次に優先度の高い受信データ6(第1データ)の転送を行う。受信ディスクリプタ5を再利用するため、OS31は転送順が変更されたことを考慮する必要がなく、メモリ管理の負荷が小さくて済む。
【0052】
このようにして、通信装置2は、優先度がより高い受信データ6を受信すると、優先度が低い受信データ6の転送を中止し、優先度がより高い受信データ6の転送を開始する。
【0053】
図4は、受信データの転送のタイミングチャートを示す。ネットワークを介して、通信装置2に、受信データとして、中優先度データ81a、低優先度データ82a、および高優先度データ83aがこの順に入力される場合を考える。ここでは、通信装置2から主メモリ4への転送速度より、ネットワークから通信装置2への通信速度が速いとする。そのため、受信した中優先度データ81a、低優先度データ82a、および高優先度データ83aを主メモリ4へ転送に必要な時間は、それぞれ中優先度データ81b、低優先度データ82b、および高優先度データ83bに示すように長くなる。中優先度データ81b、低優先度データ82b、および高優先度データ83bは互いに重なるよう図示しているが、実際は1つずつ転送される。
【0054】
まず、通信装置2が中優先度データ81aを受信すると、通信装置2は、符号81cに示すように中優先度データの主メモリ4への転送を開始する。通信装置2は、中優先度データ81cの転送中に、低優先度データ82aを受信するが、中優先度データ81cの転送を継続する。
【0055】
時刻t1で、通信装置2は、中優先度データ81cの転送中に、高優先度データ83aを受信する。高優先度データ83aは、転送中の中優先度データ81cより優先度が高い。そのため、通信装置2は、中優先度データ81cの転送を中止(キャンセル)する。そして通信装置2は、符号83cに示すように高優先度データの主メモリ4への転送を開始する。
【0056】
時刻t2で、通信装置2は、高優先度データ83cの転送を完了する。通信装置2は、既に受信された中優先度データ81a、および低優先度データ82aのうち、より優先度の高い中優先度データの主メモリ4への転送を開始する(符号81d)。このように、通信装置2は、一旦転送が中止された中優先度データを、データの最初から再度転送する。
【0057】
時刻t3で、通信装置2は、中優先度データ81dの転送を完了する。通信装置2は、既に受信された低優先度データ82aの主メモリ4への転送を開始する(符号82c)。
【0058】
このように、通信装置2によれば、3つ以上の異なる優先度の受信データ6を受信した場合でも、より優先度が高い受信データの主メモリ4への転送を優先することができる。低い優先度の受信データ(低優先度データ82a、中優先度データ81a)のために、より高い優先度の受信データ(高優先度データ83a)の転送が待たされることを回避することができる。それゆえ、通信装置2は、制御データ等の定周期で受信すべき受信データを、迅速に処理することができ、リアルタイム性を向上させることができる。
【0059】
図5は、実施形態の動作例1と参考例1との受信データの処理順を説明するタイミングチャートである。ここでは、通信装置は、受信と同時に主メモリへのデータ転送を行うとする。優先度が2段階でのモデルケースであり、通信装置2は低優先度データ71a、および高優先度データ72aを順に受信したとする。高優先度データ72aに関しては、低優先度データ71aの主メモリ4への転送処理完了前に受信したものとする。
【0060】
(参考例1)
参考例1の通信装置は、受信済の受信データの転送順を調停するものの、低優先度の受信データの転送を中断してまで高優先度の受信データ転送を開始しない。
【0061】
低優先度データ71aを受信すると同時に(データバッファに格納開始するとすぐに)、通信装置は低優先度データ71bの転送を開始する。転送中に、通信装置は高優先度データ72aを受信する。しかしながら、主メモリへの転送が低優先度データ71bによって占有されているため、通信装置は高優先度データ72aを即時に転送できない。低優先度データ71bの転送完了後、通信装置は高優先度データ72aの主メモリへの転送を開始する(符号72b)。そのため、高優先度データ72aを受信してから、高優先度データ72bの転送開始までに遅延が発生する。
【0062】
(動作例1)
動作例1の通信装置2は、低優先度データ71aを受信すると同時に(データバッファに格納開始するとすぐに)、通信装置2は低優先度データ71cの転送を開始する。転送中に、通信装置2は高優先度データ72aを受信する。通信装置2は、高優先度データ72aを受信すると同時に(データバッファに格納開始するとすぐに)、低優先度データ71cの転送を中止(破棄)し、高優先度データ72aの主メモリ4への転送を開始する(符号72c)。通信装置2は、高優先度データ72cの転送が完了すると、低優先度データの最初から再度転送する(符号71d)。
【0063】
§4 作用・効果
以上のとおり、本実施形態1に係る情報処理装置1は、通信装置2が受信データ6(パケット)を受信後、パケットの送信元アドレスから優先度を判定し、該当する優先度のデータバッファ222に受信データ6を振り分ける。その後、転送調停部223により、転送順を制御され、主メモリ4に受信データ6を転送する。この時、転送中の受信データ6よりも優先度が高いデータバッファ222に受信データ6が振り分けられた場合、転送を中断し、直ちに該高優先度の受信データ6の転送を開始する。そのため、本実施形態1に係る情報処理装置1では、例えば優先度の異なる複数の受信キューによって優先度振分を行って受信処理する従来技術よりも、高優先度の受信データがデータバッファ上に滞留する時間が短く、低遅延な処理が実現できる。
【0064】
また、複数の優先度に応じて複数の受信キューを設ける従来技術では、複数の受信キューに対応して主メモリに複数の受信ディスクリプタ領域および複数の受信データ領域を設ける必要が生じる。そのため、OAまたはドライバによるメモリ管理が複雑になり、CPUの処理負荷と遅延が増加する。
【0065】
本実施形態の通信装置2は、1つの受信キュー22の中で、複数の優先度の受信データの転送順の調停を行う。それゆえ、受信キューおよび受信ディスクリプタ領域の増加を抑制し、CPU3の処理負荷の低減および遅延の低減を実現することができる。
【0066】
図5を参照されたい。参考例1に対して、本実施形態の動作例1の場合、低優先度データ71aの受信とほぼ同時に、低優先度データ71cの転送を開始する。その後、低優先度データ71cの転送中に、高優先度データ72aを受信する。低優先度データ71cの転送を中断し、転送済みのデータを破棄し、直ちに高優先度データ72cの転送を開始する。ここで、データを破棄するとは、主メモリ4において転送済みのデータ(受信データの一部)を保持せず高優先度データ72cで上書きすることを意味する。高優先度データ72cの転送完了後、先ほど破棄した低優先度データ71aを主メモリに再度転送を行う。そのため、処理順が前後し高優先度データが遅延なく転送でき、リアルタイム性が向上する。
【0067】
〔実施形態2〕
本発明の他の実施形態について、以下に説明する。なお、説明の便宜上、上記実施形態にて説明した部材と同じ機能を有する部材については、同じ符号を付記し、その説明を繰り返さない。
【0068】
実施形態1では、受信と同時に主メモリへのデータ転送を行うことと規定したが、転送タイミングはこの限りではなく、受信完了時に(1つの受信データ6全体のデータバッファ222への格納が完了してから)主メモリ4への転送を開始してもよい。
【0069】
図6は、実施形態2の動作例2と参考例2との受信データの処理順を説明するタイミングチャートである。優先度が2段階でのモデルケースであり、通信装置2は低優先度データ71a、および高優先度データ72aを順に受信したとする。高優先度データ72aに関しては、低優先度データ71aの主メモリへの転送処理完了前に受信が完了(データバッファ222への格納が完了)したものとする。
【0070】
参考例2では、通信装置は、低優先度データ71a全体を受信完了すると同時に、主メモリへの低優先度データ71eの転送を開始する。低優先度データ71eの転送中に、高優先度データ72a全体の受信を完了(データバッファへの格納が完了)するが、低優先度データ71eの転送に占有されているため、高優先度データ72aの転送を開始できない。低優先度データ71eの転送完了後、主メモリへの高優先度データ72eの転送を行う。そのため、高優先度データ72eの転送は遅延する。
【0071】
本実施形態の動作例2では、通信装置2は、低優先度データ71a全体を受信完了すると同時に、主メモリ4への低優先度データ71fの転送を開始する。通信装置2は、低優先度データ71fの転送中に、高優先度データ72a全体の受信を完了(データバッファへの格納が完了)する。転送中の低優先度データの優先度よりも、受信完了した高優先度データの優先度が高いため、通信装置2は、低優先度データの転送を直ちに中断し、転送済みのデータを破棄する。その後、通信装置2は、高優先度データ72aの主メモリ4への転送を開始する(符号72f)。高優先度データ72fの転送完了後、再度、中断した低優先度データ71g全体の転送を行う。そのため、処理順が前後し高優先度データが遅延なく転送できる。
【0072】
また、受信完了後に転送を行うため、本実施形態では、受信中にノイズなどでデータ欠損があった場合でも、通信装置2においてデータ欠損を確認・補充後に転送を行える利点がある。
【0073】
〔変形例1〕
実施形態1、2では、優先度判定部221は、受信データの送信元MACアドレス領域62または送信元IPアドレス領域65または予約領域63,66に記載の送信元アドレスに基づき、優先度の判定を行っているが、この限りではない。外部装置において、受信データ6の予約領域63,66に該受信データ6の優先度を示す優先度情報を記載してもよい。この場合、優先度判定部221は、該受信データ6に含まれる優先度情報に基づいて優先度を判定する。この場合、優先度記憶部23を省略することができる。これにより、同じ外部装置からの複数の受信データ6の中でも異なる優先度を設定することができる。
【0074】
〔変形例2〕
実施形態1、2では、1つの受信キュー22は、複数の優先度に応じて複数のデータバッファ222を有しているが、この限りではない。1つの受信キューは、1つのデータバッファを有し、複数の優先度の受信データを1つのデータバッファに格納してもよい。この場合、データバッファは先入れ先出しではなく、転送調停部は、データバッファから優先度に応じて任意の順で受信データを取り出し可能である。
【0075】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【符号の説明】
【0076】
1 情報処理装置
2 通信装置
3 CPU
4 主メモリ
5 受信ディスクリプタ
6 受信データ
21 送受信ポート
22 受信キュー
23 優先度記憶部
24 インタフェース
31 OS
32 ドライバ
41 受信ディスクリプタ領域
42 受信データ領域
51 バッファアドレス領域
52 受信完了フラグ領域
54、63、66 予約領域
60、64 ヘッダ
61 IPフレーム
62 送信元MACアドレス領域
65 送信元IPアドレス領域
67 データ領域
71a、71b、71c、71e、71f、71g 低優先度データ
72a、72b、72c、72e、72f 高優先度データ
221 優先度判定部
222 データバッファ(第1バッファ、第2バッファ)
223 転送調停部
224 DMAC(転送部)
225 ディスクリプタバッファ(転送部)
図1
図2
図3
図4
図5
図6