(57)【要約】      （修正有）【課題】メモリ管理で、論理メモリの基本サイズを決定し、論理メモリサイズを固定長に管理し、メモリ利用効率が高いメモリ管理方法を提供する。【解決手段】通信方式に基づいて論理メモリの基本サイズを決定し、メモリに基本サイズの論理メモリを設定し、論理メモリに受信したデータ又は送信するデータを格納する。【選択図】図５
2013090200.tif 000002
【特許請求の範囲】
【請求項１】
受信したデータ又は送信要求されたデータを格納するメモリを備える通信装置におけるメモリ管理方法であって、
通知された通信方式に基づいて論理メモリの基本サイズを決定する工程と、
前記メモリに前記基本サイズの論理メモリを設定する工程と、
前記論理メモリに受信したデータ又は送信要求されたデータを格納する工程と、
を含むことを特徴とする通信装置におけるメモリ管理方法。
【請求項２】
前記メモリの使用率が所定の閾値をこえたときは、前記メモリに前記論理メモリを設定せずに、データを連続的に前記メモリに格納することを特徴とした請求項１に記載の方法。
【請求項３】
前記論理メモリの基本サイズを決定する工程は、受信データのサイズ又は送信データのサイズの統計に基づいて前記基本サイズを変更することを特徴とする請求項１又は２に記載の方法。
【請求項４】
前記基本サイズは受信と送信とで独立した値を設定できることを特徴とする請求項１乃至３のいずれか１項に記載の方法。
【請求項５】
前記メモリへの格納はＤＭＡによることを特徴とする請求項１乃至４のいずれか１項に記載の方法。
【請求項６】
通信に用いるメモリを備える通信装置であって、
通知された通信方式に基づいて論理メモリの基本サイズを決定する手段と、
前記メモリに前記基本サイズの論理メモリを設定する手段と、
前記論理メモリに受信したデータ又は送信要求されたデータを格納する手段と、
を備えることを特徴とする通信装置。
【請求項７】
請求項１乃至５のいずれか１項に記載された方法の各工程をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置におけるメモリ管理方法に関する。
【背景技術】
【０００２】
通信処理において、他機器が必要とするデータを他機器に送信する場合、通信処理に求められる処理は大きく分けると以下の３つがある。第一に、送信すべきデータを自機器のアプリケーションから受け取る。第二に、通信するにあたり必要となるヘッダ付与等のプロトコル処理をデータに施す。第三にヘッダを伴ったデータ、すなわちパケットを他機器との通信インターフェイスに送信する。
【０００３】
通信処理において、自機器が必要とするデータを他機器から受信する場合にも、同様に以下の３つの処理がある。第一に、パケットを他機器との通信インターフェイスから受信する。第二に、通信するために必要であったプロトコル処理を解除し、前記パケットに含まれるデータを必要としている自機器のアプリケーションを特定する。第三に、自機器の特定されたアプリケーションに対して前記パケットから取り出したデータを送信する。
【０００４】
このように、通信処理においては、送受信したいデータがアプリケーション処理部、通信処理部、インターフェイス処理部と複数の場所を移動する。さらにプロトコルの複雑性によっては、データ移動や連結といったメモリコピー処理が必要になるケースがある。よって、データの効率的なメモリへの格納方法が通信処理効率の向上に繋がる。例えばＬｉｎｕｘ（登録商標）では、sk_buffと呼ばれるメモリ管理方法を実装している。さらに、メモリ管理方法において、次のような先行技術がある。
【０００５】
例えば、複数のバッファを持ち、各データ・パケットの長さによって必要とされるような１つまたは複数のバッファに、データ・パケットが記憶されるパケット・メモリ部がある（特許文献１）。また、第一に、受信バッファでパケットの解析をし、第二に、予めアプリケーションと通信処理部で共有したユーザーバッファのアドレス情報にアドレス変換を行ってデータを転送する方法がある（特許文献２）。さらに、２つの転送モードを持つ通信処理において、それぞれ独立したＤＭＡコントローラとヘッダ用メモリとペイロード用のメモリを配置することにより、データ転送を行う方法がある（特許文献３）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平４−３３６７２９号公報
【特許文献２】特開平７−７８１１２号公報
【特許文献３】特開２００５−１３７０２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
通信を行う際に使用するメモリを複数の論理メモリとして扱うメモリ管理をすることにより、処理効率の向上が図れる。その際にメモリ管理は論理メモリサイズを固定長にすると管理しやすい。しかし、固定長に小さな値を用いたことで格納するデータが分割されると、分割されたデータを連結する処理が発生し、スループットが低下する要因となる。また、固定長に大きな値を用いた場合、メモリ利用効率が劣化することがある。
【０００８】
本発明は、上記の課題に鑑みてなされたものであり、通信を行う際に使用するメモリに、通信に適した所定長の論理メモリサイズを設定してスループットの低下、メモリ利用効率の劣化を防ぐ通信処理におけるメモリ管理方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明の受信したデータ又は送信要求されたデータを格納するメモリを備える通信装置におけるメモリ管理方法は、通信開始時に通知された通信方式に基づいて論理メモリの基本サイズを決定する工程と、前記メモリに前記基本サイズの論理メモリを設定する工程と、前記論理メモリに受信したデータ又は送信要求されたデータを格納する工程とを含むことを特徴とする。
【発明の効果】
【００１０】
通信に使用する際に使用するメモリに、通信に適した所定長の論理メモリサイズを設定してスループットの低下、メモリ利用効率の劣化を防ぐ通信処理におけるメモリ管理方法を提供する。
【図面の簡単な説明】
【００１１】
【図１】本発明を適用できるシステム構成例。
【図２】実施形態１に係る通信制御装置のブロック図。
【図３】実施形態１に係る通信制御部の機能ブロック図。
【図４】実施形態に係る主記憶部のメモリ構成。
【図５】実施形態１に係る通信制御部のメモリ管理処理のフローチャート。
【図６】受信した連続パケットの例。
【図７】実施形態に係るメモリのデータ格納状態。
【図８】実施形態１に係る通信制御部の処理を表したフローチャート。
【図９】実施形態に係るデータ送信時のデータ格納状態。
【図１０】実施形態２に係る通信制御部の機能ブロック図。
【図１１】通信制御部のメモリ管理処理を表したフローチャート。
【図１２】実施形態３における通信制御装置のブロック図。
【図１３】実施形態３における通信制御部の機能ブロック図。
【図１４】実施形態３における各モジュール間の受信時のデータフロー図。
【図１５】実施形態３における各モジュール間の送信時のデータフロー図。
【発明を実施するための形態】
【００１２】
図１により本実施形態にかかるシステムを説明する。電子機器101は、通信制御装置103と主制御装置102を収容する電子機器である。主制御装置102は、電子機器101のアプリケーションを制御するための装置である。主制御装置は、電子機器101が例えばテレビであれば表示であり、プリンタであれば印刷であり、カメラであれば撮像であったりといったアプリケーションを実行する。
【００１３】
通信制御装置103は、電子機器101の通信に係る処理を実行する。通信制御装置103は無線通信が使用できるものを例として説明する。無線通信の外部インターフェイスとしてアンテナ104を具備する。電子機器101は空間105を介して無線通信機器106と通信を行う。
図2により本実施形態１に係る電子機器101の内部構成を説明する。
【００１４】
電子機器101は、主制御装置102と通信制御装置103とからそれぞれが、アクセス可能な主記憶部201を有する。主記憶部201は、主制御装置102が主に使用するユーザーバッファ領域と、通信制御部203が主に使用する通信用の通信バッファ領域とに論理的に分かれているものとする。そのうち、通信バッファ領域のメモリ管理方法に本実施形態が適用される。主制御装置102は、通信相手に送信したいデータを主記憶部201のユーザーバッファ領域に配置する。通信制御装置103は、ユーザーバッファ領域に配置されたデータを送信データとして１度通信バッファ領域にコピーして、その後、所定のプロトコル処理を行いパケットデータ化して、通信相手に送信する。また、通信制御装置103は、無線通信機器106より受信したデータを１度通信バッファ領域に受信データとして格納し、前記受信データに対し通信制御装置103が所定のプロトコル処理をした後、必要なデータのみユーザーバッファ領域にコピーする。その後、通信制御装置103は主制御装置102に対し、データ受信の通知をする。
【００１５】
主制御装置102と通信制御装置103と主記憶部201はメインバス202で接続されている。通信制御部203は通信制御装置103全体の状態監視や制御を行う。詳細な通信制御部203の動作については後述する。通信制御装置103に存在する各種モジュールがローカルバス204により接続される。補助記憶部205は通信制御装置が各種処理を実行するために必要となるワークメモリとして使用される。
【００１６】
無線通信部206は通信相手と無線通信を実行するために必要となる媒体アクセス制御や物理層に係る処理を実行する。無線通信部206は通信制御部203からの制御情報を元に動作を行う。無線通信部206の状態変化時には、通信制御部203に割り込み信号209を送信することにより通知を行う。
【００１７】
通信制御部203から主制御装置102へ割り込み信号線207が接続されている。通信制御部203はセットした命令が終了したときや、通信制御部203では処理しきれないエラーが発生した場合に主制御装置102へ割り込み信号線207によりその旨を通知する。
【００１８】
主制御装置102から、通信制御部203へ割り込み信号線208が接続されている。主制御装置102は通信制御部203に対して命令をセットしたい時に、割り込み信号線208に割り込み信号をアサートする。
【００１９】
無線通信部206から、通信制御部203へ割り込み信号線209が接続されている。割り込み信号線209は、無線通信部206が外部よりデータを受信した場合や、異常を検知した場合に、通信制御部203へ割り込み信号をアサートする場合に使用する。
【００２０】
主記憶部201と補助記憶部205は、同じ記憶装置に設定されていてもよいが、違う記憶装置でもよい。例えば、主記憶部201はLSIの外部に具備されるＤＲＡＭとし、補助記憶部205はLSI内部に具備されたオンチップＲＡＭとしてもよい。
【００２１】
次に通信制御部203の詳細な構成、動作について図３により説明する。命令処理部301は主制御装置102から受信した各種命令を解析し、解析結果を元にどのような処理を行うべきかを決定する。
通信上位層処理部302は、OSI参照モデルにおけるトランスポート層（第四層）よりも上位レイヤであるプロトコルについて処理を行う。
通信プロトコル処理部303はOSI参照モデルにおけるトランスポート層（第四層）及びネットワーク層（第三層）に該当するプロトコルの処理を実行する。
無線制御部304は無線通信部206の初期設定や各種コマンド発行を行う。
メモリ管理部305については後述する。
【００２２】
本実施形態では、状態検知部306は無線通信部206と主制御装置102からの割り込み信号を受信することにより状態を検知している。なお、割り込み信号を使用しないで状態検知するよう構成することもできる。そのような構成としては、例えば、無線通信部206と主制御装置102の状態を示すレジスタをそれぞれ用意しておく。そして定期的もしくは不定期にこのレジスタを監視する処理を状態検知部306が実行することが挙げられる。状態検知は上記いずれの方法で実施してもよい。
【００２３】
通知部307は、主制御装置102に対して通信制御装置103が各種情報を送信したい場合に、通知情報があることを通知する。このときに通信制御部203から主制御装置102への割り込み信号線207を使用して通知を行う。ただし、主制御装置102の構成よっては必ずしも割り込み信号線は必要ない。上記状態検知部306で説明したように主制御装置102が定期的もしくは不定期に通信制御部203の状態を確認する動作を実行する場合には、割り込みは不要である。通知情報の通知は上記いずれの方法で実施してもよい。
【００２４】
ローカルバス接続部308はローカルバスのプロトコルに則った動作を行い、通信制御装置103内の各種機能部にアクセスするのに使用される。なお、通信制御装置103内の各種機能部から、通信制御部203へアクセス可能なように構成されていてもよい。
【００２５】
メインバス接続部309はメインバスのプロトコルに則った動作を行い、通信制御装置103の外部にある各種機能部にアクセスするのに使用される。なお、通信制御装置103の外部にある各種機能部から、通信制御部203へアクセス可能なように構成されていてもよい。
【００２６】
例えば無線を使用し、Web閲覧をするようなときは、無線接続から、ネットワーク層、トランスポート層、上位層といった各レイヤそれぞれでレイヤ間の接続がされなければならない。接続状態監視部310は上記の例のように各レイヤにおいての接続プロトコルや接続状態を監視する機能を備える。
【００２７】
メモリ管理部305について、図4を用いて説明する。主記憶部201がユーザーバッファ領域401と通信バッファ領域402を有することは先に説明した。本実施形態にかかるメモリ管理方法は、通信バッファ領域を基本メモリサイズ403単位で論理的に区切られた複数の論理メモリとして扱う。メモリ管理部305はこの論理メモリの最大数や、各論理メモリのサイズ、さらに各論理メモリにIDが振られている場合、そのIDと物理アドレスの対応関係を管理する。メモリ管理部305はメモリ管理のための管理情報テーブルを備え、論理メモリが使用中の状態404（使用済み）と、使用されていない状態405（空き）の管理を行う。通信制御部203が、各種の処理実行おいて、メモリが必要になった場合、空き論理メモリから必要な数の論理メモリを取得し、それらを使用済みとして管理情報テーブルを変更した後、使用を開始する。そして、論理メモリの使用が終わった場合、該当使用済み論理メモリ内データを必要に応じて消去し、空き論理メモリとして管理情報テーブルに再登録する。なお、論理メモリの管理情報テーブルは、補助記憶部205にあっても、主記憶部201にあってもよい。メモリ管理部305は、管理情報テーブルの更新処理を行えることが望ましい。
【００２８】
さらに、メモリ管理部305は、論理メモリの使用率についても監視を行うことが望ましい。論理メモリの使用率は、通信バッファ領域402のサイズと実際に通信バッファ領域402に格納されている有効データサイズを元に計算してもよいし、論理メモリの総数と使用済み論理メモリの数を元に計算してもよい。
【００２９】
次に図５により、通信制御部203が通信パケットを連続的に受信するときの処理手順について詳細に説明する。連続的に到着する通信パケットの例を図6に示す。
【００３０】
通信パケットは、各パケットに付けられるヘッダ部601とデータ部602を含む。ヘッダ部601には、宛先アドレス（DA）603, 送信元アドレス（SA）604,データ部のデータサイズを示すパケット長（ Length）605が含まれる。
【００３１】
本実施形態では、上記の連続した通信パケットを受信する際の動作について説明する。まず、無線通信が確立する前に、使用する通信方式が主制御装置102より通信制御装置103の通信制御部203へ通知されるのを待つ（ステップ502、503）。通信方式が通知されると、通信制御部203は、通知された通信方式から、前記通信方式の１パケットにおける最大のパケット長を割り出し、その結果よりメモリ管理部305で、使用する基本メモリサイズを決定する（ステップ504）。例えばEthernet II（登録商標）を使用した無線LANの場合は、Ethernet II（登録商標）のMTUは、1500バイトと決められている。よって、基本メモリサイズを1500バイトより大きく設定しておく。そして例えば、基本メモリサイズの最小単位が128バイトである場合は、128バイトを整数倍して1500バイトを超えるサイズ、例えば1536バイトを基本メモリサイズと決定しておく。なお、基本メモリサイズの変更の必要が発生した場合には、基本メモリサイズを変更できるようにしておく（ステップ505、506）。基本メモリサイズの変更の例については後述する第２実施形態で説明する。
【００３２】
次に無線通信が確立していない場合は、無線通信を確立して（ステップ507、508）、アンテナ104よりデータを受信し、無線通信部206内部のメモリに受信データを取り込む。通信制御部203は、割り込み信号がアサートとされるのを待つ（ステップ509）。データを受信した無線通信部206は、割り込み信号線209を使用して、通信制御部203に割り込み信号をアサートする。割り込み信号を検知した通信制御部203は、割り込み要因を特定するために、無線通信部206に問合せを行う(ステップ509、510)。その問合せの結果により、受信通知であることが分かると、通信制御部203は、受信データの取り込みを開始する。次にパケットを基本サイズの論理メモリに分離して格納するか、分離しないで連続的に格納するか判定する(ステップ511)。この判定(ON/OFF)については後述する。
【００３３】
以下では基本サイズの論理メモリにデータを分離して格納する場合（ステップ511でONの判定があったとき。）について説明する。まず補助記憶部205に受信した1パケット目のヘッダ部601のコピーを開始する(ステップ512、513)。ヘッダ部601のコピーが終了すると、ヘッダ部601のLength605を参照し(ステップ514)、その参照結果を元に１パケット目のデータ部602を取り込むための必要メモリサイズを算出する(ステップ515)。メモリ管理部305にて使用されている基本メモリサイズと前記必要メモリサイズを比較し、１パケット目を格納するに当たり、いくつの論理メモリが必要になるか算出を行う(ステップ516)。そして、必要個数を空き論理メモリから使用済みと変えることにより、必要な数の論理メモリを取得する(ステップ517)。通常は、ステップ504またはステップ506により、基本メモリサイズを決定しているため、１つのデータパケットは１つの論理メモリで収まるはずであるが、想定外であるデータ長の長いパケット等も受信する場合は、複数の論理メモリを使用して受信する。
【００３４】
そして、まず補助記憶部205にあるヘッダ部601のデータを獲得した主記憶部の論理メモリへコピーする(ステップ518、519)。続いて、無線通信部206からデータ部602を読み込んで、獲得した論理メモリへコピーする(ステップ520、521)。第一のパケットをすべて論理メモリへ取り込んだら、次に第二のパケットにおけるヘッダ部601の受信が開始される。再び補助記憶部205に2つ目のパケットのヘッダ部601を格納する。第二、第三のパケットを同様の処理で、すべてのパケットを受信するまで、コピー処理を繰り返す（ステップ522）。この例の場合、主記憶部201に最終的に図7(a)のようにパケットが受信、格納される。
【００３５】
ここで、主記憶部201への格納は、図７(b)に示されるようにデータ部602のみにしてもよい。実装された通信プロトコル処理部303がデータ処理をするのに都合のよい形で通信バッファ領域にデータを格納すればよい。
【００３６】
次に、上記のステップ511で記した、パケット分離がoffの場合のパケットの格納について図５(b)により説明する。この場合もパケットを受信するのに必要なサイズのメモリを獲得し（ステップ524）、獲得したメモリにパケットを順番に格納する。その際に論理メモリの基本メモリサイズは使用しないでパケットとパケットの間を詰めて格納する（ステップ525,526）。図7(c)は、パケットを分離して格納する受信機能をOFF（分離しない）にして受信したときの様子である。すなわち、論理メモリごとにパケットが区切られず敷き詰めて入れることが出来るので、メモリ利用効率を考えた場合、基本サイズの論理メモリ毎にパケットを分離する方法に比べメモリの利用効率を高くできる。よって、メモリの枯渇によるパケットロスが頻発するような環境では、パケットを論理メモリに分離して格納する受信機能をoffした方が、パケットロスの発生を抑止できる可能性がある。そのため本実施形態にかかるパケットの分離受信機能をOn/Offできる機構を入れることがよい。
【００３７】
どのようにOn/Offを行うかについて、以下図5(ｃ)を用いて説明する。通信開始された場合、まず初期設定を行う(ステップ527、528)。初期設定では、論理メモリの使用率に閾値を設定する。この閾値に基づいて、パケット分離受信機能をOn/Offさせる。この閾値は、事前にメモリ管理部305が、固定的に設定する方法でもよいし、主制御装置102からの命令により、セットされるものでもよい。次に、メモリ管理部305は、論理メモリの使用率を算出する(ステップ529)。算出結果と使用率の閾値とに基づいて、パケット分離受信機能のOn/Offが決定される(ステップ530,531,532)。例えば、算出されたメモリの使用率が閾値以上であれば、パケット分離受信機能をoffし、閾値未満であればパケット分離受信機能をonにする。上記決定に係るフロー(ステップ529〜532)は、通信が終了するまで（ステップ533）継続して実行される。
【００３８】
次に、主制御装置102が、他機器にデータを送信するときに通信制御装置103で行われるメモリ管理方法について図８により説明する。まず図8(a)について説明する。最初に、主制御装置102より、通信制御装置103に対して、所定の通信方式を使用した通信開始要求が送信される。すると通信制御装置103が通信方式のフォーマットにしたがった接続処理を行い、通信を確立させる(ステップ802〜804)。また、通信制御装置103は通信方式に使用されるデータサイズより基本メモリサイズを決定する(ステップ805)。例えば、先のEthernetII（登録商標）を前提とした無線LANを使用する場合は、先の要領で1536バイトを基本メモリサイズとして使用する。なお、基本メモリサイズの変更要求があった場合には、その要求にしたがって基本メモリサイズを変更する(ステップ806,807)。これについては後述する。
【００３９】
次に、通信制御装置103は主記憶装置から実際に転送して欲しいデータを受け取る。例えば、主制御装置102は、ユーザーバッファ領域に送信したいデータを用意し、その先頭アドレスとユーザーバッファ領域におかれたデータサイズを通信制御部203に通知する。通知を受けた通信制御部203は、通信制御部203が管理する通信バッファ領域にデータのコピーを行う際に、１回にコピーする基本コピーサイズを、通信に使用する通信方式を元に決定する(ステップ808,809)。例えば、TCP/IPを使用した無線通信を行っている場合は、TCPヘッダ／IPヘッダにそれぞれオプションがない場合は、TCPの最大ペイロードサイズ1460バイトを１回の基本コピーサイズに決定する。また、暗号・認証を用いた通信で、例えばIＰsec のプロトコルを使う通信では、AH  （Authentification Header）やESP  (Encapsulation Security Payload)を使用している場合がある。この場合はAHヘッダやESPヘッダがTCPヘッダ、IPヘッダに付加される。それに伴い、主制御装置102から受け取ったデータを１パケットで送信できるサイズが減少する。そこで、データの基本コピーサイズを通信方式で使用する最大のデータサイズから付加するヘッダ分だけ減らした数値に決定する。
【００４０】
基本コピーサイズの決定後、ユーザーバッファ領域から基本コピーサイズのデータを、通信バッファ領域の1つの論理メモリにコピーする(ステップ810,811)。このときの主記憶部201の様子を図9に示す。この基本コピーサイズのデータコピー時では、図９(a)に示すように論理メモリの先頭からコピーしてもよい。この場合は、ヘッダ部は論理メモリに生成するようにしてもよいし、補助記憶部205に生成するようにしてもよい。論理メモリにヘッダも生成する場合は、図９(b)に示すように後からつけるヘッダサイズ分のオフセットサイズを論理メモリの先頭アドレスから移動させてデータをコピーするとよい。また、論理メモリにユーザーデータを格納し、送信時にヘッダを付加してもよい。このように通信パケットサイズに見合った形で、論理メモリにユーザーデータをコピーすることにより、通信パケットが他機器に受信されたことが確認できた際、すみやかに該当論理メモリを開放することができる。これにより、メモリ利用性の向上が実現する。以降、全てのユーザーバッファ領域に置かれたユーザーデータのコピーが完了するまで（ステップ812）、上記ステップ810,811が繰り返される。
【００４１】
送信要求されたユーザーデータのサイズが、通信方式で使用できるパケット長よりも非常に大きい場合がある。その場合、即座に順次、ユーザーデータから通信パケットサイズにコピーを開始させず、ユーザーデータを論理的なブロックに区切ってからコピーを行ってもよい。その処理を図8(b)に示す。図８(a)の処理との差分はブロックに切るためのブロックサイズとブロック位置の決定処理（ステップ814）が含まれることと、ブロックコピーの終了の確認（ステップ815）が入ることである。図9(c)に示すようにユーザーデータは所定のブロックサイズに分割され（ステップ814）、ブロック毎のコピー（ステップ810）がブロックのデータが終了するまで（ステップ811）続けられる。
【００４２】
さらに、先に述べた通信制御装置103の受信処理時における基本メモリサイズとは別に、通信制御装置103の送信処理時の基本メモリサイズを用意して使用してもよい。例えば、主制御装置102が、他機器とTCP/IPを使用した通信において、データ受信している場合、通信制御装置103は、TCPのACK送信が主たる送信処理となる。この場合通信制御装置103が送信に使用する基本メモリサイズは受信における基本メモリサイズより小さくすることができ、メモリの利用効率を高くできる。
【００４３】
また、通信が確立されていない場合、通信が確立（ステップ508）した後に、確立した通信方式に使用されるＭＴＵに基づいて基本メモリサイズを変更するようにしてもよい。
実施形態2では、通信状態をトレーニングすることにより、メモリ管理部305で使用される基本メモリサイズを変更する方法について説明する。実施形態1からの変更は、通信制御部の構成である。実施形態2の通信制御部213について、図10を用いて説明する。
【００４４】
通信制御部213に通信状態監視部311とタイマー部312を追加する。通信状態監視部311は、外部機器より受信したパケットのサイズについて監視を行う。タイマー部312は時間管理を行う。
【００４５】
主制御装置102が他機器からデータを受信するときにおける、通信制御部213の処理手順について図11(a)を用いて説明する。図11(a)は、通信制御部213の処理の一部をフローチャートで表したものである。なお、図7の処理のように受信したデータを論理メモリに格納する処理を通信制御部213が行っていることについての変更はない。さらに通信制御部213は、図11(a)に示す処理も図7の処理と並行または時分割に行う。まず、通信制御部213は、予め決められた間隔で処理を実行できるよう、タイマー部312を用いて処理を行う間隔をセットする(ステップ1102)。次に、通信状態監視を通信状態監視部311 により開始する(ステップ1103)。ここで通信状態監視部311は受信パケットのサイズについて統計する。例えばヘッダ部に含まれるLengthの値を統計する（ステップ1104）。そしてタイマーが終了次第、統計を終了する(ステップ1105,1106)。そして前記統計の結果を元に、次の基本メモリサイズを決定する(ステップ1107)。この決定は例えば、一番大きいサイズの受信パケットに合わせて基本メモリサイズを決定してもよいし、一番受信パケットの割合で多かったパケットのサイズを基本メモリサイズとして決定してもよい。最後に、通信制御部213は決定した基本メモリサイズをメモリ管理部305にセットするように要求する(1108)。なお、基本メモリサイズを変更するタイミングは、すでに受信したパケットの通信制御部203での処理がいったん終了している状態がよい。図５で示した基本サイズを変更するステップ505、506のタイミングにおいて変更してもよい。
【００４６】
これにより、基本メモリサイズを受信サイズに見合ったサイズに変更できるため、メモリの利用効率を向上することができ、通信状態の揺らぎにより突発的に発生するメモリの枯渇によるパケットロスを軽減できるようになる。
【００４７】
次に、主制御装置102が他機器へデータを送信するときにおける、通信制御部213の処理手順について説明する。なお、実施形態1において、通信開始時に通信方式に応じて基本メモリサイズを決定する方法については説明した。今回の方式は、必ずしも最初に決定した基本メモリサイズが効率的とはいえなくなったような場合の基本メモリサイズ変更方法である。その方法を図11(b)に示す。なお、図8に示す通常の処理を通信制御部213も行うことについての変更はない。通信制御部213は、図11(b)に示された基本メモリサイズを変更する処理を図8の処理と並行または時分割に行う。まず、通信制御部213は、予め決められた間隔に処理が実行できるよう、タイマー部312を用いて間隔をセットする(ステップ1202)。次に通信状態監視を通信状態監視部311 により開始する(ステップ1203)。ここで送信の度に主制御装置102からユーザーデータとして通信制御部213に通知されるデータサイズについて統計する（ステップ1204）。例えばソケットを使用した通信であれば、ソケットＩＤごとにデータサイズを統計してもよい。そしてタイマーが終了次第、統計を終了する(ステップ1205,1206)。そしてその統計結果を元に、次の基本メモリサイズを決定する(ステップ1207)。最後に、決定した基本メモリサイズをメモリ管理部305にセットするように要求する(1208)。なお、基本メモリサイズを変更するタイミングは、例えば論理メモリに格納した送信パケットの処理がいったん終了している状態が望ましい。なお、送信の場合、事前にＭＴＵによる基本サイズの決定を行っている。ＭＴＵよりも大きいサイズがユーザーデータとして通信制御部213に通知される場合、サイズをＭＴＵより大きくすることは基本的にはできないから、基本サイズの変更は発生しない。これにより、送信サイズに見合った基本メモリサイズを適宜選択できるため、メモリ利用効率を向上することができる。
【００４８】
実施形態3では、論理メモリへのデータ格納や論理メモリからの読み出しにＤＭＡ（Direct Memory Access）を用いた場合、それに適した形でメモリ管理を実現する方法について説明する。まず、通信制御装置250 について図12を用いて実施形態３に係る部分を説明する。本実施形態の通信制御部223と他の実施形態の通信制御部203、213との構成の差については後述する。
【００４９】
メモリ管理部251は通信制御部203、213に組み込まれていたメモリ管理部の処理の一部を担う。さらに、後述のＤＭＡ部252との間で直接制御情報をやり取りできる構成を持つ。ＤＭＡ部252は補助記憶部205及び、主記憶部201の両種記憶部と各種モジュール間のデータ転送を担う。ＤＭＡ部252には、後述のＤＭＡバス254に流れるデータに対して、簡単な比較・解析処理を行う機能が具備される。また、ＤＭＡ部252は一次記憶部255を具備する。
【００５０】
割り込み信号線253は、ＤＭＡ部252から通信制御部223への割り込み通知する信号線である。ＤＭＡ部252の処理が終了したときや、エラーが発生したときに、通信制御部223へ通知するために使用される。ＤＭＡバス254は無線通信部206と補助記憶部205または、主記憶部201間で、ＤＭＡ部252を使用したデータ転送に使用するバスである。
【００５１】
次に、通信制御部223について、図13を用いて実施形態３に係る部分を説明する。ＤＭＡ制御部313はＤＭＡ部252を制御する。メモリ管理機能制御部314はメモリ管理部251を制御する。図13の状態検知部306と図3の状態検知部306との構成上の差は、図１３の状態検知部306がＤＭＡ部252の状態も検知する点である。
【００５２】
次に、通信制御装置250が、他機器より連続したパケットを受信するときにおける、通信制御装置250内部のデータ及び制御フローについて図14を用いて説明する。なお、連続して受信するパケットの例は、図6に記載のものと同様である。まず、無線通信部206がアンテナ104を介して連続したパケットを受信する。すると、無線通信部206は、通信制御部223に割り込み信号をアサートする(1501)。割り込みを検知した通信制御部223は、割り込み要因を確認するために、無線通信部206に問合せを行う(1502)。データ受信通知であると分かった通信制御部223は、ＤＭＡ部252にデータ受信命令をセットする(1503)。ここで、ＤＭＡ部252にセットする命令には、無線通信部206のアドレス情報が含まれる。また、事前に無線通信部206が受信した全パケットの総和のデータサイズが分かっていれば、それをＤＭＡ部252に通知しておいてもよい。
【００５３】
データ受信命令を受け取ったＤＭＡ部252は、ＤＭＡにより無線通信部206から、受信データの読み込みを開始する(1504)。まずパケット１のヘッダ部をＤＭＡにより転送し(1505)、ＤＭＡ部252内部にある一次記憶領域に格納する(1506)。ヘッダ部を獲得したＤＭＡ部252は、Length(605)を解析し(1507)、必要となる論理メモリサイズを算出し、メモリ管理部251に必要サイズ分の論理メモリの獲得要求を送信する(1508)。要求を受けたメモリ管理部251は、自身が管理する主記憶部201の空き論理メモリのリストから、要求されたサイズに見合う論理メモリの物理アドレスとサイズからなるリストを返す(1509)。なお、事前に各モジュール間で論理メモリのIDナンバー等と物理アドレスとの対応関係について共有できていれば、IDを返す方法でもよい。ここで、メモリ管理部251は、ＤＭＡ部252に提供した論理メモリは使用済みとして情報を更新しておく。使用できる論理メモリに関する情報を受け取ったＤＭＡ部252は、主記憶部201にある論理メモリを転送先としてセットして、ＤＭＡ転送によりデータを転送する(1510,1511)。このとき、一次記憶部255にすでにあるヘッダ部からヘッダの情報を論理メモリへ転送してもよいし、新たに読み取ったデータ部から論理メモリへ転送をしてもよい。
【００５４】
パケット１のデータをすべて論理メモリへ転送を行ったＤＭＡ部252は、まだ受信データが残っているか無線通信部206からのバスの応答を確認する。受信データが残っている場合には、パケット２，３とすべての受信データを論理メモリへ格納するまで上記の処理1503から処理1511を繰り返す。なお、ステップ1503で全パケットの総和のデータサイズが通信制御部223より通知されている場合は、無線通信部206からのバスの応答確認を不要にできる。この場合は、無線通信部206から転送されたデータが、通知された総和のデータサイズに達するまで、処理1503から処理1511を繰り返してデータを転送すればよい。すべてのパケットを論理メモリに格納したら、ＤＭＡ部252は通信制御部223に割り込み信号をアサートすることにより（1512）、データ転送の終了を通知する。データ転送の終了を通知された通信制御部223は、ＤＭＡ部にデータ転送の終了を確認し、必要に応じ、どこの論理メモリに何番目のパケットが格納されたのかＤＭＡ部252もしくは、メモリ管理部251に問合せる（1514）。この問い合わせにより、後工程の処理に必要となる情報を獲得する（1515）。
【００５５】
次に、主制御装置102が、他機器にデータを送信する時における、ＤＭＡ転送を用いた通信制御装置250内部のデータ及び制御フローについて図15を用いて説明する。なお、通信に必要な設定等は、事前に行われているものとする。最初に主制御装置102が、送信を実行するユーザーデータを、ユーザーバッファ領域にデータをおく。そして、通信制御部223に、送信要求のための割り込み信号をアサートする(1601)。この際、通信制御部223には、ユーザーデータの置かれたアドレスとユーザーデータのサイズを合わせて通知する。送信要求を受け取った通信制御部223は、図９(c)で示したようにユーザーデータをブロック単位で区切り、さらにブロック単位で区切られたブロックデータに対し、パケット単位で分割して論理メモリに格納していく。まず、ブロック単位で切り出す位置を決定する(1602)。次に、ブロックデータから所定のサイズを論理メモリに格納するためのＤＭＡ転送に係る命令をＤＭＡ部252にセットする(1603)。所定のサイズとは、例えば使用する通信方式において、1パケットで送信可能なペイロード長である。事前に計算することについては、実施形態１で説明した。なお、このＤＭＡ部252が複数の転送命令を1度に受け付けるようになっている場合は、１度に全てのユーザーデータ分の転送ができるように命令をセットしてもよい(1612)。
【００５６】
全てのＤＭＡ転送についてセットが完了したら、ＤＭＡ部252に転送開始要求を送信する(1604)。命令を受け取ったＤＭＡ部252は、１パケットで送信可能なペイロード長を格納できるサイズの論理メモリを獲得するため、メモリ管理部251に論理メモリ獲得要求を送信する(1605)。メモリ管理部251が必要サイズを満たす論理メモリを空きリストから必要数取り出し、ＤＭＡ部252に前記論理メモリの情報を通知する(1606)。通知を受けたＤＭＡ部252は、ユーザーデータ領域から通信バッファ領域の論理メモリへ、次々とＤＭＡにより転送し、1パケット分のペイロードに相当するサイズをコピーする（1607,1608）。1パケット分のペイロードのＤＭＡ転送が終了したら、1パケット分のＤＭＡによる論理メモリへの格納が終わったことを通信制御部223に通知する(1609)。１つのブロックデータが全て論理メモリに格納されるまで、処理1605から処理1609までを継続する(1613)。１つのブロックデータの論理メモリへの終了が完了したら、１つのユーザーデータ全てが論理メモリに格納されるまで、処理1602から処理1609を継続する（1614)。そして、通信制御部223で、すべてのパケットを他機器に送れたことを確認できたら(1610)、主制御装置102へ、送信完了通知を行う(1611)。
【００５７】
以上、実施形態３について説明してきた。本実施形態ではメモリ管理とデータ転送を通信制御部223とは独立したメモリ管理部251及びＤＭＡ部252で実現した。これにより、通信制御装置250内部で発生する各種メモリコピー処理に通信制御部223の処理がとられることが無いので、通信制御部223は例えば通信ヘッダの解析・生成処理等を前記データ転送と並列に実行できる。よって、通信処理効率の向上を図ることが出来る。
【００５８】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【００５９】
以上のように、本実施形態によれば物理メモリを所定サイズの複数の論理メモリとして扱うメモリ管理を行うことにより、ハードウエア処理に向き、データの処理を容易、高速にでき、通信処理効率の向上が図れる。そして、ストリームデータを通信制御装置が直接、主記憶へ書き込むことが可能になるので処理負担が軽減できる。また、論理メモリのサイズを変更できるようにすることにより、メモリの利用率の向上を図れる。メモリの基本サイズは最小単位の定数倍にすることにより、サイズ変更時は候補サイズからの選択で済み、処理面でも最小単位の定数倍なので処理しやすくなる。
【００６０】
さらに、メモリの使用率が高くなったときは所定長の論理メモリによる管理を止めて、メモリにデータを詰めて格納することにより、通信中のメモリの不足によるパケット落ちが軽減できる。
【図１】
2013090200.tif 000003
【図２】
2013090200.tif 000004
【図３】
2013090200.tif 000005
【図４】
2013090200.tif 000006
【図５】
2013090200.tif 000007
【図６】
2013090200.tif 000008
【図７】
2013090200.tif 000009
【図８】
2013090200.tif 000010
【図９】
2013090200.tif 000011
【図１０】
2013090200.tif 000012
【図１１】
2013090200.tif 000013
【図１２】
2013090200.tif 000014
【図１３】
2013090200.tif 000015
【図１４】
2013090200.tif 000016
【図１５】
2013090200.tif 000017