(57)【特許請求の範囲】
【請求項１】
ネットワークインタフェース毎に用意されたインタフェースキューと、デバイスが有する送信キューとを有し、アプリケーションタスクに基づいて生成された低優先度パケット及びアプリケーションタスクに基づいて生成され、前記低優先度パケットよりも送信すべき優先度が高い高優先度パケットの送信順序を制御するパケット送信制御装置であって、
前記インタフェースキューは、
前記低優先度パケットを格納する第１インタフェースキューと、
前記高優先度パケットを格納し、前記第１インタフェースキューから独立した第２インタフェースキューと
を少なくとも含み、
前記送信キューは、前記第１インタフェースキューから出力された前記低優先度パケット、及び前記第２インタフェースキューから出力された前記高優先度パケットを格納可能であり、
ハードウェアからのハードウェア割り込みを処理するハードウェア割り込みハンドラから起動されるか、またはタスクの切り替えを行うタスクスケジューラの中で実行中のアプリケーションタスクの切り替えが発生した時点で起動され、実行中の前記アプリケーションタスクの優先度以上の優先度を持つインタフェースキューのパケットの書き込み処理を行うソフトウェア割り込みハンドラのみを起動するソフトウェア割り込みスケジューラを備えるパケット送信制御装置。
【請求項２】
前記ソフトウェア割り込みスケジューラは、前記優先度と、前記第１インタフェースキューへの前記低優先度パケットの格納状況及び前記第２インタフェースキューへの前記高優先度パケットの格納状況に基づいて、前記第１インタフェースキューまたは前記第２インタフェースキューの何れに対するソフトウェア割り込みハンドラを起動するかを決定し、
前記第２インタフェースキューは、前記ソフトウェア割り込みスケジューラによる前記第２インタフェースキューに対するソフトウェア割り込みに基づいて、前記高優先度パケットを前記送信キューに出力し、
前記第１インタフェースキューは、前記ソフトウェア割り込みスケジューラによって前記第１インタフェースキューに対するソフトウェア割り込みに基づいて、前記低優先度パケットを前記送信キューに出力する請求項１に記載のパケット送信制御装置。
【請求項３】
前記ソフトウェア割り込みスケジューラは、前記アプリケーションタスクに基づいて生成された前記低優先度パケット及び前記高優先度パケットの優先度を記憶し、記憶された前記優先度に基づいて、起動すべきソフトウェア割り込みハンドラを決定する請求項１に記載のパケット送信制御装置。
【請求項４】
前記送信キューの容量は、前記低優先度パケットまたは前記高優先度パケットが前記インタフェースキューから前記送信キューに格納されるまでの間に、前記ハードウェアが通信路上に送出可能なデータサイズまで削減された請求項１に記載のパケット送信制御装置。
【請求項５】
ネットワークインタフェース毎に用意されたインタフェースキューと、デバイスが有する送信キューとを有し、アプリケーションタスクに基づいて生成された低優先度パケット及びアプリケーションタスクに基づいて生成され、前記低優先度パケットよりも送信すべき優先度が高い高優先度パケットの送信順序を制御するパケット送信制御方法であって、
前記インタフェースキューは、
前記低優先度パケットを格納する第１インタフェースキューと、
前記高優先度パケットを格納する第２インタフェースキューと
を少なくとも含み、
前記送信キューが、前記第１インタフェースキューから出力された前記低優先度パケット、及び前記第２インタフェースキューから出力された前記高優先度パケットを格納するステップと、
ハードウェアからのハードウェア割り込みを処理するハードウェア割り込みハンドラから起動されるか、またはタスクの切り替えを行うタスクスケジューラの中で実行中のアプリケーションタスクの切り替えが発生した時点で起動され、実行中の前記アプリケーションタスクの優先度以上の優先度を持つインタフェースキューのパケットの書き込み処理を行うソフトウェア割り込みハンドラのみをソフトウェア割り込みスケジューラによって起動するステップと
を有するパケット送信制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、移動通信端末上のアプリケーションによって生成されたパケットの送信順序を優先度に応じて制御するパケット送信制御装置及びパケット送信制御方法に関する。
【背景技術】
【０００２】
パーソナルコンピュータ（PC）では、オンラインゲームやコンテンツアップロード/ダウンロード、プログラムアップデート、P2Pなど複数のアプリケーションによって同時に通信を行われることが多い。移動通信端末でも高機能化に伴い、近年ではウェブの閲覧中にメールの着信問い合わせが実行されるなど複数のアプリケーションが同時に通信を行う状況が増加傾向にある。
【０００３】
しかしながら、移動通信端末では伝送容量が小さいために、バックグラウンドで通信が行われるとスループットが低下して、フォアグラウンドで行われるウェブページの閲覧などの通信に大きな遅延をもたらす。そのため、複数のアプリケーションが同時に通信を行ってもユーザの操作性に影響を与えないようにするには、移動通信端末内でのパケットの優先制御が必要となる。
【０００４】
ルータなどの通信専用端末ではパケットの優先制御がハードウェアによって実現されているが、多様な用途で利用される移動通信端末では通信のプロトコルスタックがソフトウェアによって構成されることから、パケットの優先制御もソフトウェアで実現する必要がある。ソフトウェアは所望の動作をCPUによる逐次処理によって実現することから、処理の実行順序がパケットの優先順位と一致しなければパケットの優先度逆転が発生して高優先度の通信に遅延が生じる（例えば、非特許文献１）。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】H. Tokuda et al., "Priority Inversions in Real-Time Communication"，IEEE RTSS, 1989年
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述したように、移動通信端末上で複数のアプリケーションによって同時に通信を行うと、フォアグラウンドで行われる通信の遅延やスループットの悪化を招く。低優先度のパケットが先に移動通信端末の送信キューから通信路上に送出されてしまい、当該低優先度のパケットの送信が完了するまで高優先度のパケットが通信路上に送出されずに滞留するためである。
【０００７】
そこで、本発明は、このような状況に鑑みてなされたものであり、移動通信端末など、通信に関する大部分の処理をソフトウェアで実現する場合において、高優先度パケットの遅延やスループットの悪化を効果的に抑制し得るパケット送信制御装置及びパケット送信制御方法の提供を目的とする。
【課題を解決するための手段】
【０００８】
本発明の第１の特徴は、ネットワークインタフェース毎に用意されたインタフェースキュー（インタフェースキュー20）と、デバイスが有する送信キュー（送信キュー30）とを有し、アプリケーションタスク（アプリケーションタスク10H, 10M, 10L）に基づいて生成された低優先度パケット（例えば、パケットPL）及びアプリケーションタスクに基づいて生成され、前記低優先度パケットよりも送信すべき優先度が高い高優先度パケット（例えば、パケットPH）の送信順序を制御するパケット送信制御装置（パケット送信制御装置1）であって、前記インタフェースキューは、前記低優先度パケットを格納する第１インタフェースキュー（例えば、インタフェースキュー20L）と、前記高優先度パケットを格納し、前記第１インタフェースキューから独立した第２インタフェースキュー（例えばインタフェースキュー20H）とを少なくとも含み、前記送信キューは、前記第１インタフェースキューから出力された前記低優先度パケット、及び前記第２インタフェースキューから出力された前記高優先度パケットを格納可能であり、ハードウェア（通信コントローラ40）からのハードウェア割り込みを処理するハードウェア割り込みハンドラ（ハードウェア割り込みハンドラ35）またはタスクスケジューラ（タスクスケジューラ150）から呼び出され、前記インタフェースキューに対するソフトウェア割り込みハンドラ（ソフトウェア割り込みハンドラ25）を起動するソフトウェア割り込みスケジューラ（ソフトウェア割り込みスケジューラ100）を備え、前記ソフトウェア割り込みスケジューラは、前記ハードウェア割り込みハンドラまたはタスクの切り替えを行うタスクスケジューラから起動された場合に、前記優先度に基づいて、前記第１インタフェースキューまたは前記第２インタフェースキューの何れに対するソフトウェア割り込みハンドラを起動するかを決定することを要旨とする。
【０００９】
本発明の第１の特徴において、前記ソフトウェア割り込みスケジューラは、前記優先度と、前記第１インタフェースキューへの前記低優先度パケットの格納状況及び前記第２インタフェースキューへの前記高優先度パケットの格納状況に基づいて、前記第１インタフェースキューまたは前記第２インタフェースキューの何れに対するソフトウェア割り込みハンドラを起動するかを決定し、前記第２インタフェースキューは、前記ソフトウェア割り込みスケジューラによる前記第２インタフェースキューに対するソフトウェア割り込みに基づいて、前記高優先度パケットを前記送信キューに出力し、前記第１インタフェースキューは、前記ソフトウェア割り込みスケジューラによって前記第１インタフェースキューに対するソフトウェア割り込みに基づいて、前記低優先度パケットを前記送信キューに出力することが好ましい。
【００１０】
本発明の第１の特徴において、前記ソフトウェア割り込みスケジューラは、前記アプリケーションタスクに基づいて生成された前記低優先度パケット及び前記高優先度パケットの優先度を記憶し、記憶された前記優先度に基づいて、起動すべきソフトウェア割り込みハンドラを決定することが好ましい。
【００１１】
本発明の第１の特徴において、前記送信キューの容量は、前記低優先度パケットまたは前記高優先度パケットが前記インタフェースキューから前記送信キューに格納されるまでの間に、前記ハードウェアが通信路上に送出可能なデータサイズまで削減されていることが好ましい。
【００１２】
本発明の第２の特徴は、ネットワークインタフェース毎に用意されたインタフェースキューと、デバイスが有する送信キューとを有し、アプリケーションタスクに基づいて生成された低優先度パケット及びアプリケーションタスクに基づいて生成され、前記低優先度パケットよりも送信すべき優先度が高い高優先度パケットの送信順序を制御するパケット送信制御方法であって、前記インタフェースキューは、前記低優先度パケットを格納する第１インタフェースキューと、前記高優先度パケットを格納する第２インタフェースキューとを少なくとも含み、前記送信キューが、前記第１インタフェースキューから出力された前記低優先度パケット、及び前記第２インタフェースキューから出力された前記高優先度パケットを格納するステップと、ハードウェアからのハードウェア割り込みを処理するハードウェア割り込みハンドラまたはタスクの切り替えを行うタスクスケジューラからの呼び出しに基づいて、前記インタフェースキューに対するソフトウェア割り込みハンドラを起動するステップとを有し、前記ソフトウェア割り込みハンドラを起動するステップでは、前記ハードウェア割り込みハンドラまたはタスクスケジューラから起動された場合に、前記優先度に基づいて、前記第１インタフェースキューまたは前記第２インタフェースキューの何れに対するソフトウェア割り込みハンドラハンドラを起動するかを決定することを要旨とする。
【発明の効果】
【００１３】
本発明の特徴によれば、移動通信端末など、通信プロトコルに関する大部分の処理をソフトウェアによって実現する場合において、高優先度パケットの遅延やスループットの悪化を効果的に抑制し得るパケット送信制御装置及びパケット送信制御方法を提供することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施形態に係るパケット送信制御装置1の機能ブロック構成図である。
【図２】本発明の実施形態に係るパケット送信制御装置1によるパケットの送信順序の制御動作フローを示す図である。
【図３】本発明の実施形態に係る送信キュー30に空き容量がある場合におけるアプリケーションタスク10H, 10M, 10Lの動作概念を示す図である。
【図４】本発明の実施形態に係る送信キュー30に空き容量がない場合におけるソフトウェア割り込みスケジューラ100の動作概念を示す図である。
【図５】ソフトウェアによってパケットの優先制御を実現する上で課題となる“パケットの優先度と実行単位の不一致”によるパケットの優先度逆転の説明図である。
【図６】ソフトウェアによってパケットの優先制御を実現する上で課題となる“タスクと割り込みハンドラの2つの実行単位”によるパケットの優先度逆転の説明図である。
【図７】本実施形態に係るパケット送信制御装置1のように、割り込みを使用したパケットの優先制御による有効性の根拠について説明する図である。
【発明を実施するための形態】
【００１５】
次に、本発明に係るパケット送信制御装置及びパケット送信制御方法の実施形態について、図面を参照しながら説明する。なお、以下の図面の記載において、同一または類似の部分には、同一または類似の符号を付している。ただし、図面は模式的なものであり、各寸法の比率などは現実のものとは異なることに留意すべきである。
【００１６】
したがって、具体的な寸法などは以下の説明を参酌して判断すべきである。また、図面相互間においても互いの寸法の関係や比率が異なる部分が含まれ得る。
【００１７】
（１）パケット送信制御装置の機能ブロック構成
図１は、本実施形態に係るパケット送信制御装置1の機能ブロック構成図である。図１に示すように、パケット送信制御装置1は、インタフェースキュー20、ソフトウェア割り込みハンドラ25、送信キュー30、ハードウェア割り込みハンドラ35、通信コントローラ40、ソフトウェア割り込みスケジューラ100及びタスクスケジューラ150を備える。パケット送信制御装置1は、例えば、携帯電話機などの移動通信端末に実装される。パケット送信制御装置1は、パケットの優先制御を実現する。
【００１８】
パケット送信制御装置1は、アプリケーションタスク10H, 10M, 10Lに基づいて生成されたパケット（具体的には、パケットPH, PM, PL）の送信順序を制御する。本実施形態では、説明の簡略化のため当該パケットを送信すべき優先度を３段階（高・中・低）としている。
【００１９】
アプリケーションタスク10Hは、移動通信端末のソフトウェアにおいて、アプリケーション毎の処理が行われるユーザ空間とオペレーティングシステムによって共通の処理が行われるカーネル空間上で処理が実行され、高い優先度を有する。例えば、ウェブページの閲覧などユーザの操作によってフォアグラウンドで実行されているタスクが該当する。アプリケーションタスク10M及びアプリケーションタスク10Lも移動通信端末に実装されたユーザ空間とカーネル空間で動作するタスクであるが、アプリケーションタスク10Mの優先度は、アプリケーションタスク10Hよりも低い。また、アプリケーションタスク10Lの優先度は、アプリケーションタスク10Mよりも低い。アプリケーションタスク10L（またはアプリケーションタスク10M）は、例えば、ソフトウェアの更新やメールの着信問い合わせなどユーザがアプリケーションを操作しているバックグラウンドで通信を行うタスクである。
【００２０】
パケットPHは、アプリケーションタスク10Hに基づいて生成されたパケット（高優先度パケット）であり、パケットPL, PMよりも送信すべき優先度が高い。パケットPMはアプリケーションタスク10Mに基づいて生成されたパケットであり、パケットPLはアプリケーションタスク10Lに基づいて生成されたパケット（低優先度パケット）である。
【００２１】
インタフェースキュー20は、移動通信端末が備えるネットワークインタフェース（例えば、3G方式やLTE（Long Term Evolution）方式、無線LAN）毎に用意される。インタフェースキュー20は、アプリケーションタスク10H, 10M, 10Lと対応するように、インタフェースキュー20H, 20M, 20Lによって構成される。
【００２２】
すなわち、インタフェースキュー20Hはアプリケーションタスク10Hによって生成されたパケットPHを格納する。同様に、インタフェースキュー20Mはアプリケーションタスク10Mによって生成されたパケットPMを格納し、インタフェースキュー20Lはアプリケーションタスク10Lによって生成されたパケットPLを格納する。本実施形態において、インタフェースキュー20Lは、低優先度パケット（パケットPL）を格納する第１インタフェースキューを構成する。また、インタフェースキュー20Hは、高優先度パケット（パケットPH）を格納する第２インタフェースキューを構成する。
【００２３】
インタフェースキュー20H, 20M, 20Lは、他のインタフェースキューから独立しており、インタフェースキュー毎にソフトウェア割り込みハンドラ25が割り当てられる。
【００２４】
送信キュー30は、移動通信端末に搭載されているデバイス、具体的には、通信コントローラ40などのハードウェア（あるいはデバイスドライバなどのソフトウェア）が有するキュー（バッファ）である。送信キュー30は、インタフェースキュー20H, 20M, 20Lから出力されたパケットPH, PM, PLを格納することができる。送信キュー30は、送信キュー30にパケット（パケットPH, PM, PL）を格納できる空き容量が発生した場合、ハードウェア割り込みハンドラ35（Top Half）を起動する。
【００２５】
なお、送信キュー30で送信待ちにある低優先度パケットは高優先度パケットが遅延する要因となることから、送信キュー30の容量は、インタフェースキュー20H, 20M, 20Lから送信キュー30にパケットが格納されるまでの間に、通信コントローラ40が通信路上に送出可能なデータサイズまで削減することが好ましい。移動通信端末では、ソフトウェアが送信キュー30にパケットを格納するための処理速度と比べて、通信速度が大幅に遅いことが一般的であるため、送信キュー30のサイズを1パケット程度まで縮小する。ただし、送信キュー30のサイズを縮小することによって送信キュー30へのパケットの書き込み実行頻度が増大するため、タスクに比べて処理実行時のオーバヘッドの小さいソフトウェア割り込みハンドラ25によって実現することが望ましい。
【００２６】
ソフトウェア割り込みスケジューラ100は、アプリケーションタスク10H, 10M, 10Lの優先度（高・中・低）を考慮したソフトウェア割り込みスケジューリングを実行する。具体的には、ソフトウェア割り込みスケジューラ100は、アプリケーションタスク10H, 10M, 10Lに基づいて生成されたパケットPH, PM, PLの優先度を記憶し、記憶された当該優先度に基づいて、起動すべきソフトウェア割り込みハンドラ25を決定する。より具体的には、ソフトウェア割り込みスケジューラ100は、通信コントローラ40からのハードウェア割り込みを処理するハードウェア割り込みハンドラ35を実行後、及び実行中タスクの優先度が切り替わるタスクスケジューラ150内で呼び出され、インタフェースキュー20H, 20M, 20Lにパケットの蓄積があれば、送信キュー30にパケットを送出するためのソフトウェア割り込みハンドラ25（Bottom Half）を起動する。
【００２７】
より具体的には、ソフトウェア割り込みスケジューラ100は、ハードウェア割り込みハンドラハンドラあるいはタスクスケジューラから起動されると、現在実行中のアプリケーションタスクの優先度と、インタフェースキュー20H, 20M, 20Lへのパケットの格納を行ったタスクの優先度を比較し、インタフェースキュー20H, 20M, 20Lの何れに対するソフトウェア割り込みハンドラ25ハンドラを起動するかを決定する。例えば、ソフトウェア割り込みスケジューラ100は、以下のように実装できる。
【数１】
0005303593.tif 000002
【００２８】
このように、インタフェースキュー20H, 20M, 20Lへのパケット格納時に、パケットを格納したタスクの優先度をprio_high, prio_mid, prio_low として管理する。また、送信キュー30に空きが発生し、ハードウェア割り込みハンドラ35からソフトウェア割り込みスケジューラ100が起動されるか、タスクスケジューラ150の中で実行中タスクの切り替えが発生すると、ソフトウェア割り込みスケジューラ100は、実行中のタスク優先度（prio_cur）よりも高優先度のインタフェースキューのパケットの書き込み処理を行うソフトウェア割り込みハンドラ25のみを起動する。
【００２９】
すなわち、ソフトウェア割り込みスケジューラ100は、現在実行中のタスクの優先度と、インタフェースキュー20L（またはインタフェースキュー20M）へのパケットPL（パケットPM）の格納状況、及びインタフェースキュー20HへのパケットPHの格納状況に基づいて、インタフェースキュー20H, 20M, 20Lの何れに対するソフトウェア割り込みハンドラ25を起動するかを決定する。このようなソフトウェア割り込みスケジューラ100による当該優先度を考慮したスケジューリングによって、実行中のタスクより優先度の低いインタフェースキューに対応するソフトウェア割り込みハンドラ25が実行されること（優先度逆転）が防止される。
【００３０】
また、インタフェースキュー20Hは、ソフトウェア割り込みスケジューラ100によるインタフェースキュー20Hに対するソフトウェア割り込みハンドラ25の起動に基づいて、パケットPHを送信キュー30に出力する。同様に、インタフェースキュー20L（インタフェースキュー20M）は、当該ソフトウェア割り込みハンドラ25の起動に基づいて、パケットPL（パケットPM）を送信キュー30に出力する。
【００３１】
本実施形態では、実行中のタスク優先度以上の優先度を持つインタフェースキューのソフトウェア割り込みハンドラ25のみが実行されるために、実行中のタスク優先度よりも低い優先度を持つインタフェースキューのパケットは送出されない。低優先度を持つインタフェースキューのパケットは、実行中のタスクが切り替わるタスクスケジューラ150の中でソフトウェア割り込みハンドラ25が起動され、実行中のタスクが低い優先度を持つタスクに切り替わったときに低い優先度を持つインタフェースキューに対するソフトウェア割り込みハンドラ25が起動されることによって優先度順に送出される。
【００３２】
（２）パケット送信制御装置の動作
次に、上述したパケット送信制御装置1の動作について説明する。図２は、パケット送信制御装置1によるパケットの送信順序の制御動作フローを示す。
【００３３】
図２に示すように、アプリケーションタスク10H, 10M, 10Lからインタフェースキュー20H, 20M, 20Lに、パケットPH, PM, PLがそれぞれ入力される（S10）。各アプリケーションは、各インタフェースキューへのパケット入力タイミングにおいて、送信キュー30に空き容量があるか否かを判定する（S20）。
【００３４】
当該空き容量がある場合は継続して処理を行い、インタフェースキューに格納されたパケットが送信キュー30に書き込まれる（S70）。
【００３５】
図３は、送信キュー30に空き容量がある場合におけるアプリケーションタスク10H, 10M, 10Lの動作を示す。図３に示すように、例えば、パケットPHをインタフェースキュー20Hに格納した高優先度のアプリケーションタスク10HがそのままパケットPHを送信キュー30に書き込まれる。アプリケーションタスク10H, 10M, 10Lはこの順で処理の優先度が割り当てられ、送信キュー30に空き容量がある場合は、インタフェースキュー20H, 20M, 20Lにパケットが入力されたタイミングでそのまま送信キュー30に当該パケットが書き込まれるため、パケットの優先度逆転は発生しない。
【００３６】
一方、当該空き容量がない場合は、アプリケーションタスク10H, 10M, 10Lはインタフェースキュー20H, 20M, 20Lにパケットを入力するのみで送信キュー30への書き込みは行わず、送信キュー30に空き容量ができるまで待機（S30）する。
【００３７】
送信キュー30に空き容量ができた場合、通信コントローラ40がハードウェア割り込みハンドラを発生させる（S40）。発生したハードウェア割り込みをハードウェア割り込みハンドラ35が処理した後、ソフトウェア割り込みスケジューラ100が、ハードウェア割り込みハンドラ35からのソフトウェア割り込みに基づいて、インタフェースキュー20H, 20M, 20Lに対するソフトウェア割り込みハンドラ25を起動する（S60）。次いで、パケットの優先度（高・中・低）に応じてインタフェースキューに格納されたパケットが送信キュー30に書き込まれる（S70）。
【００３８】
図４は、送信キュー30に空き容量がない場合におけるソフトウェア割り込みスケジューラ100の動作概念を示す。図４に示すように、送信キュー30に空き容量がない場合、送信キュー30に空き容量ができるまで待機し、送信キュー30に空き容量ができると、通信コントローラ40からのハードウェア割り込みをハードウェア割り込みハンドラ35が処理し、処理完了後ソフトウェア割り込みスケジューラ100を起動する（図中の（１））。ソフトウェア割り込みスケジューラ100は、インタフェースキュー20Mに対するソフトウェア割り込みハンドラ25を起動（図中の（２））し、インタフェースキュー20Mに格納されていたパケットPMが送信キュー30に書き込まれる。
【００３９】
このように、インタフェースキュー20H, 20M, 20Lから送信キュー30への出力（書き込み）動作は、送信キュー30の空き状況によって異なる。ハードウェア割り込みハンドラ35及びソフトウェア割り込みハンドラ25の実行は、アプリケーションタスクの実行よりも処理の優先度が高く、高優先度のタスクが実行中であっても低優先度のインタフェースキュー（例えば、インタフェースキュー20L）から送信キュー30へのパケットの書き込みが生じ得るため、パケットの優先度逆転が発生する。本実施形態では、上述したソフトウェア割り込みスケジューラ100が、実行中のタスク優先度と、インタフェースキュー20H, 20M, 20Lへの書き込み処理を行ったタスクの優先度を比較した上で、ソフトウェア割り込みハンドラ25（インタフェースキューに対応するソフトウェア割り込みハンドラ）の起動を行うため、このようなパケットの優先度逆転が防止される。
【００４０】
（３）作用・効果
以上説明したように、パケット送信制御装置1によれば、ソフトウェア割り込みスケジューラ100は、通信コントローラ40からのハードウェア割り込みによって起動されたハードウェア割り込みハンドラ35あるいはタスクの切り替えを行うタスクスケジューラ150によって呼び出され、インタフェースキュー20H, 20M, 20Lに対するソフトウェア割り込みハンドラ25の起動を制御し、当該ソフトウェア割り込みハンドラ25によって高優先度パケットが優先してインタフェースキューから送信キュー30に書き込まれる。このため、移動通信端末など、パケットの優先制御をソフトウェアによって実現する場合でも、高優先度パケットの遅延やスループットの悪化を効果的に抑制できる。
【００４１】
より具体的には、パケット送信制御装置1によれば、パケットの優先制御をソフトウェアによって実現する場合に、“パケットの優先度と実行単位の不一致”、及び“タスクと割り込みハンドラの2つの実行単位”が要因となって発生するパケットの優先度逆転問題を解決できる。
【００４２】
図５は、“パケットの優先度と実行単位の不一致”によるパケットの優先度逆転の説明図である。ソフトウェアではタスクや割り込みハンドラの実行単位を逐次処理することで所望の動作を実現するが、「処理の実行単位」と「パケットの優先度」が一致していなければパケットの優先度逆転が発生し得る。図５の例では、インタフェースキューが優先度に区分されておらず、アプリケーションがパケットをインタフェースキューに入力するタイミングによって、低優先度パケットが高優先度パケットよりも先に送信されてしまう場合がある。一方、パケット送信制御装置1では、上述したように、ソフトウェア割り込みスケジューラ100が、実行中のタスク優先度に応じてインタフェースキュー毎のソフトウェア割り込みハンドラ25の起動を制御することによって、このような課題を解決している。
【００４３】
図６は、“タスクと割り込みハンドラの2つの実行単位”によるパケットの優先度逆転の説明図である。ソフトウェアの実行単位には、「タスク」と「割り込みハンドラ」とがあるが、「割り込みハンドラ」は、「タスク」の処理を中断して実行される。このため、図６の例では、ソフトウェア割り込みハンドラによって低優先度パケットが送信キューに書き込まれ、アプリケーションタスクが処理中の高優先度パケットよりも先に送信されてしまう場合がある。一方、パケット送信制御装置1では、上述したように、ソフトウェア割り込みスケジューラ100によるソフトウェア割り込みのスケジューリングによってソフトウェア割り込みハンドラ25の起動を制御して、送信キュー30へのパケットの書き込みを行うことによってこのような課題を解決している。
【００４４】
なお、このようなインタフェースキューから送信キューへの出力（書き込み）時に発生する優先度逆転に対し、インタフェースキューから送信キューに出力する処理をタスクとして実装し、優先度毎に分けたタスクをスケジューリングする方法が考えられる。しかしながら、移動通信端末では送信キューのサイズを１パケット程度まで削減することによって送信キューへの書き込み頻度が増大することから、タスクで実現した場合にはコンテキストスイッチのオーバヘッドによって遅延時間に大きな影響を及ぼす。
【００４５】
図７は、本実施形態に係るパケット送信制御装置1のように、割り込みを使用したパケットの優先制御による有効性の根拠について説明する図である。図７に示すように、割り込みを使用したパケットの優先制御の場合、タスクによるパケットの優先制御と比較して、起動時間が大幅に減少（108.3μsecから7.4μsec）にしていることが分かる。なお、図７に示した処理時間の測定には、CPUとしてFreescale i.MX31Lを搭載するarmadillo 500FXを用いた。
【００４６】
（４）その他の実施形態
上述したように、本発明の実施形態を通じて本発明の内容を開示したが、この開示の一部をなす論述及び図面は、本発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例及び運用技術が明らかとなる。
【００４７】
例えば、本発明の実施形態は、次のように変更することができる。上述した実施形態では、説明の簡略化のため、パケットを送信すべき優先度を３段階として説明したが、当該優先度は、４段階以上でも構わない。あるいは、当該優先度は２段階でも構わない。
【００４８】
上述した実施形態では、パケット送信制御装置1が移動通信端末に実装されるものとして説明したが、本発明の適用範囲は、移動通信端末に限られるものではなく、ソフトウェアアーキテクチャによってパケットの優先制御を実現する他の通信装置にも勿論適用することができる。
【００４９】
このように、本発明は、ここでは記載していない様々な実施の形態などを含むことは勿論である。したがって、本発明の技術的範囲は、上述の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められる。
【符号の説明】
【００５０】
1…パケット送信制御装置
10H, 10M, 10L…アプリケーションタスク
20, 20H, 20M, 20L…インタフェースキュー
25…ソフトウェア割り込みハンドラ
30…送信キュー
35…ハードウェア割り込みハンドラ
40…通信コントローラ
100…ソフトウェア割り込みスケジューラ
150…タスクスケジューラ
PH, PM, PL…パケット
【図１】
0005303593.tif 000003
【図２】
0005303593.tif 000004
【図３】
0005303593.tif 000005
【図４】
0005303593.tif 000006
【図５】
0005303593.tif 000007
【図６】
0005303593.tif 000008
【図７】
0005303593.tif 000009