JP2015136071A - 通信装置、制御方法及びプログラム - Google Patents

通信装置、制御方法及びプログラム Download PDF

Info

Publication number
JP2015136071A
JP2015136071A JP2014007269A JP2014007269A JP2015136071A JP 2015136071 A JP2015136071 A JP 2015136071A JP 2014007269 A JP2014007269 A JP 2014007269A JP 2014007269 A JP2014007269 A JP 2014007269A JP 2015136071 A JP2015136071 A JP 2015136071A
Authority
JP
Japan
Prior art keywords
processing
communication
supply
resources
power
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2014007269A
Other languages
English (en)
Other versions
JP6291261B2 (ja
Inventor
昌敬 深田
Masataka Fukada
昌敬 深田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2014007269A priority Critical patent/JP6291261B2/ja
Publication of JP2015136071A publication Critical patent/JP2015136071A/ja
Application granted granted Critical
Publication of JP6291261B2 publication Critical patent/JP6291261B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】 実際の通信の状況に応じた、通信処理のためのリソースの細かい電源供給及び停止制御を行うこと。
【解決手段】 通信装置は、通信プロトコルの処理のために用いられ、個別に電源供給とその停止とを制御可能な複数のブロックをそれぞれが有する1つ以上のリソースを含み、通信に関する複数の識別子のそれぞれに対して、1つ以上のリソースのそれぞれについての複数のブロックのうちのいずれかのブロックを対応させて管理する。通信装置は、通信プロトコルの処理が開始されると、処理の単位ごとに、複数の識別子のうちのいずれかの識別子を割り当てる。そして、通信装置は、処理の単位ごとに、処理の開始と終了とに応じて、その処理の単位に割り当てられた識別子に対応する1つ以上のリソースのそれぞれについてのブロックへの、電源の供給とその供給の停止またはクロックの供給とその供給の停止を、一括して制御する。
【選択図】 図2

Description

本発明は通信装置、制御方法及びプログラムに関する。
近年、汎用コンピュータ(PC)のみならず、コンピュータ組込機器においてもネットワークプロトコル処理を高速に実行することが要求される。しかし、ソフトウェア処理によるギガビットイーサネット(登録商標)の充分な処理速度は、コンピュータ組込機器が搭載するプロセッサの能力を遥かに超える。そこで、TOE(TCP/IP Offload Engine)といったプロトコル処理に特化した補助的デバイスを付加して、プロセッサに頼らず、広帯域なネットワーク通信を実現することが一般化している。
一方で、TOEなどのプロトコル処理装置では、複数の通信装置との通信又は1つの通信相手との間の複数のコネクションによる通信を同時に実現するために、パケットを一時的に蓄積するための大容量のメモリリソースが用意されることとなる。これらのリソースは、プロトコル処理装置が同時に通信可能な最大数の通信を行っているか、通信が行われていない又は僅かな通信のみが行われているかによらず、すべてのリソースに電力を供給するため、消費電力面で効率的ではない。
これに対して、特許文献1は、受信したパケットを一時的に蓄積するパケットバッファの有効バッファ数を受信したパケット量に応じて制御し、トラフィックが少ない時は一部のパケットバッファの電源供給を停止して消費電力を低減する手法を提案している。
特開2011−061443号公報
TOEでは、パケットを一時的に蓄積するメモリリソースだけでなく、プロトコル処理の高速化を図るため、さまざまなハードウェア(HW)リソース及びオンチップメモリリソースが用いられる。これらのリソースは、同時通信可能な最大数に対応する数だけ保持されるべきであるものが多く、パケットを蓄積するためのメモリリソースと同様に、少量の通信の際においてもHW全体に電源が供給されることにより、多くの電力を消費してしまう。
特許文献1に示す方法は、メモリリソースの制御のみを対象としており、TOEのような、様々のHWリソース及びオンチップメモリを必要とする構成では、すべての電源を制御することができないという課題があった。また、特許文献1に記載の手法は、受信したパケットの量により予測的に電源の供給を行うものであり、実際の通信で要求されるリソースの電源を細かく制御できないという課題もあった。
本発明は上記課題に鑑みなされたものであり、実際の通信の状況に応じた、通信処理のためのリソースの細かい電源供給及び停止制御を行うことを目的とする。
上記目的を達成するため、本発明による通信装置は、通信プロトコルの処理のために用いられ、個別に電源供給とその停止とを制御可能な複数のブロックをそれぞれが有する1つ以上のリソースと、通信に関する複数の識別子のそれぞれに対して、前記1つ以上のリソースのそれぞれについての前記複数のブロックのうちのいずれかのブロックを対応させて管理する管理手段と、前記通信プロトコルの処理が開始されると、処理の単位ごとに、前記複数の識別子のうちのいずれかの識別子を割り当てる割当手段と、前記処理の単位ごとに、処理の開始と終了とに応じて、当該処理の単位に割り当てられた識別子に対応する前記1つ以上のリソースのそれぞれについてのブロックへの、電源の供給とその供給の停止またはクロックの供給とその供給の停止を、一括して制御する制御手段と、を有する。
本発明によれば、実際の通信の状況に応じた、通信処理のためのリソースの細かい電源供給及び停止制御を行うことができる。
通信装置の構成例を示す図。 TOEサブシステム構成を示す図。 サブプロセッサの役割を説明する図。 TCPソケット作成処理の流れを示すフローチャート。 TCPソケットID取得処理の流れを示すフローチャート。 TCPソケットID初期化処理の流れを示すフローチャート。 TCPソケット解放処理の流れを示すフローチャート。 TCPソケットID返却処理の流れを示すフローチャート。 新規のIPリアセンブル開始処理の流れを示すフローチャート。 IPリアセンブルID取得処理の流れを示すフローチャート。 IPリアセンブルID初期化処理の流れを示すフローチャート。 IPリアセンブルリソース解放処理の流れを示すフローチャート。 IPリアセンブルID返却処理の流れを示すフローチャート。
以下、添付図面を参照して本発明の実施の形態を詳細に説明する。
(通信装置の構成)
図1を用いて、本実施形態に係る通信装置の構成例について説明する。図1の通信装置において、主プロセッサ101は、システムバス102を介して、後述する各構成に接続されている。なお、システムバス102は、英国ARM社が提唱するAMBA 3.0 AXI(Advanced eXtensible Interface)仕様に代表されるクロスバースイッチ構造のオンチップバスである。システムバス102は、通信装置に要求される送受信データの並行転送動作が可能である。なお、主プロセッサ101は、通信装置全体の制御を実行するコンピュータである。
割込制御部106は、各構成やTOEサブシステム105からの割込イベントを主プロセッサ101に伝達する。タイマ107は、ソフトウェアなどによって起動され、時間計測やタイムアウトイベントを発生させる。汎用入出力(IO)インタフェース114に接続された入力キー115は、通信装置の動作モードの設定や、IPアドレスに代表される各種通信パラメータの入力を受け付けるための機能部である。表示制御部108に接続された表示部109は、通信装置の状態、アプリケーションの状態、設定内容などを表示する。主DMA制御部112は、通信装置内のダイレクトメモリアクセス(DMA)を制御するコントローラ(DMAC)である。
二次記憶制御部110に接続されたハードディスク(HD)装置111は、通信装置の機能を実現するソフトウェアとその関連データ、各サブシステムのサブプロセッサが実行するファームウェアとその関連データなどを格納する。HD装置111は、さらに、通信装置の動作履歴や通信履歴などの履歴情報を格納する。なお、通信装置の機能を実現するソフトウェアには、オペレーティングシステム(OS)、通信装置の各機能を実現するアプリケーションソフトウェア、アプリケーションプロトコル、関連ハードウェアを制御するためのデバイスドライバなどが含まれる。
メモリ制御部117に接続されたFlashメモリ118は、書き換え可能な不揮発性メモリであり、SRAM119は、書き換え可能な揮発性メモリである。Flashメモリ118及びSRAM119の少なくともいずれかに、通信装置の起動時に動作するブートプログラム、通信装置の初期状態の設定に使用されるパラメータなどが格納される。Flashメモリ118及びSRAM119の少なくともいずれかは、さらに、通信装置の起動時に各構成(ハードウェア)を制御するためのデバイスドライバ、各構成の起動時の設定パラメータなどを格納する。主プロセッサ101は、Flashメモリ118及びSRAM119の少なくともいずれかに格納されたブートプログラムを実行する。
主メモリ制御部103に接続された主メモリ104は、例えば、主プロセッサ101のワークメモリとして機能する。例えば、主プロセッサ101は、通信装置の各ハードウエアとサブシステムとを初期化した後、HD装置111に格納されているソフトウェアを主メモリ104にロードしてOSを起動する。また、主プロセッサ101は、サブシステムの初期化時にTOEサブシステム105に内蔵されているサブプロセッサA〜E(201〜205)が実行する各ファームウエアを主メモリ104上に展開して、各サブプロセッサを起動する。各サブプロセッサ201〜205は主メモリ104上に展開された各ファームウエアを、各サブプロセッサに内蔵する命令キャッシュメモリにロードして、ファームウエアプログラムを実行する。主メモリ104は複数のブロックに分割されており、主メモリ制御部103は、このブロックごとに電源の供給とその停止とを指示することができる。
TOEサブシステム105は、通信装置が有線ネットワーク120に接続するための機能部である。TOEサブシステム105の詳細については後述する。無線LANサブシステム113は、通信装置がIEEE802.11a/b/g/n規格に準拠する無線LANネットワークに接続するための機能部である。汎用バスインタフェース116は、通信装置をUSBやIEEE1394などのシリアルバスに接続する。
(TOEサブシステムの構成)
続いて、図2を用いて、本実施形態に係るTOEサブシステム105の構成例について詳細に説明する。
バスブリッジ206は、TOEサブシステム105の内部バスであるサブシステムバス208とシステムバス102とを接続する。なお、サブシステムバス208は、例えばクロスバースイッチ接続である。TOEサブシステム105は、5つのサブプロセッサ201〜205を有し、これらのサブプロセッサによるマルチプロセッサ処理により、主システムからTCP/IPプロトコル処理をオフロードし、このプロトコル処理を高速に実行する。共有メモリ215は、サブプロセッサ201〜205間の通信と情報共有のためのメモリである。通信タイマ216は、TCP/IPプロトコル処理に必要な時間計測およびタイムアウトイベントを発生させる。
図3を用いて、本実施形態に係るTOEサブシステム105のサブプロセッサ201〜205の役割について説明する。TCP/IPプロトコル処理は、アプリケーション層301、ソケットAPI302、トランスポート層(TCP/UDP層)303、インターネット層(IP層)304、MACドライバ305、MAC層306、PHY層307の階層構造を有する。ここで、TOEサブシステム105は、図3の310で示される部分を処理する機能を有する。すなわち、TOEサブシステム105は、TCP/UDP層303、IP層304、MACドライバ305の(処理)機能と、ソケットAPI302の一部の機能とを有する。なお、TCP/UDP層303はTCPプロトコルとUDPプロトコルとを処理し、IP層304はIPプロトコルを処理する。また、MACドライバ305はMAC層306との間で通信データと通信情報を交換する機能であり、ソケットAPI302はアプリケーション通信のAPIである。TOEサブシステム105は、これら機能を各サブプロセッサに分散して処理を行う。
例えば、ソケットAPI302の一部の処理をサブプロセッサ201に割り当てる。そして、TCPプロトコルとUDPプロトコルとの処理のうち受信動作315に関する処理をサブプロセッサ202に割り当て、送信動作316に関する処理をサブプロセッサ203に割り当てる。さらに、MACドライバ305とIPプロトコルとの処理のうち、受信動作315に関する処理をサブプロセッサ204に割り当て、送信動作316に関する処理をサブプロセッサ205に割り当てる。このように処理を分散することにより、一連のプロトコル処理を3つのパイプラインステージ311〜313に分割し、パイプライン動作を行うことが可能となる。また、送信動作316と受信動作315とを分けることで、それぞれの機能を担当するサブプロセッサ同士を並列的に動作させることが可能となる。
本実施形態では、各サブプロセッサ間の処理データの伝達と制御情報の共有は共有メモリ215を介して行われる。例えば、TCPは転送データの到達保証を行う観点から、受信側から送信側に対して、確認応答と称する到達確認情報をコネクション間で伝達する。この確認応答を行うには、サブプロセッサ202とサブプロセッサ203との間で確認応答の伝達(314)がされることとなる。TOEサブシステム105では、このようなTCPの制御情報の伝達を、共有メモリ215を介して行う。なお、サブプロセッサ間における到達確認情報の伝達と制御情報の共有は主メモリ104を用いて行ってもよい。なお、TOEサブシステム105では、TCP処理に必要となる制御情報は、後述のTCBコントローラ218を用いて共有する。
TOEサブシステム105は、有線ネットワーク120に接続するためのハードウェアとしてPHY214とMAC(Media Access Controller)213とを備える。PHY214は、OSI参照モデルの物理層(第1層)のプロトコル処理と電気信号を扱う。MAC213は、OSI参照モデルのデータリンク層(第2層)の下位副層に相当するMAC層のプロトコルを処理する。
図2に戻り、データパス制御部212は、受信パケットデータと送信パケットデータとを、例えば、主メモリ104または共有メモリ215とMAC213との間でDMA転送する機能を有する。データパス制御部212は、転送処理中にパケットデータのチェックサム演算を行う。検索装置207は、連想メモリを有し、プロトコル処理の様々な管理情報の格納と検索処理を行う。
TOEサブシステム105は、さらに、TCPによる通信処理のための制御情報を格納するためのメモリをコントロールするTCBコントローラ218を有する。また、TOEサブシステム105は、さらに、IPのリアセンブル処理において受信したパケット(フラグメント)の情報を管理するビットマップコントローラ219と、同時のプロトコル処理数を管理するIDマネージャ217とを有する。なお、IDマネージャ217は、同時に並行して存在するリアセンブルされるデータの数とTCPソケット数との少なくともいずれかを、処理の単位として識別子(ID)によって管理する。また、IDマネージャ217は、電源制御部220を有し、通信プロトコルの処理のために用いられ、個別に電源供給とその停止とを制御可能な複数のブロックをそれぞれが有するハードウェアリソースに対して、各ブロックの電源供給及び停止の制御を行う。
なお、TOEサブシステム105は、暗号通信プロトコル処理を実行する。暗号通信プロトコルは、例えば、IPsec(Security Architecture for Internet Protocol)である。なお、暗号通信プロトコルは、例えば、SSL(Secure Socket Layer)、TLS(Transport Layer Security)であってもよい。これらの暗号通信プロトコル処理のため、TOEサブシステム105は、鍵管理部209、乱数発生器210、暗号器211を有する。鍵管理部209は、暗号通信プロトコル処理のために生成した暗号鍵、乱数、素数を機密に保持する。乱数発生器210は、暗号処理に必要となる乱数値を生成する。暗号器211は、例えばAES(Advanced Encryption Standard)暗号器である。また、暗号器211は、さらに、認証やディジタル署名などに使われるSHA−1(Secure Hash Algorithm 1)、RFC2121として標準化されているMD5(Message Digest 5)などのハッシュ関数器を含む。
TOEサブシステム105は、TCPソケットごとの、通信タイマ216、TCBコントローラ218の管理するメモリ領域、検索装置207の検索エントリ、主メモリ104のソケットバッファといったリソースを用意する。各リソースは、同時にコネクションの確立が可能なTCPソケットの最大数分に対応する、電源の供給及び停止制御が可能な複数のブロックを有する。そして、各ブロックは、IDマネージャ217で管理するTCPソケットの識別子(ID)に関連付けて管理される。すなわち、IDごとに、各ブロックに対する電源の供給及びその停止を制御することが可能な構成となっている。電源制御部220は、IDに対応するTCPソケットによる通信の開始または終了に応じて、IDに対応する、1つ以上のリソースのそれぞれのブロックに対して、一括して電源の供給または電源の供給の停止を実行するような制御を行う。
また、TOEサブシステム105は、1つのデータにリアセンブルされるフラグメントの集合ごとに、通信タイマ216、ビットマップコントローラ219、検索装置207の検索エントリ、主メモリ104のIPリアセンブルバッファ等のリソースを用意する。各リソースは、同時にIPリアセンブル処理が可能なフラグメントの集合の最大数分に対応する、電源の供給及び停止制御が可能な複数のブロックを有する。そして、各ブロックは、IDマネージャ217で管理するリアセンブルされるデータの識別子(ID)に関連づけて管理される。すなわち、IDごとに、各ブロックに対する電源の供給及びその停止を制御することが可能な構成となっている。電源制御部220は、IDに対応する1つのリアセンブルされるデータのフラグメントの集合の通信の開始または終了に応じて、各リソースのIDに対応するブロックに対して、一括して電源の供給、または電源の供給の停止を実行するような制御を行う。
なお、主メモリ104の電源制御についてはIDマネージャ217内の電源制御部220からの指示により主メモリ制御部103で行う。各ハードウェア(HW)リソースと電源制御部220とは、電源制御ポート221で接続されており、IDマネージャ217からの指示により、電源制御部220は電源制御ポートを介して各HWリソースの電源制御を行う。
本実施形態では、1つ以上のリソースのそれぞれについての複数のブロックのうちの1つが1つのIDに対応付けられ、1つのIDに対応する通信の開始及び終了に応じて、対応するブロックに対して電源の供給及びその停止をするように制御されるとした。しかしながら、このような構成でなくてもよい。すなわち、1つのブロックは複数のIDに対応付けられていてもよい。なお、1つのブロックに複数のIDが対応付けられている場合は、1つのブロックに対応する複数のIDの少なくとも1つについての通信が開始された場合に、そのブロックへの電源供給が実行されるように制御が行われる。また、この場合、そのブロックに対応する複数のIDの全てについての通信が終了したことに応じて、このブロックへの電源供給が停止されるように制御が行われる。
また、電源の供給及びその停止を制御するのに代えて、クロックの供給とその停止が実行されるように制御が行われてもよい。また、本実施形態では、プロトコル処理の種別として、TCPソケットにおけるプロトコル処理およびIPフラグメントパケットのリアセンブル処理が用いられる場合について説明するが、UDP処理等の他のプロトコル処理の種別が用いられてもよい。
(TCPソケット作成処理)
続いて、サブプロセッサ202またはサブプロセッサ203において実行される、本実施形態に係るTCPソケット作成処理の流れについて、図4及び図5を用いて説明する。この処理は、例えば、電源制御に対応する通信プロトコルの処理の単位が、1つのTCPソケットによる通信に関するものである場合の処理である。なお、以下では、サブプロセッサ202またはサブプロセッサ203を、単に「サブプロセッサ」と総称する。
まず、図4のS401において、サブプロセッサは、IDマネージャ217にTCPソケットの識別子(TCPソケットID)の取得を要求し、IDマネージャ217からTCPソケットIDを受け取る。このときの、IDマネージャ217におけるTCPソケットID取得の処理の流れについて、図5を用いて詳細に説明する。
S501において、IDマネージャ217は、現在のTCPソケットIDカウンタが最大値に達しているかを調べる。すなわち、IDマネージャ217は、現在使用しているTCPソケットの数が、同時に取り扱える最大値に既に達しているかを判定する。そして、IDマネージャ217は、TPCソケットの最大値に達していた場合はエラーを出力して(S513)、処理を終了し、最大値に達していなかった場合は、処理をS502へ進める。
S502では、IDマネージャ217は、自らが保持しているTCPソケットID値から(任意の)ID値を1つ選択する。すなわち、S502で、新たに作成されるTCPソケットへのIDの割当処理が実行される。TCPソケットID値は、FIFOを利用してID値を格納し、又はビットマップを用いて保持するなど、ID値を保持できる所定の方法で保持される。なお、IDマネージャ217は、同時に取り扱うことができるTCPソケットの最大値の数の分だけ、ID値を保持していてもよいし、それより多くのID値を保持していてもよい。
続いて、IDマネージャ217は、TCPソケットIDに対応するTCPタイマのブロックに電源が供給されているかを判定し(S503)、ブロックに電源が供給されていない場合は処理をS504へ進め、供給されている場合は処理をS505へ進める。ここで、「ブロック」は電源の供給を管理する単位であり、1つのブロックに対して個別に電源供給とその停止とを制御することができる。なお、ブロックは単一のIDに対応付けられていてもよいし、複数のIDに対応付けられていてもよい。S504では、IDマネージャ217は、TCPソケットIDに対応するTCPタイマのブロックに対する電源供給を通信タイマ216に指示し、処理をS505へ移す。
S505では、IDマネージャ217は、TCPソケットIDに対応する検索装置207のTCPソケット検索テーブルのエントリブロックに電源が供給されているかを調べる。そして、処理は、ブロックに電源が供給されていない場合はS506へ進み、供給されている場合はS507へ進む。S506では、IDマネージャ217は、TCPソケットIDに対応するTCPソケット検索テーブルの検索エントリのブロックに対する電源供給を検索装置207に指示し、処理をS507へ進める。
S507では、IDマネージャ217は、TCPソケットIDに対応するTCBコントローラ218が管理しているメモリ領域のブロックに電源が供給されているかを調べる。そして、処理は、ブロックに電源が供給されていない場合はS508へ進み、供給されている場合はS509へ進む。S508では、IDマネージャ217は、TCPソケットIDに対応するTCBコントローラ管理のメモリ領域のメモリブロックに対する電源供給をTCBコントローラ218に指示し、処理をS509へ進める。
S509では、IDマネージャ217は、TCPソケットIDに対応するTCPソケットバッファ領域の主メモリブロックに電源が供給されているか調べる。そして、処理は、主メモリブロックに電源が供給されている場合はS511へ進み、供給されていない場合はS510へ進む。S510では、IDマネージャ217は、TCPソケットIDに対応する主メモリ104のTCPソケットバッファ領域の主メモリブロックに対する電源供給を主メモリ制御部103に指示し、処理をS511へ進める。
S511では、IDマネージャ217は、S502で選択した(割当処理により割り当てられた)ID値を出力し、S512でTCPソケットIDの使用数を管理するカウンタをインクリメントして、処理を終了する。
なお、本実施形態では、上述の手順で電源の供給指示を行ったが、各ハードウェアリソースに対して電源の供給ができればどのような手順で行ってもよい。例えば、S503〜S504の処理とS505〜S506の順序は逆にされてもよいし、その他の処理についても順序が変更されてもよい。また、上述の各ブロックのうちの1つ以上について常に電源が供給されている場合は、そのブロックについて電源が供給されているかの判定及び電源供給指示の処理は省略されてもよい。
図4に戻ると、上述のようにして、TCPソケットIDが、IDマネージャ217からサブプロセッサへ受け渡される(S401)と、サブプロセッサは、S402において、S401で取得した結果を調べる。そして、ID値が取得できずエラーが出力されていた場合は、サブプロセッサは、ソケット作成失敗を出力して(S408)、処理を終了する。一方、ID値が取得できた場合は、処理はS403へ進む。
S403では、サブプロセッサは、取得したID値に対応したTCBコントローラ管理のメモリ領域をロードする指示をTCBコントローラ218に行う。そして、S404において、サブプロセッサは、TCBコントローラ218にTCPコネクションの情報を書き込み、ソケット情報の初期化を行う。続いて、サブプロセッサは、取得したTCPソケットIDに対応した通信タイマ216のTCPタイマを設定して起動する(S405)。そして、サブプロセッサは、取得したTCPソケットIDに対応した検索装置207のTCPソケット検索テーブルの検索エントリにTCPソケット検索情報を登録し(S406)、ソケット作成成功を出力して(S407)、処理を終了する。なお、これらのステップの順序等は変更されてもよい。
(TCPソケットID初期化処理)
続いて、図6を用いて、主プロセッサ101によるTCPソケットID初期化処理の流れについて説明する。なお、本実施形態では主プロセッサがTCPソケットID初期化処理を行うが、TOE内のサブプロセッサがこの処理を実行してもよい。なお、この処理は、例えば、通信装置の電源が投入された際に実行され、この処理の後に、上述の図4及び図5の処理が実行される。
主プロセッサ101は、S601において、TCPソケットIDの最大値をIDマネージャ217に設定する。この設定値はシステムごとに決定するTCPソケットの最大同時コネクション数である。その後、主プロセッサ101は、TCPソケットID値の最大数分のソケットバッファ領域を主メモリ104上に確保する(S602)。この領域は、主メモリ制御部103の制御により電源制御が可能な領域に確保される。なお、本実施形態では、主メモリ上にソケットバッファを確保する場合について説明しているが、バッファごとに電源制御可能なメモリ領域であれば、他のメモリ上にソケットバッファが確保されてもよい。
続いて、主プロセッサ101は、S602で確保したソケットバッファの位置情報をIDマネージャ217に設定する(S603)。IDマネージャ217は、この設定情報に基づいて、TCPソケットによる通信の開始または終了時(すなわち、TCPソケットIDが取得され、開放された際)の電源制御の指示を行う。主プロセッサ101は、その後、TCBコントローラ用のメモリ領域をTCBコントローラ218に設定する(S604)。TCBコントローラ218は、この設定情報に基づいて、サブプロセッサの指示により、TCPソケットIDに対応したメモリ領域のロード又はアンロードを行う。そして、主プロセッサ101は、TCPソケット検索用の検索テーブルの、検索装置207に対する設定を行う(S605)。その後、主プロセッサ101は、IDマネージャ217に対して、TCPソケットIDに関連づけられたハードウェアリソースの電源制御を開始すべき旨を示す指示を行い(S606)、処理を終了する。なお、上述の各ステップは、順序が変更されてもよいし、一部のステップが削除されてもよい。
(TCPソケット解放処理)
続いて、サブプロセッサ202またはサブプロセッサ203において実行される、本実施形態に係るTCPソケット解放処理の流れについて、図7及び図8を用いて説明する。なお、以下では、サブプロセッサ202またはサブプロセッサ203を、単に「サブプロセッサ」と総称する。
まず、あるTCPソケットによる通信が終了した場合、サブプロセッサは、図7のS701において、検索装置207のTCPソケットID値に対応した領域のエントリを削除する。そして、サブプロセッサは、TCBコントローラ218のTCPソケットID値に対応したTCPソケット情報をクリアし(S702)、TCPソケットID値に対応したTCPタイマを停止する(S703)。サブプロセッサは、さらに、S704において、TCPソケットID値をIDマネージャ217に返却して、処理を終了する。
ここで、図8を用いて、S704においてTCPソケットID値が返却された場合の、IDマネージャ217が実行するTCPソケットID返却処理について説明する。IDマネージャ217は、S801において、返却されたID値を、保持しているTCPソケットID値に追加する。すなわち、IDマネージャ217は、返却されたID値を、その後に新規に開始されるTCPソケットによる通信に対して割り当てるための候補に追加して保持しておく。
そして、IDマネージャ217は、返却されたID値に対応する各ハードウェアリソースのブロックについて、電源供給の停止を指示する。具体的には、S802においてID値に対応するTCPタイマの電源停止が通信タイマ216に対して指示され、S803において、ID値に対応するTCPソケット検索テーブルのエントリの電源停止が検索装置207に対して指示される。また、S804において、ID値に対応するTCBコントローラ用のメモリ領域の電源停止がTCBコントローラに指示され、S805において、ID値に対応する主メモリ104上のソケットバッファ領域の電源停止が主メモリ制御部103に指示される。そして、IDマネージャ217は、S806において、TCPソケットIDの使用数を管理するカウンタをデクリメントして、処理を終了する。なお、上述の各ステップについても、例えば電源停止の指示の順序が変更されてもよいし、一部のステップが削除されてもよい。
(IPリアセンブル開始処理)
続いて、サブプロセッサ204において実行される、本実施形態に係る新規のIPリアセンブルの開始処理について、図9及び図10を用いて説明する。この処理は、例えば、電源制御に対応する通信プロトコルの処理の単位が、1つのデータにリアセンブルされるフラグメントの集合の通信に関するものである場合の処理である。
まず、図9のS901において、サブプロセッサ204は、IDマネージャ217にIPリアセンブルIDの取得を要求し、IDマネージャ217からIPリアセンブルIDを受け取る。このときの、IDマネージャ217におけるIPリアセンブルID取得の処理の流れについて、図10を用いて詳細に説明する。
S1001において、IDマネージャ217は、現在のIPリアセンブルカウンタが最大値に達しているかを調べる。すなわち、IDマネージャ217は、現在並行して実行中のIPリアセンブルの数が、同時に取り扱える最大値に既に達しているかを判定する。そして、IDマネージャ217は、同時のIPリアセンブルの数が最大値に達していた場合はエラーを出力して(S1013)、処理を終了し、最大値に達していなかった場合は処理をS1002へ進める。
S1002では、IDマネージャ217は、自らが保持しているIPリアセンブルID値から(任意の)ID値を1つ選択する。すなわち、S1002で、新たに実行されるIPリアセンブルに対してIDの割当処理が実行される。IPリアセンブルID値は、TCPソケットID値と同様に、FIFOを利用してID値を格納し、又はビットマップを用いて保持するなど、ID値を保持できる所定の方法で保持される。
続いて、IDマネージャ217は、IPリアセンブルIDに対応するIPリアセンブルタイマのブロックに電源が供給されているかを判定する(S1003)。この判定の結果、処理は、ブロックに電源が供給されていない場合はS1004へ進み、供給されている場合はS1005へ進む。なお、ここでの「ブロック」も、上述のように、電源の供給を管理する単位であり、1つのブロックに対して個別に電源供給とその停止とを制御することができる。また、ブロックは単一のIDに対応付けられていてもよいし、複数のIDに対応付けられていてもよい点についても、上述の説明と同様である。S1004では、IDマネージャ217は、IPリアセンブルIDに対応するIPリアセンブルタイマのブロックの電源供給を通信タイマ216に対して指示し、処理をS1005へ移す。
S1005では、IDマネージャ217は、IPリアセンブルIDに対応する検索装置207のIPリアセンブル検索テーブルのエントリブロックに電源が供給されているかを調べる。そして、処理は、電源が供給されていない場合はS1006へ進み、供給されている場合はS1007へ進む。S1006では、IDマネージャ217は、IPリアセンブルIDに対応するIPリアセンブル検索テーブルの検索エントリブロックの電源供給を検索装置207に対して指示し、処理をS1007へ進める。
S1007では、IDマネージャ217は、IPリアセンブルIDに対応するビットマップコントローラ219のビットマップテーブルのブロックに電源が供給されているかを調べる。処理は、電源が供給されていない場合はS1008へ進み、供給されている場合はS1009へ進む。S1008では、IDマネージャ217は、IPリアセンブルIDに対応するビットマップテーブルに対する電源供給を、ビットマップコントローラ219に指示し、処理をS1009へ進める。
S1009では、IDマネージャ217は、IPリアセンブルIDに対応するIPリアセンブルバッファ領域の主メモリブロックに電源が供給されているかを調べる。処理は、主メモリブロックに電源が供給されている場合はS1011へ進み、供給されていない場合はS1010へ進む。S1010では、IDマネージャ217は、IPリアセンブルIDに対応する主メモリ104のIPリアセンブルバッファ領域に対する電源供給を主メモリ制御部103に指示し、処理をS1011へ進める。
S1011では、IDマネージャ217は、S1002で選択した(割当処理により割り当てられた)ID値を出力し、S1012でIPリアセンブルIDの使用数を管理するカウンタをインクリメントして、処理を終了する。
なお、本実施形態では、上述の手順で電源の供給指示を行ったが、各ハードウェアリソースに対して電源の供給ができればどのような手順で行ってもよい。例えば、S1003〜S1004の処理とS1005〜S1006の順序は逆にされてもよいし、その他の処理についても順序が変更されてもよい。また、上述の各ブロックのうちの1つ以上について常に電源が供給されている場合は、そのブロックについて電源が供給されているかの判定及び電源供給指示の処理は省略されてもよい。
図9に戻ると、上述のようにして、IPリアセンブルIDが、IDマネージャ217からサブプロセッサ204へ受け渡される(S901)と、サブプロセッサ204は、S902において、S901で取得した結果を調べる。そして、ID値が取得できずエラーが出力されていた場合は、サブプロセッサ204は、IPリアセンブルリソース獲得失敗を出力して(S908)、処理を終了する。一方、ID値が取得できた場合は、処理はS903へ進む。
S903では、サブプロセッサ204は、取得したID値に対応したビットマップコントローラのビットマップテーブルに、受信したフラグメントパケットの受信位置を示す情報を記録する。そして、S904において、サブプロセッサ204は、取得したIPリアセンブルID値に対応した主メモリ104のIPリアセンブルバッファへ、フラグメントパケットデータを転送する。続いて、S905において、サブプロセッサ204は、取得したIPリアセンブルID値に対応した通信タイマ216のIPリアセンブルタイマを設定し、起動する。そして、サブプロセッサ204は、S906において、取得したIPリアセンブルIDに対応した検索装置207のIPリアセンブル検索テーブルの検索エントリに、IPリアセンブル検索情報を登録する。その後、サブプロセッサ204は、S907においてIPリアセンブルリソース獲得成功を出力して、処理を終了する。なお、これらのステップの順序等は変更されてもよい。
(IPリアセンブルID初期化処理)
続いて、図11を用いて、主プロセッサ101によるIPリアセンブルID初期化処理の流れについて説明する。なお、本実施形態では主プロセッサ101がIPリアセンブルID初期化処理を行うが、TOE内のサブプロセッサがこの処理を実行してもよい。なお、この処理は、例えば、通信装置の電源が投入された際に実行され、この処理の後に、上述の図9及び図10の処理が実行される。
主プロセッサ101は、S1101において、IPリアセンブルIDの最大値をIDマネージャ217に設定する。この設定値は、システムごとに決定する同時に実行可能なIPリアセンブルの処理の最大数である。その後、主プロセッサ101は、IPリアセンブルID値の最大数分のIPリアセンブルバッファ領域を主メモリ104上に確保する(S1102)。この領域は主メモリ制御部103の制御により電源制御が可能な領域に確保する。なお、本実施形態では主メモリ上にIPリアセンブルバッファを確保する場合について説明しているが、バッファごとに電源制御可能なメモリ領域であれば、他のメモリ上にIPリアセンブルバッファが確保されてもよい。
続いて、主プロセッサ101は、S1102で確保したIPリアセンブルバッファの位置情報をIDマネージャ217に設定する(S1103)。この設定情報に基づいて、1つのデータにリアセンブルされるフラグメントの集合の通信の開始または終了時(すなわち、IPリアセンブルIDが取得され、開放された際)の、電源制御の指示を行う。主プロセッサ101は、その後、IPリアセンブル情報検索用の検索テーブルを検索装置207に対して設定する(S1104)。そして、主プロセッサ101は、IDマネージャ217に対して、IPリアセンブルIDに関連づけられたハードウェアリソースの電源制御を開始する旨を示す指示を行い(S1105)、処理を終了する。なお、上述の各ステップは、順序が変更されてもよいし、一部のステップが削除されてもよい。
(IPリアセンブルリソース解放処理)
続いて、サブプロセッサ204において実行される、本実施形態に係るIPリアセンブルリソース解放処理の流れについて、図12及び図13を用いて説明する。
まず、1つのデータにリアセンブルされるフラグメントの集合についての通信が終了した場合、サブプロセッサ204は、図12のS1201において、検索装置207のIPリアセンブルID値に対応した領域のエントリを削除する。そして、サブプロセッサ204は、ビットマップコントローラ219のIPリアセンブルID値に対応したビットマップテーブルをクリアし(S1202)、IPリアセンブルID値に対応したIPリアセンブルタイマを停止する(S1203)。サブプロセッサ204は、さらに、S1204において、IPリアセンブルID値をIDマネージャ217に返却して、処理を終了する。
ここで、図13を用いて、S1204においてIPリアセンブルID値が返却された場合の、IDマネージャ217が実行するIPリアセンブルID返却処理について説明する。IDマネージャ217は、S1301において、返却されたID値を、保持しているIPリアセンブルID値に追加する。すなわち、IDマネージャ217は、返却されたID値を、その後に新規に開始されるIPリアセンブルに関する通信に対して割り当てるための候補に追加して保持しておく。
そして、IDマネージャ217は、返却されたIPリアセンブルID値に対応する各ハードウェアリソースのブロックについて、電源供給の停止を指示する。具体的には、S1302では、ID値に対応するIPリアセンブルタイマの電源停止が通信タイマ216に指示され、S1303では、ID値に対応するIPリアセンブル検索テーブルのエントリの電源停止が検索装置207に指示される。また、ID値に対応するビットマップテーブルの電源停止がビットマップコントローラ219に指示され(S1304)、ID値に対応する主メモリ104上のIPリアセンブルバッファ領域の電源停止が主メモリ制御部103に指示される(S1305)。そして、IDマネージャ217は、S1306において、IPリアセンブルIDの使用数を管理するカウンタをデクリメントして、処理を終了する。なお、上述の各ステップについても、例えば電源停止の指示の順序が変更されてもよいし、一部のステップが削除されてもよい。
このように、本実施形態の通信装置は、TCPソケット及びIPリアセンブル処理をIDで管理するIDマネージャを有し、それぞれの通信プロトコルの処理に対して、管理されている複数のIDのうちの1つのIDを割り当て、又は解放する。また、本実施形態の通信装置では、各(ハードウェア)リソースを細かいブロックごとに電源制御可能な構成として、IDマネージャは、これらのブロックごとに1つ以上のIDを対応付けて記憶しておく。そして、IDマネージャは、IDの割当と開放とに応じて、1つ以上のリソースについて、そのIDに対応するブロックに対して電源供給またはその停止、若しくはクロックの供給またはその停止を行うように、制御を行う。これにより、実際に通信処理を行っているTCPソケットの数、IPリアセンブルの数に応じて、ハードウェアリソースのブロック単位での詳細な電源制御を行うことが可能となる。さらに、このような構成により、同時に実行可能な通信処理の最大数を維持しながら、記憶装置及びハードウェアを、通信状況に応じて部分的に電源遮断することが可能となるため、通信状態に応じて消費電力を削減することが可能となる。またIDマネージャが一括で電源の制御を行うため、個別にハードウェアリソースの電源制御を行うことが不要となり、個別に電源制御を行うことにより、処理負荷が高まることを防止することが可能となる。
<<その他の実施形態>>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。

Claims (10)

  1. 通信プロトコルの処理のために用いられ、個別に電源供給とその停止とを制御可能な複数のブロックをそれぞれが有する1つ以上のリソースと、
    通信に関する複数の識別子のそれぞれに対して、前記1つ以上のリソースのそれぞれについての前記複数のブロックのうちのいずれかのブロックを対応させて管理する管理手段と、
    前記通信プロトコルの処理が開始されると、処理の単位ごとに、前記複数の識別子のうちのいずれかの識別子を割り当てる割当手段と、
    前記処理の単位ごとに、処理の開始と終了とに応じて、当該処理の単位に割り当てられた識別子に対応する前記1つ以上のリソースのそれぞれについてのブロックへの、電源の供給とその供給の停止またはクロックの供給とその供給の停止を、一括して制御する制御手段と、
    を有することを特徴とする通信装置。
  2. 前記管理手段は、少なくとも1つのリソースについて、1つのブロックに対して前記複数の識別子のうちの1つ以上の識別子を対応させて管理し、
    前記制御手段は、前記1つのブロックについて、当該1つのブロックに対応する1つ以上の識別子のいずれかが割り当てられた前記処理の単位のうちの、少なくとも1つに関する処理が開始した場合に、当該1つのブロックへの電源の供給を行い、当該1つのブロックに対応する1つ以上の識別子のいずれかが割り当てられた前記処理の単位の全てに関する処理が終了した場合に、当該1つのブロックへの電源の供給を停止する、
    ことを特徴とする請求項1に記載の通信装置。
  3. 前記1つ以上のリソースは、前記通信プロトコルの処理のための1つ以上のハードウェアを含む、
    ことを特徴とする請求項1又は2に記載の通信装置。
  4. 前記1つ以上のリソースは、前記通信プロトコルの処理のためのメモリを含む、
    ことを特徴とする請求項1から3のいずれか1項に記載の通信装置。
  5. 1つのTCPソケットによる通信を前記処理の単位とする、
    ことを特徴とする請求項1から4のいずれか1項に記載の通信装置。
  6. 前記1つ以上のリソースは、TCPによる通信処理のための情報を管理するハードウェア、TCPタイマ、ソケットバッファ、及びソケット検索テーブルの少なくともいずれかを含む、
    ことを特徴とする請求項5に記載の通信装置。
  7. 1つのデータにリアセンブルされるフラグメントの集合の通信を前記処理の単位とする、
    ことを特徴とする請求項1から4のいずれか1項に記載の通信装置。
  8. 前記1つ以上のリソースは、受信したフラグメントをビットで管理するビットマップコントローラ、リアセンブルタイマ、リアセンブルバッファ、及びリアセンブル検索テーブルの少なくともいずれかを含む、
    ことを特徴とする請求項7に記載の通信装置。
  9. 通信プロトコルの処理のために用いられ、個別に電源供給とその停止とを制御可能な複数のブロックをそれぞれが有する1つ以上のリソースと、通信に関する複数の識別子のそれぞれに対して、前記1つ以上のリソースのそれぞれについての前記複数のブロックのうちのいずれかのブロックを対応させて管理する管理手段と、を有する通信装置の制御方法であって、
    割当手段が、前記通信プロトコルの処理が開始されると、処理の単位ごとに、前記複数の識別子のうちのいずれかの識別子を割り当てる割当工程と、
    制御手段が、前記処理の単位ごとに、処理の開始と終了とに応じて、当該処理の単位に割り当てられた識別子に対応する前記1つ以上のリソースのそれぞれについてのブロックへの、電源の供給とその供給の停止またはクロックの供給とその供給の停止を、一括して制御する制御工程と、
    を有することを特徴とする制御方法。
  10. 通信プロトコルの処理のために用いられ、個別に電源供給とその停止とを制御可能な複数のブロックをそれぞれが有する1つ以上のリソースと、通信に関する複数の識別子のそれぞれに対して、前記1つ以上のリソースのそれぞれについての前記複数のブロックのうちのいずれかのブロックを対応させて管理する管理手段と、を有する通信装置に備えられたコンピュータに、
    前記通信プロトコルの処理が開始されると、処理の単位ごとに、前記複数の識別子のうちのいずれかの識別子を割り当てる割当工程と、
    前記処理の単位ごとに、処理の開始と終了とに応じて、当該処理の単位に割り当てられた識別子に対応する前記1つ以上のリソースのそれぞれについてのブロックへの、電源の供給とその供給の停止またはクロックの供給とその供給の停止を、一括して制御する制御工程と、
    を実行させるためのプログラム。
JP2014007269A 2014-01-17 2014-01-17 通信装置、制御方法及びプログラム Expired - Fee Related JP6291261B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014007269A JP6291261B2 (ja) 2014-01-17 2014-01-17 通信装置、制御方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014007269A JP6291261B2 (ja) 2014-01-17 2014-01-17 通信装置、制御方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2015136071A true JP2015136071A (ja) 2015-07-27
JP6291261B2 JP6291261B2 (ja) 2018-03-14

Family

ID=53767658

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014007269A Expired - Fee Related JP6291261B2 (ja) 2014-01-17 2014-01-17 通信装置、制御方法及びプログラム

Country Status (1)

Country Link
JP (1) JP6291261B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009111707A (ja) * 2007-10-30 2009-05-21 Alaxala Networks Corp パケット転送装置
JP2009218743A (ja) * 2008-03-07 2009-09-24 Canon Inc Ipプロトコル処理装置及びその処理方法
JP2011040038A (ja) * 2009-07-17 2011-02-24 Canon Inc 検索装置、検索装置の制御方法及びプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009111707A (ja) * 2007-10-30 2009-05-21 Alaxala Networks Corp パケット転送装置
JP2009218743A (ja) * 2008-03-07 2009-09-24 Canon Inc Ipプロトコル処理装置及びその処理方法
JP2011040038A (ja) * 2009-07-17 2011-02-24 Canon Inc 検索装置、検索装置の制御方法及びプログラム

Also Published As

Publication number Publication date
JP6291261B2 (ja) 2018-03-14

Similar Documents

Publication Publication Date Title
CN110187827B (zh) 可编程数据存储装置及可编程网络数据存储系统
CN107690622B (zh) 实现硬件加速处理的方法、设备和系统
US9535871B2 (en) Dynamic routing through virtual appliances
CN108293041B (zh) 分布式系统、资源容器的分配方法、资源管理器及应用控制器
US20100318996A1 (en) Methods and systems for sharing common job information
EP3338184B1 (en) Technique for reconfiguring a virtual machine
US20140149981A1 (en) Sharing memory between virtual appliances
US9092365B2 (en) Splitting direct memory access windows
US20140146705A1 (en) Managing a dynamically configurable routing scheme for virtual appliances
US9736011B2 (en) Server including switch circuitry
US20100183009A1 (en) Discriminatory mtu fragmentation in a logical partition
US11477102B2 (en) Upgrading user space networking stacks without disruptions to network traffic
US20220109733A1 (en) Service mesh offload to network devices
CN109388953A (zh) 安全设备、电子设备和操作电子设备的方法
KR20200125389A (ko) 저장 장치에서 가속 커널들의 상태 모니터링 방법 및 이를 사용하는 저장 장치
US9104600B2 (en) Merging direct memory access windows
CN107493574B (zh) 无线控制器设备、并行认证处理方法、系统、组网装置
JP5028339B2 (ja) 通信装置及び制御方法
JP6291261B2 (ja) 通信装置、制御方法及びプログラム
JP5967967B2 (ja) 情報処理装置およびその制御方法
US20160261526A1 (en) Communication apparatus and processor allocation method for the same
JP6677052B2 (ja) 通信管理装置、通信管理方法及びプログラム
JP2013089190A (ja) データ転送装置、データ転送方法およびプログラム
US9542356B2 (en) Determining, at least in part, one or more respective amounts of buffer memory
US9270530B1 (en) Managing imaging of multiple computing devices

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170106

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170929

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171226

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180112

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180209

R151 Written notification of patent or utility model registration

Ref document number: 6291261

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees