(57)【特許請求の範囲】
【請求項１】
無線通信ハードウェアによって消費される電力を節約する方法であって、
伝送用パケットとともに、前記伝送用パケットに関連する、期待される応答を受信する、期待される応答時間を決定するのに使うことができるスケジューリング関連情報を受信するステップと、
前記無線通信ハードウェアを使って前記伝送用パケットを伝送するステップと、
前記伝送するステップが成功した場合、前記期待される応答時間に基づいて、前記無線通信ハードウェアの起動状態をスケジュールするステップと、
前記無線通信ハードウェアが、データを伝送しているか、または前記起動状態になるようにスケジュールされていない限り、前記無線通信ハードウェアを居眠り状態にするステップとを含み、前記起動状態をスケジュールする前記ステップは、タイマアレイにスケジューリング情報を入力するステップを含むことを特徴とする方法。
【請求項２】
前記スケジュールするステップは、
前記期待される応答時間および安全マージンに基づくタイマ値を決定するステップと、
前記タイマ値が、前記タイマアレイを超過しない場合、タイマ索引を決定するステップであって、前記タイマ索引は、現在のタイマ索引および前記タイマアレイの精度によって分割される前記タイマ値に基づくステップと、
前記タイマ索引が、前記タイマアレイの最大索引より大きい場合、前記タイマ索引を調整するステップと、
前記タイマアレイ中で、前記タイマ索引のところに前記スケジューリング情報を入力するステップとをさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
タイマアレイを維持するステップと、
前記タイマアレイのエントリを処理するステップと、
前記タイマアレイの前記処理されるエントリが、前記無線通信ハードウェアが前記起動状態になることを示す場合、前記無線通信ハードウェアを前記起動状態にするステップとをさらに含むことを特徴とする請求項１に記載の方法。
【請求項４】
ウェイクアップイベントが原因で前記無線通信ハードウェアが前記起動状態になることを前記タイマアレイの前記処理されるエントリが示す場合、前記ウェイクアップイベントに基づいて前記無線通信ハードウェアの前記起動状態をスケジュールするステップをさらに含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記起動状態中に受信されると期待される伝送が受信された場合、前記無線通信ハードウェアを居眠り状態にするステップをさらに含むことを特徴とする請求項３に記載の方法。
【請求項６】
無線通信ハードウェアによって消費される電力を節約するコンピュータ実行可能命令を有するコンピュータ可読記録媒体であって、該コンピュータ実行可能命令は、
伝送用パケットとともに、前記伝送用パケットに関連する、期待される応答を受信する、期待される応答時間を決定するのに使うことができるスケジューリング関連情報を受信する命令と、
前記無線通信ハードウェアを使って前記伝送用パケットを伝送する命令と、
前記伝送するステップが成功した場合、前記期待される応答時間に基づいて、前記無線通信ハードウェアの起動状態をスケジュールする命令と、
前記無線通信ハードウェアが、データを伝送しているか、または前記起動状態になるようにスケジュールされていない限り、前記無線通信ハードウェアを居眠り状態にする命令と
を備え、前記起動状態をスケジュールする命令は、タイマアレイにスケジューリング情報を入力する命令を含むことを特徴とするコンピュータ可読記録媒体。
【請求項７】
前記スケジュールするコンピュータ実行可能命令は、
前記期待される応答時間および安全マージンに基づくタイマ値を決定する命令と、
前記タイマ値が前記タイマアレイを超過しない場合、現在のタイマ索引および前記タイマアレイの精度によって分割される前記タイマ値に基づくタイマ索引を決定する命令と、
前記タイマ索引が、前記タイマアレイの最大索引より大きい場合、前記タイマ索引を調整えする命令と、
前記タイマアレイ中の、前記タイマ索引のところに前記スケジューリング情報を入力する命令をさらに含むことを特徴とする請求項６に記載のコンピュータ可読記録媒体。
【請求項８】
タイマアレイを維持する命令と、
前記タイマアレイのエントリを処理する命令と、
前記タイマアレイの前記処理されるエントリが、前記無線通信ハードウェアが前記起動状態になることを示す場合、前記無線通信ハードウェアを前記起動状態にする命令と
をさらに含むことを特徴とする請求項６に記載のコンピュータ可読記録媒体。
【請求項９】
ウェイクアップイベントが原因で前記無線通信ハードウェアが前記起動状態になることを前記タイマアレイの前記処理されるエントリが示す場合、前記ウェイクアップイベントに基づいて前記無線通信ハードウェアの前記起動状態をスケジュールする命令をさらに含むことを特徴とする請求項８に記載のコンピュータ可読記録媒体。
【請求項１０】
前記起動状態中に受信されると期待される伝送が受信された場合、前記無線通信ハードウェアを居眠り状態にする命令をさらに含むことを特徴とする請求項８に記載のコンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して無線通信技術に関し、より詳細には、効率的な無線通信を維持しながら無線通信デバイスの電力消費を低減するシステムおよび方法に関する。
【背景技術】
【０００２】
無線通信がより一般的になるのに従って、多くの電子デバイス、特にモバイルデバイスが、無線通信用ハードウェアインターフェイスを提供している。しかし、このような無線通信ハードウェアはしばしば、多すぎる程の量の電力を消費し、モバイルデバイスは頻繁に充電することが必要になる。たとえば、一部のモバイルデバイスのバッテリ寿命は、無線インターフェイスを使用すると、半減する場合がある。概して、無線通信ハードウェアの電力消費の低下を対象とした取組みは、ハードウェアをより効率的にすることを目指し、または無線ハードウェアが全出力状態にある時間を最小限にすることを目指してきた。
【０００３】
無線通信ハードウェアは、モバイルデバイスが有線接続を介して通信するのとほとんど同じように、デバイスが無線によって通信することを可能にし得る。したがって、たとえばｅメールアプリケーション、ウェブブラウザアプリケーションなど、より上位レベルの通信アプリケーションは、有線通信を使うときと同じように無線通信を使うことができる。しかし、無線通信ハードウェアとより直接インターフェイスをとるデバイスドライバおよび他のソフトウェアは、無線通信と有線通信の間の違いをなす、無線特有の機能を提供し得る。部分的に、このような無線特有の機能は、特に無線通信を容易にするように設計された、予め定義された標準に基づき得る。他の無線特有機能は、無線信号強度を監視し調整する能力、場所固有の情報を提供し使用する能力、および電源節約を提供する能力を含み得る。
【０００４】
データを伝送するとき、より上位レベルの通信アプリケーションは、無線通信が使われているか、それとも有線通信が使われているかを考慮せず、より下位レベルのソフトウェアにデータを提供することができる。より下位レベルのソフトウェアは次いで、無線接続を介した伝送に最適なやり方で、データを準備することができる。しばしば、より下位レベルのソフトウェアは、複数の層を備える。たとえば、「トランスポートドライバ」または「プロトコルドライバ」と呼ばれることもある１つの層は、より上位レベルのアプリケーションによって送信されるデータを、特定のネットワーク伝送プロトコルに適したパケット中に並べることができ、プロトコルによって要求されるように、パケットそれぞれにヘッダーを付与する。「中間ドライバ」と呼ばれることもあるそれ以外の層が次いで、パケットフィルタリングや複数の物理インターフェイスに対する負荷最適配分など、高レベルのデバイスドライバ機能を提供することができる。ネットワークインターフェイスハードウェア自体を制御するソフトウェアの開発を助けるために、「ミニポートドライバ」と呼ばれることもあるさらにそれ以外の層が、共通機能を抽象化することができる。このようなミニポートドライバは、ある特定の無線標準に準拠する無線インターフェイスなど、特定のインターフェイスに共通の機能を提供することができる。ミニポートドライバは、「マイクロポートドライバ」と呼ばれることもある、さらにそれ以外の層と組み合わされて、より上位レベルの通信アプリケーションによって送信されるデータを伝送するために、通信ハードウェアを物理的に制御するのに必要な制御命令を提供することができる。
【０００５】
より上位レベルの通信アプリケーションによって受信されるデータは、反対方向であることを除いて、同様の経路をたどり得る。したがって、より上位レベルの通信アプリケーションに向けられた着信データパケットは、ネットワーク通信ハードウェアによって受信することができ、ミニポート／マイクロポートドライバの組合せによって検出することができる。こうしたデータパケットは、続いて中間ドライバに、次いでトランスポートドライバに渡すことができ、トランスポートドライバは最終的に、より上位レベルの通信アプリケーションにデータストリームを提示することができる。したがって、ハードウェア特有の機能は概して、ミニポート／マイクロポートドライバ層で実装されるだけなので、無線通信ハードウェアの電力消費を低減する取組みは概して、このレベルで実装され、このレベルで推定することができる情報にのみ依拠していた。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
無線通信ハードウェアの電力消費を低減する他の取組みは、適切な通信をリッスンすることはできるが伝送することはできない効率的な「低電力」状態を作り出すなどして、ハードウェア自体に着目し、そうすることによって電力消費を低減した。こうした手法両方に伴う難点の１つは、両方とも、通信システム全体の観点から電力消費を最小限にしようとしていないことである。たとえば、無線通信ハードウェアの電力消費は、低電力状態の使用により低減することができるが、このような状態は、ハードウェアが情報を送信することも受信することもないスリープ状態ほど効率的にはなり得ない。しかし、ハードウェアは、いつ情報を受信することが必要となり得るかを知ることができないので、ハードウェアソリューション自体は、このようなスリープ状態を実装することができない。同様に、無線通信ハードウェアの電力消費は、最下位ドライバ層で導出することができる情報を監視することによって低減することができるが、このような情報は概して、今後期待される通信に関して何も示さないので、抑えることができる電力消費の量が制限される。
【課題を解決するための手段】
【０００７】
本発明の実施形態は、デバイスドライバおよび他のより下位レベルの通信ソフトウェアが、ハードウェアが不必要に全出力モードで動作する時間を最小限にするように、スケジュールを実装し、そうすることによって無線通信ハードウェアを制御することを可能にする。
【０００８】
一実施形態では、無線通信ハードウェアは、予め定義された間隔で、全出力モードで動作するように起動することができ、前の伝送に対して応答が期待されるときに起動されるようにスケジュールすることもできる。
【０００９】
別の実施形態では、トランスポートドライバ、プロトコルドライバ、または同様のプロトコル特有のソフトウェアは、ミニポートドライバ、または同様のより下位レベルのデバイスドライバに、無線通信ハードウェアが起動される時間をスケジュールするのに使うことができるラウンドトリップタイムを提供することができる。
【００１０】
さらに別の実施形態では、無線通信ハードウェアのスケジュールされた起動期間を、予め定義された時間精度で追跡するためのタイマホイール（ｔｉｍｅｒｗｈｅｅｌ）を実装するのに、タイマアレイが使われ得る。
【００１１】
本発明の追加の特徴および利点が、添付の図面を参照して進められる、例示的な実施形態の以下の詳細な説明から明らかになるであろう。
【００１２】
添付の特許請求の範囲は本発明の特徴を具体的に定義するが、本発明、ならびにその目的および利点は、以下の詳細な説明を添付の図面と併せ読むことによって最もよく理解することができよう。
【発明を実施するための最良の形態】
【００１３】
移動性が制限されないという恩恵が、モバイルコンピューティングデバイスには最も有用なので、無線通信はしばしば、モバイルコンピューティングデバイスによって使用される。残念ながら、モバイルコンピューティングデバイスは、無線通信ハードウェアによって使われる必要な電力を発することが最もできないデバイスであることが多い。さらに、モバイルコンピューティングデバイスが頻繁に使われるという性質のおかげで、無線通信ハードウェアによる低電力消費は、モバイルコンピューティングデバイスが、ネットワーク接続モードにおいても比較的長い期間動作することを可能にし、このようなデバイスを、ユーザにとってますます有用なものにする。
【００１４】
これまでの試みは、無線通信ハードウェアの電力消費を削減するために行われたが、このような試みは概して、個々のハードウェアやデバイスドライバなど、無線通信の一側面のみに着目していた。しかし、本発明の実施形態は、通信システム全体に着目することによって、無線通信ハードウェアの電力消費を削減することを目指す。したがって、より上位レベルのプロトコル特有のソフトウェアによって決定されたラウンドトリップタイムおよび同様の値は、無線通信ハードウェアが起動され得るとともに全出力状態にされ得る時間をスケジュールするために、より下位レベルのデバイスドライバに渡すことができる。このような情報に加え、規則的にスケジュールされるリッスン間隔および配信トラフィック指示メッセージ（ＤＴＩＭ）間隔も、無線通信ハードウェアが起動され得るとともに全出力状態にされ得る時間をスケジュールするのに使うことができる。無線通信ハードウェアは、全出力状態でないとき、居眠りモード、または同様の低電力状態にすることができ、その間、ハードウェアは概して、情報を送信することも受信することもできないので、最低限の電力だけが消費される。このようにして、応答性のよい接続を維持しながら、無線通信ハードウェアの全体的な電力消費が低減されることができ、モバイルデバイスのユーザが、通信速度を犠牲にすることなく、デバイスを比較的長い期間使うことを可能にする。
【００１５】
そうすることが必要なわけではないが、コンピューティングデバイスによって実行される、プログラムモジュールなどのコンピュータ実行可能命令という一般的な状況において、本発明が説明される。概して、プログラムモジュールは、特定のタスクを実施しまたは特定の抽象データタイプを実装するルーチン、プログラム、オブジェクトコンポーネント、データ構造などを含む。分散型計算機環境において、タスクは、通信ネットワークを介してリンクされるリモート処理デバイスによって実施することができる。分散型計算機環境において、プログラムモジュールは、ローカルおよびリモートコンピュータ記憶デバイスおよび／または媒体両方に置くことができる。本発明は、多くの様々なコンピューティングデバイスを、別個に、または分散型計算機環境の一部として用いても実施することができ、このようなデバイスは、可搬型デバイス、マルチプロセッサシステム、マイクロプロセッサベースのまたはプログラム可能な家電製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータなどを含み得ることを当業者は理解するであろう。
【００１６】
図１に移ると、本発明が実装され得る例示的なコンピューティングデバイス１００が示されている。コンピューティングデバイス１００は、適切なコンピューティングデバイスの一例に過ぎず、本発明の使用または機能の範囲に対するどのような限定を示唆することも意図していない。さらに、コンピューティングデバイス１００は、図１に示す周辺装置のいずれかまたはその組合せに関するどのような依存も要件も有していると解釈されるべきでない。
【００１７】
コンピュータデバイス１００のコンポーネントは、処理ユニット１２０と、システムメモリ１３０と、システムメモリなど様々なシステムコンポーネントを処理ユニット１２０に結合するシステムバス１２１とを含み得るが、それに限定されない。システムバス１２１は、様々なバスアーキテクチャのどれをも使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスなど、いくつかのタイプのバス構造のいずれでもよい。限定ではなく例として、このようなアーキテクチャは、ＩＳＡ（業界標準アーキテクチャ）バス、ＭＣＡ（マイクロチャネルアーキテクチャ）バス、ＥＩＳＡ（拡張ＩＳＡ）バス、ＶＥＳＡ（米国ビデオ電子装置規格化協会）ローカルバス、およびメザニン（Ｍｅｚｚａｎｉｎｅ）バスとしても知られるＰＣＩ（周辺装置相互接続）バスを含む。さらに、処理ユニット１２０は、１つまたは複数の物理プロセッサを含み得る。
【００１８】
コンピューティングデバイス１００は通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピューティングデバイス１００によってアクセスすることができるとともに揮発性媒体および不揮発性媒体、取外し可能媒体および固定式媒体両方を含む、市販されているどの媒体でもよい。限定ではなく例として、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含み得る。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を格納するためのどの方法でも技術でも実施される揮発性および不揮発性の、取外し可能媒体および固定式媒体を含む。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（デジタル多用途ディスク）または他の光学ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、あるいは、所望の情報を格納するのに使うことができるとともにコンピューティングデバイス１００によってアクセスすることができる他のどの媒体も含むが、それに限定されない。通信媒体は一般に、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを、変調データ信号、たとえば搬送波や他の移送機構として具体化し、どの情報配信媒体も含む。「変調データ信号」という用語は、信号中の情報を符号化するようなやり方で設定されまたは変更される信号特性の１つまたは複数を有する信号を意味する。限定ではなく例として、通信媒体は、有線ネットワークや直接有線接続などの有線媒体、ならびに音響、ＲＦ、赤外線、および他の無線媒体などの無線媒体を含む。上記のどの組合せも、やはりコンピュータ可読媒体の範囲に含まれるべきである。
【００１９】
システムメモリ１３０は、コンピュータ記憶媒体を、ＲＯＭ（読出し専用メモリ）１３１およびＲＡＭ（ランダムアクセスメモリ）１３２など、揮発性および／または不揮発性メモリの形で含む。ＢＩＯＳ（基本入出力システム）１３３は、たとえば起動中にコンピューティングデバイス１００内部の要素間での情報転送を助ける基本ルーチンを含み、通常はＲＯＭ１３１に格納される。ＲＡＭ１３２は一般に、処理ユニット１２０に対してただちにアクセス可能な、かつ／または処理ユニット１２０によって現在操作されているデータおよび／またはプログラムモジュールを含む。限定ではなく例として、図１では、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７を示す。
【００２０】
コンピューティングデバイス１００は、他の取外し可能／固定式、揮発性／不揮発性コンピュータ記憶媒体を含むこともできる。単なる例として、図１は、固定式不揮発性磁気媒体からの読出しまたはそこへの書込みを行うハードディスクドライブ１４１、取外し可能な不揮発性磁気ディスク１５２からの読出しまたはそこへの書込みを行う磁気ディスクドライブ１５１、および、ＣＤ  ＲＯＭや他の光学媒体など取外し可能な不揮発性光ディスク１５６からの読出しまたはそこへの書込みを行う光ディスクドライブ１５５を示す。例示的な動作環境で使うことができる、他の取外し可能／固定式、揮発性／不揮発性コンピュータ記憶媒体は、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、固体ＲＡＭ、固体ＲＯＭなどを含むが、それに限定されない。ハードディスクドライブ１４１は通常、インターフェイス１４０などの固定式メモリインターフェイスによって、システムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は通常、インターフェイス１５０などの取外し可能メモリインターフェイスによって、システムバス１２１に接続される。
【００２１】
上述し、かつ図１に示すディスクドライブおよびそれに関連するコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピューティングデバイス１００のための他のデータの格納を可能にする。図１では、たとえば、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７を格納するものとして示されている。こうしたコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７と同じでも、異なってもよいことに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７は、少なくとも異なるものであることを示すために、ここでは異なる番号が与えられている。
【００２２】
ユーザは、キーボード１６２、およびマウス、トラックボール、またはタッチパッドと一般に呼ばれるポインティングデバイス１６１を介して、コマンドおよび情報をコンピューティングデバイス１００に入力することができる。他の入力デバイス（図示せず）は、マイクロホン、ジョイスティック、ゲーム用パッド、衛星パラボラアンテナ、スキャナなどを含み得る。こうしたおよび他の入力デバイスはしばしば、システムバスに結合されるユーザ入力インターフェイス１６０を介して処理ユニット１２０に接続されるが、たとえば並列ポート、ゲームポート、ＵＳＢ（ユニバーサルシリアルバス）など、他のインターフェイスおよびバス構造によって接続することもできる。モニタ１９１または他のタイプの表示デバイスも、ビデオインターフェイス１９０などのインターフェイスを介してシステムバス１２１に接続される。モニタに加え、コンピュータは、出力周辺インターフェイス１９５を介して接続することができるスピーカ１９７およびプリンタ１９６など、他の周辺出力デバイスも含み得る。
【００２３】
コンピューティングデバイス１００は、１つまたは複数のリモートコンピュータへの論理接続を用いて、ネットワーク接続環境において動作することができる。図１は、リモートコンピューティングデバイス１８０への無線ネットワーク接続１７５を示す。無線ネットワーク接続１７５は、無線ローカルエリアネットワーク（ＷＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、イーサネット（登録商標）プロトコルに準拠するネットワーク、あるいはインターネットまたはワールドワイドウェブの要素を含む他の論理的または物理的無線ネットワークを含む異なるタイプの様々な無線ネットワークおよび無線ネットワーク接続のいずれでもよい。同様に、リモートコンピューティングデバイス１８０は、コンピューティングデバイス１００と同様の別のコンピューティングデバイスでもよく、上述したコンピューティングデバイス１００の要素の一部または全部を有することができる無線基地局でも、他の無線アクセスポイントでもよい。
【００２４】
ネットワーク環境において使われる場合、コンピューティングデバイス１００は、無線ネットワークインターフェイス１７０、および無線ハードウェア１７１など、ネットワークインターフェイスまたはアダプタを介して、無線ネットワーク接続１７５に接続される。無線ネットワークインターフェイス１７０は、デバイスドライバ、プロトコルスタックなどを含むソフトウェアコンポーネントおよびアプリケーションのどの集合体でもよい。無線ネットワークインターフェイスは、後で詳しく説明するような、階層ソフトウェアアーキテクチャを実装することもできる。無線ハードウェア１７１は、スタンドアロン型ユニットでもよく、いくつかのプロトコルのいずれかに準拠する拡張カードなどとして、コンピューティングデバイス１００に統合することもできる。ネットワーク接続環境において、コンピューティングデバイス１００に関連して示したプログラムモジュール、またはその一部分は、リモートメモリ記憶デバイスに格納することができる。図示したネットワーク接続は例示であり、コンピュータの間の通信リンクを確立する他の手段も使うことができることが理解されよう。
【００２５】
以下の説明において、特に指定のない限り、作用および１つまたは複数のコンピューティングデバイスによって実施される動作の象徴的な表現を参照して本発明が説明される。そのようなものとして、このような作用および動作は、コンピュータで実行されるものとみなされる場合があり、構造化された形でデータを表す電気信号を扱うコンピューティングデバイスの処理ユニットによる操作を含むことが理解されよう。この処理はデータを変換しまたはコンピューティングデバイスのメモリシステム内の場所に保持し、メモリシステムは、当業者によく理解されたやり方でコンピューティングデバイスの動作を再設定しまたは変更する。データが保持されるデータ構造は、データの形式によって定義される特定の特性を有するメモリの物理的な場所である。ただし、本発明は、上記の状況で説明されているが、限定を意図するものではなく、これ以降説明される様々な作用および動作はハードウェアでも実装することができることを、当業者は理解するであろう。
【００２６】
図２に移ると、本発明の実施形態によって企図される一通信アーキテクチャを示す階層図が示されている。通信アーキテクチャ２００の最上位レベルには、無線ネットワーク１７５に渡って伝送されているデータの最終的な消費者およびプロデューサとなり得る通信アプリケーション２０５がある。このようなものとして、ほとんどのデータ伝送は、通信アプリケーション２０５から発生し、ほとんどのデータ受信は、通信アプリケーション２０５で終了する。したがって、通信アプリケーション２０５が、通信アーキテクチャ２００の最上位に示されている。通信アプリケーション２０５は、ウェブブラウザ、ｅメールクライアント、ネットワークユーティリティ、またはネットワーク通信に依拠し、またはそれを使用することができる同様のアプリケーションを含み得る。
【００２７】
通信アーキテクチャ２００において、通信アプリケーション２０５の下のレベルは、トランスポートドライバ２１０となり得る。一部の通信アーキテクチャでは、トランスポートドライバは、プロトコルドライバと同じ層で概念化され、他のアーキテクチャは、この２つのドライバを切り離す場合もある。概して、トランスポートおよび／またはプロトコルドライバ２１０は、たとえば、ユビキタス伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）スタックやインターネットワークパケット交換／シーケンスパケット交換（ＩＰＸ／ＳＰＸ）スタックなどのプロトコルスタックを実装することができる。トランスポートドライバおよびプロトコルドライバは、パケットを割り振り、適切なパケットヘッダー情報を付与し、送信アプリケーションからパケットにデータをコピーし、より下位レベルにパケットを送信することができる。トランスポートドライバおよびプロトコルドライバは、次の下位レベルのドライバから着信パケットを受信し、受信したデータを適切なクライアントアプリケーションに転送するためのインターフェイスを提供することもできる。
【００２８】
通信アーキテクチャ２００において、トランスポートドライバおよびプロトコルドライバ２１０の下には、中間ドライバ２１５が存在し得る。中間ドライバは、異なるネットワーク媒体の間の変換、パケットのフィルタリング、および複数のネットワークインターフェイスに及ぶパケット伝送の平衡を含み得る、高レベルのデバイスドライバ機能を提供することができる。たとえば、中間ドライバは、通信アプリケーション２０５に、層２１０で互換プロトコルを使用させることができ、次いで、コンピューティングデバイス１００が実際に接続されている特定のネットワークが、異なるプロトコルを使用していても、層２１０によって生成されたパケットを、そのネットワーク上での伝送に適したパケットに変換することができる。同様に、中間ドライバは、パケットスケジューラ機能を実施するなどして、パケットをフィルタリングすることができる。パケットスケジューラは、パケット中の優先順位情報を読み出すことができ、次いで、各パケットを、その優先順位に基づいて送信または受信のためにスケジュールすることができる。
【００２９】
中間ドライバ層２１５は、図２に示すように、ミニポートドライバ２２０とデータを交換することができる。ミニポートドライバ２２０は、独自に、またはマイクロポートドライバ２２１と組み合わされて、通信アーキテクチャ２００の最下位ソフトウェア層として振る舞うことができる。一部のアーキテクチャでは、ミニポートドライバが、無線通信ハードウェア１７１など、物理ネットワークハードウェアによって必要とされるハードウェア特有の機能をすべて実装する。他のアーキテクチャでは、ミニポートドライバは、あらゆる無線通信デバイスなど、特定のタイプの通信デバイスに共通するであろう機能に着目するのではなく、何らかのデバイス特有の機能を抽象化することができる。このような場合、マイクロポート２２１は、この特定のデバイスを制御するための、デバイス特有の機能を提供し得る。簡略化のために、図２の通信アーキテクチャ２００は、ミニポート２２０およびマイクロポート２２１を、デバイス特有の制御を提供し得る単一の層として示す。ミニポート２２０、またはマイクロポート２２１と組み合わされたミニポート２２０によって提供される機能は、伝送のための無線通信ハードウェア１７１へのパケットの転送、無線通信ハードウェアからの受信パケットの取得、割込み操作、および同様のハードウェア制御動作を含み得る。
【００３０】
上述した通信アーキテクチャ２００に類似した一標準化通信アーキテクチャが、ネットワークドライバインターフェイス仕様（ＮＤＩＳ）として公知である。ＮＤＩＳは、図２に示す様々な層の間の通信経路を定義することが、当業者には公知であろう。したがって、たとえば、ＮＤＩＳは、中間ドライバがサポートを提供することができる機能を定義し、呼を使用するどのトランスポートドライバも、中間ドライバの機能を使用することができるようなやり方で、そうした呼を標準化する。
【００３１】
本発明の実施形態によって企図される１つのミニポートドライバ２２０は、無線通信ハードウェア１７１用の電源節約スケジューリングを提供する。このようなスケジューリングは、無線通信ハードウェアが所定の間隔だけ起動モードに留まることを可能にし、反対に、電力を節約するために、無線通信ハードウェアを居眠り（ｄｏｚｅ）モードで動作させることもできる。個々の無線ハードウェアデバイスは、様々な電力モードを実装することができるが、本発明の実施形態によって企図される起動モードは、デバイスが情報を送信し、かつ／または受信することができる無線ハードウェアデバイスのどの電力モードにも適用することができる。したがって、たとえば、一部の無線ハードウェアデバイスは、いくつかの電力モードのみを実装することができ、起動モードは、全出力モードにのみなり得る。しかし、他の無線ハードウェアデバイスは、一連の様々な電力モードを実装することができ、起動モードは、必ずしも全出力モードを伴い得るわけではなく、このようなより低電力のモードが、情報を確実に送信し受信するのに十分であるならば、同様により低電力のどのモードにもなり得る。同様に、本発明の実施形態によって企図される居眠りモードは、電源を切ることによって、あるいは情報を送信し、かつ／または受信する能力はサスペンドするが送信または受信を効率的にレジュームする能力は依然として保持することによって、デバイスが電力を節約している、無線ハードウェアデバイスのどの電力モードにも適用することができる。したがって、たとえば、一部の無線ハードウェアデバイスは、いくつかの電力モードのみを実装することができ、居眠りモードは、無電力モードにのみなり得る。しかし、他の無線ハードウェアデバイスは、一連の様々な電力モードを実装することができ、居眠りモードは、必ずしも無電力モードを必要とするわけではなく、情報を送信し、かつ／または受信する能力をサスペンドすることによって電力を節約するように設計されるどの電力モードにもなり得る。一連の様々な電力モードを実装するデバイスにとって、様々な低電力モードの間の違いの１つは、デバイスが全出力モードに回復され得る際の速度であり得る。このような場合、本発明の実施形態は、デバイスをできるだけ速く全出力モードに復元させる電源節約モードの使用を企図する。ただし、上述したように、本明細書で使用する居眠りモードは、デバイスが情報を送信し、かつ／または受信する能力をサスペンドすることによって電力を節約している、無線ハードウェアデバイスのどの電力モードにも適用することができる。
【００３２】
無線通信ハードウェア１７１用の効率的なスケジュールを実装するのに使うことができる情報をミニポートドライバ２２０に提供するために、本発明の一実施形態は、ラウンドトリップタイムなどの情報が、プロトコルおよび／またはトランスポートドライバ２１０、あるいは同様のより上位レベルの通信ソフトウェアによって決定することができ、ミニポートドライバ２２０に渡すことができることを企図する。ラウンドトリップタイムおよび同様の情報が入手可能でない場合、デフォルト値が使われ得る。デフォルト値は、スケジューリングが通信性能に与える、観察される影響に、ミニポートドライバ２２０によって実装されるスケジューリングが適応することを可能にするように、さらに設定可能であり得る。
【００３３】
情報は、公知のどのメッセージ引渡しアルゴリズムによっても、プロトコルおよび／またはトランスポートドライバ２１０から、ミニポートドライバ２２０に渡すことができる。たとえば、標準化ＮＤＩＳアーキテクチャは、ラウンドトリップタイムなどのスケジューリング情報を、プロトコルおよび／またはトランスポートドライバ２１０からミニポートドライバ２２０に渡す特定のインターフェイスを提供するように拡張することができる。無線通信ハードウェア１７１およびミニポートドライバ２２０が、公知のＩＥＥＥ８０２．１１無線通信標準を用いて動作するシステムでは、スケジューリング情報は、ミニポートドライバに送信される各ＭＡＣサービスデータ単位（ＭＳＤＵ）を有する帯域外（ＯＯＢ）データとして渡すことができる。
【００３４】
上述したように、スケジューリング情報は、ミニポートドライバ２２０によって、無線通信ハードウェア１７１用の電源節約スケジュールを実装するのに使うことができる。本発明の実施形態によって企図される電源節約スケジュールの１つは、無線通信ハードウェアが、ＤＴＩＭメッセージを受信するために、予め定義された間隔で起動されることを要求する。ＤＴＩＭメッセージは、ブロードキャストまたはマルチキャストメッセージが、無線基地局などのアクセスポイントでハードウェア１７１の起動を待機しているという指示を無線通信ハードウェア１７１に与えることができることが、当業者には公知であろう。ＤＴＩＭメッセージの間の間隔は、たとえば、ハードウェア１７１が通信の際に用いる無線通信ハードウェア１７１と無線アクセスポイントの間のハンドシェイク手順により決定することができる。あるいは、ＤＴＩＭ間隔は、ユーザによって手作業で決定することもでき、所定のデフォルト値でもよい。ＤＴＩＭ間隔は、無線ネットワークにおける変動を調整するように変化してもよい。電源節約スケジューリングを提供するために、ミニポートドライバ２２０は、無線通信ハードウェア１７１を起動する先の時間を指定するとともに、ハードウェア１７１を起動する理由がＤＴＩＭメッセージを受信するためであったことを示すために、後で詳しく説明するような機能を使うことができる。
【００３５】
上述したやり方と同様にして、本発明の実施形態によって企図される追加電源節約スケジュールは、具体的には、無線通信ハードウェア１７１を使ってコンピューティングデバイス１００にアドレス指定することができるメッセージを受信するために、予め定義された間隔で無線通信ハードウェアが起動されることを要求する。このような予め定義された間隔は、「リッスン間隔」と呼ぶことができることが当業者には公知であろう。ＤＴＩＭ間隔と同様に、リッスン間隔は、たとえば、ハードウェア１７１が通信の際に用いる無線通信ハードウェア１７１と無線アクセスポイントの間のハンドシェイク手順により決定することができる。同様に、リッスン間隔は、ユーザによって手作業で決定することもでき、所定のデフォルト値でもよく、無線ネットワークにおける変動を調整するように変化してもよい。電源節約スケジューリングを提供するために、ミニポートドライバ２２０は、無線通信ハードウェア１７１を起動する先の時間を指定するとともに、ハードウェア１７１を起動する理由がリッスン間隔に起因するものであったことを示すために、後で詳しく説明するような機能を使うことができる。
【００３６】
上述したＤＴＩＭおよびリッスン間隔などの繰返し間隔での無線通信ハードウェアの起動は、一定量の電源節約をもたらし得るが、本発明の実施形態によって企図されるさらなる電源節約スケジュールは、以前伝送されたデータに対する期待される応答を受信するために、無線通信ハードウェアが時間通りに起動されることを要求する。上述したように、ラウンドトリップタイムなどの情報は、プロトコルおよび／またはトランスポートドライバ２１０、あるいは同様のより上位レベルの通信ソフトウェアによって決定することができ、ミニポートドライバ２２０に渡すことができる。このような情報は次いで、たとえば、ラウンドトリップタイムの持続期間のうち一定の期間、無線通信ハードウェアを居眠りモードにするなどして、電源節約スケジュールを設定するのに使うことができる。
【００３７】
図３に移ると、本発明の実施形態によって企図される電源節約スケジュールを設定するアルゴリズムを全体的に示すアルゴリズム３００が示されている。これ以降の説明は、ミニポートドライバ２２０によるアルゴリズム３００の実装に言及するが、通信アーキテクチャ２００に準拠しなくてよいドライバを含む他のソフトウェアドライバも、同様にアルゴリズム３００を実装することができる。
【００３８】
図に示すように、アルゴリズム３００は、ステップ３０５で始まることができ、ここで、無線通信ハードウェア１７１によって伝送されるデータを受信したミニポートドライバ２２０は、ＭＳＤＵの伝送をスケジュールすることができる。ＭＳＤＵとは、当業者には公知であるように、一連の１つまたは複数のＭＡＣプロトコルデータ単位（ＭＰＤＵ）でよい。無線通信ハードウェア１７１は次いで、スケジュールされた時間に、ＭＳＤＵの伝送を試みることができる。ステップ３１０に示すように、ミニポートドライバ２２０は、ＭＳＤＵの伝送状況を示し得る、無線通信ハードウェア１７１からの応答を待機することができる。ステップ３１５で、無線通信ハードウェア１７１が、伝送が成功しなかったことを示す場合、実行は、少なくとも１つのＭＳＤＵが伝送されていないことを示し得るステップ３２５にスキップすることができ、実行は、ステップ３０５に戻って、後でＭＳＤＵの伝送を試みることができる。しかし、ステップ３１５で、無線通信ハードウェア１７１が、伝送が成功したことを示す場合、ミニポートドライバ２２０は、たとえば、ＭＳＤＵに関連づけられたラウンドトリップタイムに基づいて、ハードウェア１７１に対して次のウェイクアップ時間をスケジュールすることができる。
【００３９】
上で説明したように、ラウンドトリップタイムなどの情報は、ＭＳＤＵと一緒にＯＯＢ情報として、トランスポート／プロトコルドライバ２１０からミニポートドライバ２２０に渡すことができる。このような情報は、ミニポートドライバ２２０によって、次のウェイクアップ時間をスケジュールするのに使うことができる。たとえば、ラウンドトリップタイムが、１００ｍｓであると指示された場合、ミニポートドライバ２２０は、現在伝送されているＭＳＤＵへの応答が届いたときに無線通信ハードウェア１７１が起動していることができるように、次のウェイクアップ時間を１００ｍｓ以内にスケジュールすることができる。あるいは、電源節約スケジュールの確立に使われるために、単なるラウンドトリップタイム以外の情報が、ミニポートドライバ２２０に渡され得る。たとえば、ネットワーク輻輳、ハードウェア状況、および類似情報の指示も、次のウェイクアップ時間を設定するか、またはラウンドトリップタイムに基づいて次のウェイクアップ時間を調整するのに使うことができる。
【００４０】
ミニポートドライバ２２０は、後で詳しく説明するような、タイマアレイまたは同様の構造にスケジューリング情報を入れることができる機能により、次のウェイクアップ時間をスケジュールすることができる。ミニポートドライバ２２０が、ステップ３２０で示すように、次のウェイクアップ時間のスケジューリングを完了すると、ミニポートドライバは、ステップ３２５で、伝送を要求するそれ以外のＭＳＤＵがあるかどうか調べることができる。伝送すべきＭＳＤＵがさらにある場合、実行は、ステップ３０５に戻ることができ、ミニポートドライバ２２０は、上述したように後続ＭＳＤＵの伝送を試みることができる。しかし、伝送されるＭＳＤＵがそれ以上ない場合、ミニポートドライバ２２０は、ステップ３３０で示すように、無線通信ハードウェア１７１を居眠りモードに設定することができる。
【００４１】
図４に移ると、本発明の実施形態によって企図される次のウェイクアップ時間をスケジュールするアルゴリズム４００が示されている。アルゴリズム４００は、タイマアレイ中の適切なエントリを決定し、後でさらに詳しく説明する機構を用いるなどして、無線通信ハードウェア１７１を起動するのに使うことができる情報を、そのエントリに格納するように動作し得る。当業者には公知であるように、タイマアレイとは、各後続エントリが、予め定義された時間間隔でアレイから読み出されるアレイデータ構造でよい。したがって、確定した期間の後にアクセスされることを意図している情報は、アレイ中で、現在のエントリから十分に離れている、ある特定のアレイエントリに格納することができる。やはり当業者には公知であるように、タイマアレイは、無限ではない。アレイの終端に達すると、読み出される次のエントリは概して、アレイが長期間使われるようにし得るように、第１のエントリとなる。ただし、エントリがアクセスされる順序は、最後でループバックするので、タイマアレイは、一定の時間枠内でのみイベントをスケジュールすることができ、比較的離れているイベントは、後の時間までスケジュールすることができない。
【００４２】
アルゴリズム４００は、ミニポートドライバ２２０、または他のソフトウェアが、タイマアレイに電源節約スケジューリング情報を入力し得るようにするための一機構を提示する。初期ステップ４０５が、「タイマ値」を決定することができ、この値は、上述した方法の１つによって、適切な安全マージンを考慮して決定される次のウェイクアップ時間でよい。概して、無線通信ハードウェアにとって、情報を受信した後に起動することは有用でないので、電源節約スケジューリング情報は、予想されるイベントに先立って、ハードウェアを起動しようとし得る。さらに、スケジューリング手順の実施において正確な経過時間を判定することは現実的でない場合があるので、安全マージンは、このようなどの時間変動も明らかにするのに使うことができる。たとえば、ラウンドトリップタイムが、１００ｍｓであると指示された場合、次のウェイクアップ時間は、上述した方法を用いて、パケットが無線通信ハードウェアによって伝送されたときから１００ｍｓであると決定することができる。ただし、次のウェイクアップ時間を設定するアルゴリズム、たとえばアルゴリズム４００は、実行に１０〜１５ｍｓを必要とし得る。したがって、無線通信ハードウェアは、スケジューリングアルゴリズムの完了の１００ｍｓ後に起動された場合、おそらく１０〜１５ｍｓよりはるかに遅れて起動されており、期待される応答をおそらく受信できていない。
【００４３】
スケジューリング手順の実施において正確な経過時間を監視しないようにするために、ステップ４０５で決定したタイマ値は、適切な安全マージンを含み得る。たとえば、次のウェイクアップ時間が、上記のように、１００ｍｓであると指示されており、スケジューリングアルゴリズムが、実行に１０〜１５ｍｓを必要とし得る場合、２０ｍｓの安全マージンが使われ得る。したがって、１００ｍｓという次のウェイクアップ時間が与えられると、タイマ値は、現時点から８０ｍｓであると決定することができる。様々なアルゴリズムを実行するのにかかる時間を含むので、無線通信ハードウェアは、おそらくパケットを伝送してから９０〜９５ｍｓ後に起動することになり、最初の伝送の１００ｍｓ後に届くと期待される応答を受信することができる。
【００４４】
タイマ値は、上述した方法を用いるなどしてステップ４０５で決定されると、決定したタイマ値がタイマアレイの範囲内であることを検証することができる。したがって、ステップ４１０で、タイマ値は、タイマアレイの時間長と比較することができる。タイマ値がタイマアレイの時間長を超える場合、タイマアレイは、そのタイマ値でイベントをスケジュールするのに使うことができず、アルゴリズムは、ステップ４５０で終わる。しかし、タイマ値が、タイマアレイの時間長より小さい場合、タイマ値は、ステップ４１５で、タイマアレイに適したように量子化することができる。
【００４５】
当業者には理解されるであろうが、タイマアレイは、無限ではないので、連続した時間測定値とは対照的に、不連続な時間測定値のみを提供し得る。したがって、タイマホイールの精度を使ってスケジュールされることになるどのイベントも量子化することが必要となり得る。上述したように、概して、無線通信ハードウェアにとって、情報を受信した後で起動することは有用でないので、ステップ４１５でのタイマ索引の量子化は、スケジュールされた時間より遅い時間にはスケジュールされないことを保証し得る。たとえば、タイマアレイが、２５ｍｓの精度で実装され、タイマ値が、上記のように８０ｍｓの場合、量子化されたタイマ値は、８０ｍｓのタイマ値より前の、最後のアレイエントリによって表される時間である７５ｍｓとなり得る。
【００４６】
量子化されたタイマ値が、ステップ４１５で入手されると、タイマ索引が、ステップ４２０で決定され得る。上述したように、タイマ値は、イベントがスケジュールされる、現在の時間からの持続期間を表す。したがって、上記の例において、８０ｍｓのタイマ値は、イベントが、現在の時間から８０ｍｓの間にスケジュールされることを示す。したがって、タイマ索引を決定するために、量子化されたタイマ値は、適切な索引値にコンバートすることができ、現在の時間索引に加えることができる。たとえば、タイマアレイが、２５ｍｓの精度で実装され、量子化されたタイマ値が７５ｍｓである場合、上記のように、量子化されたタイマ値は、現在の時間から３個分のアレイエントリ（すなわち、７５ｍｓ）と表すことができる。現在の時間索引、または処理されている現在のアレイエントリが、アレイエントリ６４である場合、ステップ４２０で計算されたタイマ索引は、６４＋３、すなわち６７になり得る。
【００４７】
当業者には公知であるように、ステップ４１５および４２０は、ＤＩＶ機能を用いることによって、併せて効率的に実施することができる。具体的には、タイマ値は、ＤＩＶ機能を用いて、タイマアレイの精度で分割することができ、次いで、タイマ索引を計算するために現在の時間索引に加えることができる。上記の例を用いると、ＤＩＶ機能を用いて、２５ｍｓずつに分割された８０ｍｓのタイマ値は、３という値を生じ、この値は次いで、６４である現在の時間索引に加えて、６７というタイマ索引を算出することができる。
【００４８】
タイマ索引がステップ４２０で決定されると、ステップ４２５は、決定したタイマ索引が、タイマアレイの上限より大きくならないようにすることができる。タイマ索引が、タイマアレイの上限より小さい場合、適切な情報は、ステップ４３５で、そのタイマ索引のところに格納することができるが、これについては、後で詳しく説明される。しかし、タイマ索引が、タイマアレイの上限より大きい場合、ステップ４３０は、タイマ索引を適切に調整することができる。具体的には、上述したように、タイマアレイは、アレイの最後のエントリが処理された後、処理が第１のエントリに戻るように、循環方式で処理される。したがって、タイマアレイは、静的持続期間とは対照的に、絶えず動く時間窓を表す。このような循環処理を行うために、タイマアレイにおける最大索引値より大きい絶対値をもつタイマ索引は、適正な時間に処理されるように調整することができる。たとえば、タイマアレイが、索引０から９９の番号をつけられた１００個の要素を含み、索引９９が、現在処理されている場合、処理される次の索引は０となる。
【００４９】
ステップ４３０で、タイマ索引を調整するのに使うことができる簡単な一機構が、分割アクションの残余部分を戻すことができる公知のＭＯＤ機能である。具体的には、ステップ４２０で決定したタイマ索引は、ＭＯＤ機能を用いて、タイマアレイの長さで分割することができ、その結果生じるものは、調整されたタイマ索引となり得る。たとえば、タイマアレイが、上記のように１００個の要素を有し、タイマ索引が１０２である場合、ＭＯＤ機能を用いた分割の実施は、調整されたタイマ索引であり得る２という値を生じる。エントリ９９が、現在処理されている場合、調整された２というタイマ索引は、スケジュールされたイベントが、３個分のタイマアレイエントリで、すなわち、索引エントリ９９の処理が完了した後で処理され、索引エントリ０および１が、調整された３というタイマ索引の処理に先立って処理されることを示す。９９という現在の時間索引と、１０２というタイマ索引の間の距離はしたがって、９９という現在の時間索引と、２という調整されたタイマ索引の間の距離と等価である。
【００５０】
タイマ索引が、ステップ４３０で調整されると、必要な場合、スケジューリング情報は、ステップ４３５で、適切なタイマ索引に入力することができる。上述したように、スケジュールされる多くのタイプのウェイクアップイベントが存在し得る。たとえば、ＤＴＩＭウェイクアップイベント、リッスン間隔ウェイクアップイベント、および期待される応答ウェイクアップイベントはすべて、上述したアルゴリズムを用いてスケジュールすることができる。イベントタイプの指示に加え、適切なタイマ索引は、索引によって表される時間の間、無線通信ハードウェアが起動していなければならないことも示し得る。このような指示は、ただ１ビットでよく、０は、無線通信ハードウェアが居眠りモードに留まり得ることを示すことができ、１は、ハードウェアが、起動状態にあってよいことを示すことができる。
【００５１】
当業者には理解されるように、タイマアレイは、ミニポートドライバ２２０またはより下位レベルの他の通信ソフトウェアによって維持することができるアレイの時間長が、ＤＴＩＭ間隔やリッスン間隔など、どの繰返し間隔よりも大きくなるように実装することができる。このような間隔が変化し得る限り、タイマアレイも同様に、変更された間隔に適合するように動的に修正することができる。
【００５２】
図５に移ると、本発明の実施形態によって企図される、タイマアレイの各エントリの処理を示すアルゴリズム５００が示されている。最初に、ステップ５０５で、現在のアレイエントリ値は、処理を次のアレイエントリに移すように１だけ増分することができる。上で説明したように、タイマアレイは、アレイの終端に達したときにループバックするように実装することができるので、ステップ５１０は、増分されたアレイエントリ値が、アレイの長さを超え、アレイの先頭に設定し直されるべきかどうか判定するために、検査を行うことができる。アレイエントリ値がアレイの長さを超える場合、ステップ５１０は、上述したようにＭＯＤ機能を用いて分割を実施して、増分されたアレイエントリを、再度タイマアレイの先頭に設定し直すことができる。
【００５３】
正しいアレイエントリ値が決定された後、アルゴリズム５００は、起動ビットまたはフラグを調べるなどして、無線通信ハードウェアが、ステップ５１５で起動されると想定されているかどうか、判定することができる。無線通信ハードウェアが、起動される必要がない場合、実行は、ステップ５５０にスキップすることができるが、これについては後で詳しく説明される。しかし、現在のアレイエントリでの起動ビットまたはフラグが、無線通信ハードウェアが起動している必要がないことを示す場合、アルゴリズム５００は、ステップ５２０で、ハードウェアが既に起動しているかどうか調べることができる。無線通信ハードウェアは、居眠りモードにあり、起動モードにされる必要がある場合、ステップ５２５で起動することができる。居眠りモードにない場合、実行は、ステップ５３０に続き得る。
【００５４】
無線通信ハードウェアが起動すると、アルゴリズム５００は、さらにスケジューリングが要求されるかどうか、判定することができる。上で説明したように、無線通信ハードウェアは、少なくとも３通りの原因により起動することができる。期待される応答が受信されるべきであることを示す、ラウンドトリップタイムなどの情報によって無線通信ハードウェアが起動される場合、それ以上のスケジューリングはなく、ハードウェアは、期待される応答が受信されるまで、または居眠り状態にされるまで、起動したままでいればよい。しかし、ＤＴＩＭメッセージを調べる必要があるため、またはリッスン間隔により無線通信ハードウェアが起動される場合、アルゴリズム５００は、次のＤＴＩＭメッセージ検査または次のリッスン間隔もスケジュールすることができる。というのは、両方とも、上で詳しく説明したように、所定の間隔で再発するイベントであり得るからである。
【００５５】
したがって、ステップ５３０で、無線通信ハードウェアを起動状態にするための指示が、ＤＴＩＭ間隔の満了に起因するものかどうか判定するために、検査が実施されることができる。このような検査は、ウェイクアップが、ＤＴＩＭ間隔、リッスン間隔、期待される応答、または他の何らかの原因の結果としてスケジュールされたかどうかを示すことができるウェイクアップフィールド、または現在のタイマアレイエントリと併せて維持される同様の情報ストアを調べることによって、行うことができる。ウェイクアップが、ＤＴＩＭ間隔の満了に起因してスケジュールされたと決定された場合、ステップ５３５は、図４に示し、上で詳しく説明したようなスケジューリングアルゴリズムを用いて、ＤＴＩＭ間隔に基づいて、後続ＤＴＩＭウェイクアップをスケジュールすることができる。ウェイクアップが、ＤＴＩＭ間隔の満了に起因するものではないとステップ５３０が判定した場合、実行は、ステップ５４０に進むことができ、ステップ５４０は、ウェイクアップが、リッスン間隔の満了に起因するものかどうかを調べることができる。ウェイクアップが、リッスン間隔の満了に起因してスケジュールされたと決定された場合、ステップ５４５は、図４に示し、上で詳しく説明したようなスケジューリングアルゴリズムを用いて、リッスン間隔に基づいて、後続リッスン間隔ウェイクアップをスケジュールすることができる。
【００５６】
ステップ５４０で、ウェイクアップが、リッスン間隔の満了に起因するものではないと判定された場合、実行は、ステップ５５０に進むことができ、ステップ５５０は、図３に示し、上で詳しく説明したアルゴリズムによる伝送を含む、伝送される必要があり得る、残っているＭＳＤＵを調べることができる。残っているいずれかのＭＳＤＵが、実際に伝送される必要がある場合、アルゴリズム５００は、ステップ５５５で、その伝送を待つことができる。しかし、伝送されるべきＭＳＤＵが残っていない場合、無線通信ハードウェアは、ステップ５６０で、居眠りモードにすることができ、実行は、後続タイマアレイエントリを処理するステップ５０５に戻ることができる。
【００５７】
図６ａに移ると、上述したアルゴリズムの例示的な動作が、タイムライン６１０に関して示されている。上で詳しく説明したようなタイマアレイは、ウェイクアップフラグが、現在の時間から７５ｍｓの時間にセットされることを示すことができる。したがって、無線通信ハードウェアは、期間６１１の間、居眠りモードにあることができる。現在の時間から７５ｍｓの時間のとき、無線通信ハードウェアは、起動状態を入力することができ、図に示すように、期間６１２の間、その起動状態を保つことができる。ＤＴＩＭメッセージ、リッスン間隔に関連するメッセージ、または期待される応答メッセージを含み得るデータ伝送は、時間６１３で受信することができる。このような場合、無線通信ハードウェアは、たとえば、現時点から１００ｍｓのところにある次のタイマアレイエントリまで、単に起動したままでよい。しかし、電力をより効果的に節約するために、無線通信ハードウェアは、時間６１３で起こるデータ伝送の受信を行うと直ちに、期間６１４の間、居眠りモードに戻すことができる。図６ａに示すタイムライン図からわかり得るように、無線通信ハードウェアは、居眠り状態に保たれるとともにデータ伝送を受信するのに必要とされる短時間のみ起動状態もあることによって、電力を抑えることができる。
【００５８】
しかし、いくつかの場合では、データ伝送６１３などのデータ伝送は、期待されない時間に起こる場合があり、無線通信ハードウェアは、データ伝送を受信するための起動状態にならない場合がある。このような場合、データ伝送は、基地局または同様の送信源に一時的に格納することができ、無線通信ハードウェアは、伝送の通知を受けることができ、リッスン間隔ごとに起こるルーチン検査の一部として伝送を受信することができる。図６ｂに移ると、このような状況が、タイムライン６２０に示されている。図６ｂに示すように、無線通信ハードウェアは、期間６２１の間、居眠り状態になることができ、期待される応答など、予想されるイベントのために、期間６２２の間、起動することができる。しかし、何も受信せず、無線通信ハードウェアは、電力を節約するために、期間６２３の間、居眠り状態に戻り得る。残念ながら、期待される応答は、無線通信ハードウェアが居眠り状態である時間６２４に届き得る。このような場合、期待される応答は、時間６２４で受信することはできないが、無線通信ハードウェアへの配信を待っている可能性があるどのデータも検出するための検査がリッスン間隔で行われる時間６２６など、後で受信することができる。図に示すように、たとえば、リッスン間隔検査を実施するためにハードウェアをウェイクアップする必要性をタイマアレイが示しているので、無線通信ハードウェアは、期間６２５の間、起動状態であることができる。
【００５９】
無線通信ハードウェアが、情報の伝送プロセス中であり、期待される伝送を受信するためにハードウェアが起動しているべきである期間に伝送が続く場合、ハードウェアは、起動状態に留まることができる。図６ｃに移ると、タイムライン６３０上に示すように、無線接続ハードウェアは、期待される伝送を受信するためにハードウェアが起動されているべきである、７５ｍｓのマーカなどの時間を超え得る期間６３１の間、起動しており、情報を伝送していることができる。したがって、無線通信ハードウェアは、伝送を完了していても、時間６３３で伝送を受信するために、期間６３２の間、起動したままでいることができる。したがって、図３のステップ３３０は、無線通信ハードウェアが居眠りモードにされ得ることを示し、図３のアルゴリズムは、ハードウェアが起動状態に留まることを、ステップ５２５のウェイクアップ命令が可能にするように、図５のアルゴリズムと相互運用することができる。
【００６０】
以上、本発明の原理が適用され得る多くの可能な実施形態を検討したが、図面に関連して本明細書において説明された実施形態は、例示のみを意図しており、本発明の範囲を限定するものととられるべきではないことが理解されるべきである。たとえば、例示された実施形態の、ソフトウェアとして示した要素は、ハードウェアとして実装されることもでき、その逆も可能であり、あるいは、本発明の精神から逸脱することなく、例示された実施形態は、構成および細部において変更され得ることを当業者は理解するであろう。同様に、記載したアルゴリズムによって達成される結果の多くは、１つまたは複数の異なるステップを有するアルゴリズムによって達成することができる。したがって、本明細書に記載した本発明は、このようなすべての実施形態が、添付の請求項およびその等価物の範囲内であり得ることを企図している。
【図面の簡単な説明】
【００６１】
【図１】本発明の実施形態が実装され得る例示的なデバイスアーキテクチャ全体を示すブロック図である。
【図２】本発明の実施形態が実装され得るのに用いられる例示的な階層通信システムを全体的に示すブロック図である。
【図３】本発明の実施形態による、情報を伝送するアルゴリズムを全体的に示すフロー図である。
【図４】本発明の実施形態による、タイマ索引を設定するアルゴリズムを全体的に示すフロー図である。
【図５】本発明の実施形態による、タイマアレイ中のエントリを処理するアルゴリズムを全体的に示すフロー図である。
【図６ａ】本発明の実施形態の例示的な実装形態を全体的に示すタイムライン図である。
【図６ｂ】本発明の実施形態の例示的な実装形態を全体的に示すタイムライン図である。
【図６ｃ】本発明の実施形態の例示的な実装形態を全体的に示すタイムライン図である。
【図１】
0004694883.tif 000002
【図２】
0004694883.tif 000003
【図３】
0004694883.tif 000004
【図４】
0004694883.tif 000005
【図５】
0004694883.tif 000006
【図６ａ】
0004694883.tif 000007
【図６ｂ】
0004694883.tif 000008
【図６ｃ】
0004694883.tif 000009