(57)【特許請求の範囲】
【請求項１】
データストリーム内の現在のパケットの送信状態に基づいて、パラメータによりインデックスが付けられた待ち行列中の待ち行列エントリを更新し、該現在のパケットを該パラメータの現在の値を用いて送信するステップと、
上記待ち行列エントリに基づいて複数の性能スコアを計算するステップと、
上記複数の性能スコアのうちの最高のスコアに対応する最高値のパラメータを選択するステップとを有するデータ送信方法。
【請求項２】
さらに、上記パラメータの最高値を用いて、次のパケットを上記データストリームで送信するステップを有する請求項１記載のデータ送信方法。
【請求項３】
上記待ち行列エントリを更新するステップは、
送信したパケットの履歴ウィンドウに対応したカウンタを更新するステップと、
上記カウンタが最大ウィンドウサイズを超えた場合に、上記待ち行列中の最も古いエントリを削除するステップと、
上記現在のパケットの送信状態を示す新しいエントリを上記待ち行列中に挿入するステップとを含むことを特徴とする請求項１記載のデータ送信方法。
【請求項４】
上記複数の性能スコアを計算するステップは、
上記更新した待ち行列エントリを用いて送信した実際のデータパケットとプローブパケットの少なくとも１つのパケットの成功率を判定するステップと、
上記性能スコアを生成する関数を上記成功率及び上記パラメータの理論値に適用するステップとを含むことを特徴とする請求項１記載のデータ送信方法。
【請求項５】
上記関数を適用するステップは、上記成功率と上記パラメータの理論値とを乗算するステップを含むことを特徴とする請求項４記載のデータ送信方法。
【請求項６】
上記関数を適用するステップは、上記パラメータの現在の値、より高い値及びより低い値を用いて、上記関数を上記パラメータの理論値及び上記成功率に適用するステップを含むことを特徴とする請求項４記載のデータ送信方法。
【請求項７】
上記待ち行列エントリを更新するステップは、変調方式、パケットサイズ及び送信パワーのうちの１つパラメータによってインデックスが付けられた待ち行列中の待ち行列エントリを更新するステップを含むことを特徴とする請求項１記載のデータ送信方法。
【請求項８】
さらに、上記待ち行列エントリにヒステリシスを適用するステップを有する請求項１記載のデータ送信方法。
【請求項９】
上記変調方式は、２相位相偏移変調（ＢＰＳＫ）、４相位相偏移変調（ＱＰＳＫ）、１６直交振幅変調（１６ＱＡＭ）、６４直交振幅変調（６４ＱＡＭ）のうちの１つであることを特徴とする請求項７記載のデータ送信方法。
【請求項１０】
上記理論値は、エラーなし及び理論プロトコルのオーバヘッドの割合を考慮した理論上のスループットデータレートの値であることを特徴とする請求項４記載のデータ送信方法。
【請求項１１】
コンピュータによってアクセスしたときに、該コンピュータに、所定の動作を実行させるデータを含むコンピュータ読取可能な記録媒体であって、コンピュータに、
データストリーム内の現在のパケットの送信状態に基づいて、パラメータによりインデックスが付けられた待ち行列中の待ち行列エントリを更新し、該現在のパケットを該パラメータの現在の値を用いて送信するステップと、
上記待ち行列エントリに基づいて複数の性能スコアを計算するステップと、
上記複数の性能スコアのうちの最高のスコアに対応する最高値のパラメータを選択するステップと、
を実行させるためのプログラムを記録したコンピュータ読取可能な記録媒体。
【請求項１２】
上記データは、さらに、
上記パラメータの最高値を用いて、次のパケットを上記データストリームで送信するステップを上記コンピュータに実行させるデータを含むことを特徴とする請求項１１記載のコンピュータ読取可能な記録媒体。
【請求項１３】
上記待ち行列エントリを更新するステップをコンピュータに実行させるデータは、
送信したパケットの履歴ウィンドウに対応したカウンタを更新するステップと、
上記カウンタが最大ウィンドウサイズを超えた場合に、上記待ち行列中の最も古いエントリを削除するステップと、
上記現在のパケットの送信状態を示す新しいエントリを上記待ち行列中に挿入するステップとを上記コンピュータに実行させるデータを含むことを特徴とする請求項１１記載のコンピュータ読取可能な記録媒体。
【請求項１４】
上記複数の性能スコアを計算するステップをコンピュータに実行させるデータは、
上記更新した待ち行列エントリを用いて送信した実際のデータパケットとプローブパケットの少なくとも１つのパケットの成功率を判定するステップと、
上記性能スコアを生成する関数を上記成功率及び上記パラメータの理論値に適用するステップとを上記コンピュータに実行させるデータを含むことを特徴とする請求項１１記載のコンピュータ読取可能な記録媒体。
【請求項１５】
上記関数を適用するステップをコンピュータに実行させるデータは、上記成功率と上記パラメータの理論値とを乗算するステップを上記コンピュータに実行させるデータを含むことを特徴とする請求項１４記載のコンピュータ読取可能な記録媒体。
【請求項１６】
上記関数を適用するステップをコンピュータに実行させるデータは、上記パラメータの現在の値、より高い値及びより低い値を用いて、上記関数を上記パラメータの理論値及び上記成功率に適用するステップを上記コンピュータに実行させるデータを含むことを特徴とする請求項１４記載のコンピュータ読取可能な記録媒体。
【請求項１７】
上記待ち行列エントリを更新するステップをコンピュータに実行させるデータは、変調方式、パケットサイズ及び送信パワーのうちの１つパラメータによってインデックスが付けられた待ち行列中の待ち行列エントリを更新するステップを上記コンピュータに実行させるデータを含むことを特徴とする請求項１１記載のコンピュータ読取可能な記録媒体。
【請求項１８】
さらに、上記データは、上記待ち行列にヒステリシスを適用するステップを上記コンピュータに実行させるデータを含むことを特徴とする請求項１１記載のコンピュータ読取可能な記録媒体。
【請求項１９】
上記変調方式は、２相位相偏移変調（ＢＰＳＫ）、４相位相偏移変調（ＱＰＳＫ）、１６直交振幅変調（１６ＱＡＭ）、６４直交振幅変調（６４ＱＡＭ）のうちの１つであることを特徴とする請求項１７記載のコンピュータ読取可能な記録媒体。
【請求項２０】
上記理論値は、エラーなし及び理論プロトコルのオーバヘッドの割合を考慮した理論上のスループットデータレートの値であることを特徴とする請求項１４記載のコンピュータ読取可能な記録媒体。
【請求項２１】
ベースバンド信号からの無線信号を送信する無線周波数部と、
上記無線周波数部に接続され、データストリームから上記ベースバンド信号を生成するベースバンドプロセッサと、
上記無線周波数部及び上記ベースバンドプロセッサに接続された媒体アクセスコントローラとを備え、
上記媒体アクセスコントローラは、プロセッサと、メモリとを備え、該メモリには、該プロセッサが、
データストリーム内の現在のパケットの送信状態に基づいて、パラメータによりインデックスが付けられた待ち行列中の待ち行列エントリを更新し、該現在のパケットを該パラメータの現在の値を用いて送信し、
上記待ち行列エントリに基づいて複数の性能スコアを計算し、
上記複数の性能スコアのうちの最高のスコアに対応する最高値のパラメータを選択する命令が記憶されていることを特徴とする装置。
【請求項２２】
さらに、上記プロセッサが実行する命令には、上記パラメータの最高値を用いて、次のパケットを上記データストリームで送信する命令が含まれていることを特徴とする請求項２１記載の装置。
【請求項２３】
上記プロセッサが実行する上記待ち行列を更新する命令には、
送信したパケットの履歴ウィンドウに対応したカウンタを更新し、
上記カウンタが最大ウィンドウサイズを超えた場合に、上記待ち行列中の最も古いエントリを削除し、
上記現在のパケットの送信状態を示す新しいエントリを上記待ち行列中に挿入する命令が含まれていることを特徴とする請求項２１記載の装置。
【請求項２４】
上記プロセッサが実行する上記複数の性能スコアを計算する命令には、
上記更新した待ち行列エントリを用いて送信した実際のデータパケットとプローブパケットの少なくとも１つのパケットの成功率を判定し、
上記性能スコアを生成する関数を上記成功率及び上記パラメータの理論値に適用する命令が含まれていることを特徴とする請求項２１記載の装置。
【請求項２５】
上記プロセッサが実行する上記関数を適用する命令には、上記成功率と上記パラメータの理論値とを乗算する命令が含まれていることを特徴とする請求項２４記載の装置。
【請求項２６】
上記プロセッサが実行する上記関数を適用する命令には、上記パラメータの現在の値、より高い値及びより低い値を用いて、上記関数を上記パラメータの理論値及び上記成功率に適用する命令が含まれていることを特徴とする請求項２４記載の装置。
【請求項２７】
上記プロセッサが実行する上記待ち行列エントリを更新する命令には、変調方式、パケットサイズ及び送信パワーのうちの１つパラメータによってインデックスが付けられた待ち行列中の待ち行列エントリを更新する命令が含まれていることを特徴とする請求項２１記載の装置。
【請求項２８】
さらに、上記プロセッサが実行する命令には、上記待ち行列にヒステリシスを適用する命令が含まれていることを特徴とする請求項２１記載の装置。
【請求項２９】
上記変調方式は、２相位相偏移変調（ＢＰＳＫ）、４相位相偏移変調（ＱＰＳＫ）、１６直交振幅変調（１６ＱＡＭ）、６４直交振幅変調（６４ＱＡＭ）のうちの１つであることを特徴とする請求項２７記載の装置。
【請求項３０】
上記理論値は、エラーなし及び理論プロトコルのオーバヘッドの割合を考慮した理論上のスループットデータレートの値であることを特徴とする請求項２４記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信に関し、特に、データ伝送に関する。
【背景技術】
【０００２】
通信システムにおけるデータ伝送の性能は、一般的には多数のパラメータの関数である。これらのパラメータの具体例としては、変調技術、データレート、チャンネル干渉、チャンネルノイズ、パケットサイズ等が含まれる。特定の通信システムについて、これらのパラメータは通常は最高の性能を得るために選択される。
【０００３】
性能判定基準は、システム及び／又はアプリケーションの違いにより異なるものとすることができる。全ての判定基準を同時に満たすことは通常は困難である。例えば、低エラー伝送はデータレートを下げる傾向があり、高エラー伝送はデータレートを上げる傾向がある。それに加えて、通信システムの特性がシステム利用、ネットワークトラフィック、ノイズレベル等に応じて通常は動的である。現在の技術はシステムの動的特性に対する完全な解決策を提供していない。一般的には、現在の技術は幾つかの所定の性能基準に従ってシステムパラメータの固定値を選択する。システムの特性が未知の場合は、この固定値を決定するのが困難なことが時々ある。さらに、通信チャンネルの特性が変更された場合は、その値が満足できる性能を提供することはできない。
【発明を実施するための最良の形態】
【０００４】
本発明の実施の形態は、データ伝送のパラメータ値を適応的に生成するための技術である。待ち行列中の待ち行列エントリが更新される。待ち行列には、データストリーム内の現在のパケットの送信状態に基づいて、パラメータによりインデックスが付けられる。現在のパケットはパラメータの現在の値を用いて送信される。待ち行列エントリに基づいて、複数の性能スコアが計算される。複数の性能スコアのうちの最高のスコアに対応するパラメータの最高値が選択される。
【０００５】
以下の説明には、数多くの個別の詳細が記載されている。しかしながら、本発明の実施の形態は、これらの個別の詳細なしでも実行することができると考えられる。他の実施の形態においては、この説明の理解を妨げることがないように、周知の回路、構成及び技術は、図示しない。
【０００６】
図１Ａは、本発明の一実施形態を実行することができるシステム１０の構成を示すブロック図である。システム１０は、アンテナ２０と、無線周波数（ＲＦ）部３０と、ベースバンドプロセッサ４０と、媒体アクセスコントローラ（ＭＡＣ）５０と、メモリ６０と、ホストシステム７０とを備える。
【０００７】
アンテナ２０は、無線送信機から送信された信号を受信し、及び／又は無線信号を受信機に送信する。選択性のために、１つ以上のアンテナ２０を使用することもできる。一般的には、アンテナ２０は、ハンドヘルド装置用に設計された小さな波形率を有する。アンテナ２０の周波数帯域は、受信又は送信する無線信号の種類により決まる。例えば、ブルートゥース及び８０２．１１信号の場合は、周波数帯域は約２４００〜約５０００ＭＨｚである。
【０００８】
ＲＦ部３０は、受信及び／又は送信無線信号を処理する。一般的には、ＲＦ部３０は、ブルートゥース規格及び８０２．１１ｘ（例えば、８０２．１１ａ、８０２．１１ｂ、８０２．１１ｇ）のようなワイヤレスフィデリティ（Ｗｉ−Ｆｉ）規格の少なくとも１つに準拠している。ＲＦ部３０は、受信無線信号をベースバンド信号に、又は送信ベースバンド信号を送信無線信号に変換するための変換器を含む。ＲＦ部３０は一体型機器とすることもできるし、幾つかのコンポーネントを含むこともできる。一般的なコンポーネントとしては、アンテナスイッチ、バンドパスフィルタ、送信機／受信機スイッチ、電力増幅器、直交アップ／ダウンコンバータ、位相同期ループ素子及びクロック発生器がある。
【０００９】
ベースバンド信号を処理するために、ベースバンドプロセッサ４０は、ＲＦ部３０に接続されている。ベースバンドプロセッサ４０は、一般的には、直交デジタル／アナログ変換器、直交アナログ／デジタル変換器、直交変調器及び復調器を含む。ベースバンド信号をデコードするために、ＭＡＣ５０は、物理インタフェースシリアルコントローラ、マイクロプログラム式エンジンを含む。ＭＡＣ５０は、セキュリティ管理のために有線同等プライバシー（ＷＥＰ）エンジンを含むこともできる。ＭＡＣマイクロプログラム式エンジンは事前プログラム化ＲＯＭ内及びメモリ６０内の命令を実行する。ＭＡＣ５０は、ＭＡＣコア５２、及びハードウェア又はＭＡＣマイクプログラム式プロセッサ又はエンジンにより実行されるマイクロプログラム内の命令の任意の形の適応コントローラ５５を含む。適応制御を行うために、メモリ６０は無線通信プログラム又はコードを含む。一般的には、メモリ６０はテンポラリデータを記憶するためのフラッシュメモリ又は他の任意の種類のＲＯＭ及びＲＡＭを含む。メモリ６０は適応コントローラ５５に対する内部又は外部メモリとすることができる。メモリ６０は、適応制御のためのタスク又は機能をマイクロプログラム式プロセッサに実行させる命令を含む。ベースバンドプロセッサ４０及びＭＡＣ５０は、通信を制御する１つ以上のパラメータを用いて、データストリーム内のデータのパケットを送信することができる。これらのパラメータはプログラマブルとすることもできるし、幾つかの性能判定基準に基づいて選択することもできる。
【００１０】
ホストシステム７０は、ＭＡＣ５０とのインタフェース用のプラットホームを提供するためのコンピュータシステムである。ＭＡＣ５０は、ホストシステム７０のカードスロットにプラグインされるアダプタカードの一部とすることもできる。ＭＡＣ５０及びベースバンドプロセッサ４０がスタンドアローンモードで動作することができる場合は、ホストシステム７０はオプションとすることもできる。
【００１１】
図１Ｂは、本発明の一実施形態を実現するホストコンピュータシステム７０の構成を示すブロック図である。システム７０は、ホストプロセッサ１１０と、ホストバス１２０と、メモリ制御ハブ（ＭＣＨ）１３０と、システムメモリ１４０と、入出力制御ハブ（ＩＣＨ）１５０と、周辺バス１５５と、大容量記憶機器１７０と、入出力機器１８０１〜１８０Ｋとを備える。なお、システム７０は、これらの構成要素よりも多数又は少数の構成要素を備えることもできる。
【００１２】
ホストプロセッサ１１０は、内蔵プロセッサ、モバイルプロセッサ、マイクロコントローラ、デジタルシグナルプロセッサ、スーパースケーラコンピュータ、ベクトルプロセッサ、単一命令多重データ（ＳＩＭＤ）コンピュータ、複雑命令セットコンピュータ（ＣＩＳＣ）、縮小命令セットコンピュータ（ＲＩＳＣ）、超長命令語（ＶＬＩＷ）又はハイブリッドアーキテクチャ等の任意の種類のアーキテクチャの中央演算処理装置である。
【００１３】
プロセッサ１１０が例えばＭＣＨのような他のプロセッサ又は機器と通信できるようにするために、ホストバス１２０はインタフェース信号を提供する。ホストバス１２０はユニプロセッサ又はマルチプロセッサ環境設定を支援することもできる。ホストバス１２０は並列、順次、パイプライン、非同期、同期、又はその任意の組合せとすることができる。
【００１４】
ＭＣＨ１３０は、システムメモリ１４０及びＩＣＨ１５０のようなメモリ及び入出力機器の制御及び環境設定を提供する。ＭＣＨ１３０は、孤立実行モード、ホスト−周辺間バスインタフェース、メモリ管理のような複数の機能を統合するチップセットに内蔵することもできる。ＭＣＨ１３０は、インタフェースで周辺バス１５５に接続されている。明確にするために、全てのバスが示されているわけではない。システム１００は、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）、アクセラレイティッドグラフィックスポート（ＡＧＰ）、インダストリスタンダードアーキテクチャ（ＩＳＡ）バス、ユニバーサルシリアルバス（ＵＳＢ）等のような周辺バスを含むこともできる。周辺バス１５５は、ＭＡＣ５０とのインタフェースを提供することができる。
【００１５】
システムメモリ１４０はシステムコード及びデータを記憶する。システムメモリ１４０は一般的にはダイナミックランダムアクセスメモリ（ＤＲＡＭ）又はスタティックランダムアクセスメモリ（ＳＲＡＭ）とともに実装される。システムメモリは、本発明の一実施形態を実装するプログラムコード又はコードセグメントを含むことができる。システムメモリは適応制御モジュール１４５を含む。適応制御モジュール１４５の要素のいずれも、ハードウェア、ソフトウェア、ファームウェア、マイクロコード、又はその任意の組合せにより実装することができる。システムメモリ１４０は、オペレーティングシステムのような、図示しない他のプログラム又はデータを含むこともできる。適応制御モジュール１４５は適応制御機能の全て又は一部を実装することができる。これらの適応制御機能は、ＭＡＣ５０内の適応コントローラ５５と同等のものとすることもできるし、それを補完するものとすることもできる。適応制御モジュール１４５はＭＡＣの有無にかかわらず適応制御機能をシミュレーションすることもできる。
【００１６】
ＩＣＨ１５０は、Ｉ／Ｏ機能を支援するように設計された多数の機能を有する。Ｉ／Ｏ機能を果たすために、ＩＣＨ１５０はチップセットに統合することもできるし、ＭＣＨ１３０から分離することもできる。インタフェースにより周辺バス１５５、プロセッサインタフェース、割込みコントローラ、ダイレクトメモリアクセス（ＤＭＡ）コントローラ、パワーマネージメントロジック、タイマ、システム管理バス（ＳＭバス）、ユニバーサルシリアルバス（ＵＳＢ）インタフェース、ローピンカウント（ＬＰＣ）インタフェース等に接続するために、ＩＣＨ１５０は、ＰＣＩバスのような多数のインタフェース及びＩ／Ｏ機能を含むことができる。
【００１７】
大容量記憶機器１７０は、コード、プログラム、ファイル、データ、アプリケーション及びオペレーションシステムのようなアーカイブ情報を記憶する。大容量記憶機器１７０は、コンパクトディスク（ＣＤ）ＲＯＭ１７２、デジタルビデオ／多用途ディスク（ＤＶＤ）１７３、フロッピー（登録商標）ディスク１７４、ハードドライブ１７６、他の任意の磁気又は光記憶機器を含むことができる。大容量記憶機器１７０は、マシンアクセス可能な媒体を読み込むためのメカニズムを提供する。以下に説明するようなタスクを実行するために、マシンアクセス可能な媒体はコンピュータ読出可能なプログラムコードを含むことができる。
【００１８】
Ｉ／Ｏ機能を果たすために、Ｉ／Ｏ機器１８０１〜１８０Ｋは、任意のＩ／Ｏ機器を含むことができる。Ｉ／Ｏ機器１８０１〜１８０Ｋの具体例としては、入力機器（例えば、キーボード、マウス、トラックボール、ポインティングデバイス）用のコントローラ、メディアカード（例えば、オーディオ、ビデオ、グラフィックス）、米国電気電子技術者協会（ＩＥＥＥ）８０２．３のようなネットワークカード１８２、他の任意の周辺コントローラがある。
【００１９】
本発明の一実施形態の要素は、ハードウェア、ファームウェア、ソフトウェア又はその任意の組合せにより実装することができる。ハードウェアという用語は一般的には電子、電磁、光、電気光学、機械、電気機械部品等のような物理構造を有する要素を指す。ソフトウェアという用語は一般的には、ハードウェア構造（例えば、フラッシュメモリ、ＲＯＭ、ＥＰＲＯＭ）内に実装又は実現される論理構造、方法、手順、プログラム、ルーチン、プロセス、アルゴリズム、公式、関数、式等を指す。ファームウェアの具体例としては、マイクロコード、書込み可能制御記憶機器、マイクロプログラム化構造を含むことができる。ソフトウェア又はファームウェア内で実装された場合には、本発明の一実施形態の要素は、基本的には必要なタスクを実行するためコードセグメントである。ソフトウェア／ファームウェアは、本発明の一実施形態に記載されたタスクを行うための実コード、又はそれらのタスクをエミュレーション又はシミュレーションするコードを含む。プログラム又はコードセグメントは、プロセッサ又はマシンアクセス可能な媒体内に記憶することもできるし、搬送波内に実現されるコンピュータデータ信号又は搬送波により変調される信号により伝送媒体を介して伝送することもできる。「プロセッサ読出可能な又はアクセス可能な媒体」又は「マシン読出可能な又はアクセス可能な媒体」は、情報を記憶、伝送又は転送できる任意の媒体を含むことができる。プロセッサ読出可能な又はマシンアクセス可能な媒体の具体例としては、電子回路、半導体メモリ機器、読出し専用メモリ（ＲＯＭ）、フラッシュメモリ、消去可能ＲＯＭ（ＥＰＲＯＭ）、フロッピーディスク、コンパクトディスク（ＣＤ）ＲＯＭ、光ディスク、ハードディスク、光ファイバ媒体、無線周波数（ＲＦ）リンク等が含まれる。コンピュータデータ信号は、電子ネットワークチャンネル、光ファイバ、電波、電磁、ＲＦリンク等のような伝送媒体を通じで伝播することができる任意の信号を含むことができる。コードセグメントは、インターネット、イントラネット等のようなコンピュータネットワークを介してダウンロードすることができる。マシンアクセス可能な媒体は製品の形で実現することができる。マシンアクセス可能な媒体は、以下に説明するようなタスクを、マシンによってアクセスしたときに、マシンに実行させるデータを含むことができる。マシンアクセス可能な媒体は内蔵されたプログラムコードを含むこともできる。プログラムコードは、以下に説明するタスクを実行するためのマシン読出可能なコードを含むことができる。「データ」という用語はここでは、マシン読出可能にするために符号化される任意の種類の情報を指す。したがって、プログラム、コード、データ、ファイル等を含むことができる。
【００２０】
本発明の実施形態の全て又は一部は、ハードウェア、ソフトウェア又はファームウェア、又はその任意の組合せによる実装することができる。ハードウェア、ソフトウェア又はファームウェア要素は、相互に接続されたいくつかのモジュールを有することができる。ハードウェアモジュールは、機械、電気、光、電磁又は何らかの物理接続により別のモジュールに接続されている。ソフトウェアモジュールは関数、手順、方法、サブプログラム又はサブルーチンコール、ジャンプ、リンク、パラメータ、変数及び引数パッシング、関数リターン等により別のモジュールに接続されている。変数、パラメータ、引数、ポインタ等を受信するために、及び／又は結果、更新された変数、ポインタ等を生成又は送信するために、ソフトウェアモジュールは別のモジュールに接続されている。ハードウェア、ソフトウェア又はファームウェアモジュールは別のハードウェア、ソフトウェア又はファームウェアモジュールのいずれにも接続することができる。プラットホーム上で動作しているオペレーティングシステムとの対話のために、モジュールをソフトウェアドライバ又はインタフェースとすることもできる。ハードウェア機器の環境設定、セットアップ、初期化、ハードウェア機器のデータの送受信のために、モジュールをハードウェアドライバとすることもできる。機器は、ハードウェア、ソフトウェア及びファームウェアモジュールの任意の組合せをとすることができる。
【００２１】
本発明の一実施形態は、通常はフローチャート、流れ図、構成図又はブロック図として描かれるプロセスとして説明することができる。フローチャートはタスクを１つの順次プロセスとして説明することもできるが、タスクの多くは並列又は同時に実行することができる。それに加えて、タスクの順序を再配列することもできる。１つのプロセスが終了するのは、そのタスクが完了した場合である。１つのプロセスは、１つの方法、プログラム、手順、製造又は生産方法等に対応することもできる。
【００２２】
図２は、本発明の一実施形態による適応コントローラ５５の構成を示すブロック図である。適応コントローラ５５は、待ち行列２１０と、更新器２２０と、性能推定器２３０と、パラメータセレクタ２４０とを備える。これらの構成要素は、ハードウェア、ソフトウェア、ファームウェア、それらの任意の組合せによって実現することができる。
【００２３】
待ち行列２１０は、データストリーム内の現在のパケットの送信状態に基づいて、パラメータによりインデックスが付けられた待ち行列エントリを記憶する。待ち行列エントリは、送信状態のような送信パケットに関する情報を含む。送信状態は、エラーチェック、返信確認応答等のような任意の適当なメカニズムによる得ることができる。データストリームは任意の適当なデータレートにより伝送することができる。データレートの具体例としては、毎秒６メガビット（Ｍｂｐｓ）、９Ｍｂｐｓ、１２Ｍｂｐｓ、１８Ｍｂｐｓ、２４Ｍｂｐｓ、３６Ｍｂｐｓ、４８Ｍｂｐｓ、５４Ｍｂｐｓ、１０８Ｍｂｐｓ、又はそれ以上が含まれる。現在のパケットはパラメータの現在の値を用いて送信される。パラメータは伝送に影響を与えるか、又は伝送を制御し、変調方式、パケットサイズ又は送信パワーとすることができる。変調方式は、任意の変調技術である。その一具体例が、ＩＥＥＥ８０２．１１において使用される直交周波数分割多重（ＯＦＤＭ）である。ＯＦＤＭは、２相位相偏移変調、４相位相偏移変調（ＱＰＳＫ）、１６直交振幅変調（１６ＱＡＭ）、又は６４ＱＡＭとすることができる。符号化速度は、１／、２／３又は１／４とすることができる。パラメータの値は任意の便利な方法により符号化することができる。例えば、８つの変調方式がある場合は、その８つの変調方式を表すために、パラメータは０００（０）〜１１１（７）の範囲の３ビット値としてコード化することができる。パケットサイズは任意の適当なパケットサイズを含むことができる。送信パワーは、通信システム又はシステムのサブセットが消費する電力レベルである。
【００２４】
現在のパケットが送信されるにつれて、更新器２２０は待ち行列２１０中の待ち行列エントリを更新する。待ち行列２１０は基本的には最後のＮ個の送信結果に関する情報を含む。これらのＮ個の送信結果は、履歴のトラックを保つためにパケットが送信されるにつれてデータストリームに沿ってスライドする履歴ウィンドウ、又は最新のＮ回のパケット送信に対応する。Ｎ個の結果はパラメータの全ての値に対応することもできるし、パラメータのそれぞれの値に対応することもできる。更新器２２０は、待ち行列中に保存された送信結果の数の数えるためのカウンタ２２５を有する。カウンタ２２５はパラメータの全ての値に対応することもできるし、それぞれがパラメータのそれぞれの値に対応する幾つかのサブカウンタを含むこともできる。したがって、カウンタ２２５は送信されるパケットの履歴ウィンドウに対応する。現在のパケットの送信状態が決定されると、更新器２２０は待ち行列２１０中の待ち行列エントリ２１０を更新する。
【００２５】
パケットが送信され、その送信状態が得られる度毎に、又は特定の時期に頻繁な更新を所望しない場合は、カウンタ２２５を更新する（例えば、インクリメントする）ことができる。これは、待ち行列の更新時にヒステリシスを適用することにより行われる。更新器２２０内のカウンタ２２５が、そのパラメータ値についての待ち行列が満杯であることを示す履歴ウィンドウの最大ウィンドウサイズを超えた場合に、現在のパケットを表す新しいエントリのための場所を作るために、更新器２２０は、待ち行列中の最も古いエントリを削除する。更新器２２０は現在のパケットの送信状態を示す待ち行列内２１０にこの新しいエントリを挿入する。
【００２６】
性能推定器２３０は待ち行列エントリに基づいていくつかの性能スコアを計算する。性能スコアの数は待ち行列エントリの数と同じにすることもできるし、それよりも増減することもできる。すなわち、性能推定器２３０は全ての待ち行列エントリ又は待ち行列のサブセットの性能スコアを推定することができる。
【００２７】
パラメータセレクタ２４０は、複数の性能スコアのうちの最高のスコアに対応するパラメータの最高値を選択する。複数のパラメータが使用される場合は、パラメータセレクタ２４０はこれら全てのパラメータの最高値を選択する。選択された値を用いて、次のパケットをデータストリームで送信することができるように、その値は、パケットの送信に関与するＭＡＣコア５０又は任意のモジュールに送られる。
【００２８】
基本コンセプトは、伝送性能の履歴に基づいてパケット伝送の適応制御することである。これが、システムの動的変化がある場合に、又はシステム性能判定基準を提供するために、システム性能を動的に調節するのに役立つ。これは、パラメータの種類に応じて、過去のＮ回の試みにおけるパラメータのそれぞれの値の成功率又は失敗率を決定することによって行い、最高性能スコアをもたらすパラメータの最高値を選択することができる。パラメータは、動的環境においてパラメータに影響を与える任意のパラメータとすることができる。パラメータの具体例としては、変調方式、パケットサイズ及び送信パワーがある。
【００２９】
変調方式又は方法は、ネットワーク上におけるデータ伝送の速度に影響を与える。例えば、８０２．１１ａスキームにおいては、１６ＱＡＭから６４ＱＡＭへの変調方式の変更は、シンボル当たりのコード化ビット数、すなわちシンボル当たりのデータビット数を増やすことにより、データレートを上げることができる。しかしながら、１６ＱＡＭから６４ＱＡＭへの変調方式の変更は、伝送エラー率を高めることもある。変調速度は、一般的には、エラー率を最低にするために、又はエラーを完全になくすために選ばれるが、これは必ずしも全データスループットの最大化と整合しているわけではない。幾つかのアプリケーションにおいては、伝送速度を上げる代わりにエラー率を高める方が望ましいこともある。これらのアプリケーションにおいては、完全なエラーなし伝送は要求されず、及び／又は自動パケット再伝送がパケットエラー検出に基づいて実行される。この種類のパラメータの場合は、成功率が使用される。
【００３０】
パケットサイズは以下のような方法で伝送性能に影響を与えることもできる。データ伝送におけるオーバヘッドは通常はサイズがパケット毎に固定されているが、しかしネットワーク内の有効帯域幅を縮小する。この理由から、全オーバヘッドの割合を下げるために、それぞれのパケット内のデータの量を増やすのが望ましいことがある。しかしながら、無線チャンネル内の干渉又はノイズ、及び／又は不安定な競合ベースアクセスチャンネル内の競合のような理由から、パケットサイズの拡大が伝送失敗の確率を高めることもある。したがって、パケットサイズはシステム性能に対して動的効果を有し、動的又は適応制御すべきパラメータとして使用することができる。この種類のパラメータの場合は、失敗率が使用される。
【００３１】
過去のＮ回の伝送試みの成功率又は失敗率は、図２に示すような待ち行列２１０中の待ち行列エントリにより記録されたような成功又は失敗伝送の数を決定することにより計算することができる。待ち行列２１０には、パラメータによってインデックスが付けられている。これは、過去のＮ回の伝送試みにおけるスケーリングされた成功又は失敗数として表すことができる。過去のＮ回の伝送試みは均等、それぞれ又は適応的に重み付けることができる。一実施形態においては、一時重み付け係数を使用することができる。この一時重み付け係数は、全成功率又は失敗率の計算の前に、過去のそれぞれの伝送試みのそれぞれの結果をそれぞれ重み付ける。これは、現在の期間に関して、ある期間をその他の期間よりも重視するという効果を有する。したがって、これは、過去のＮ回の試み全体にわたって成功又は失敗率を単純に計算するよりは一般的な形態である。それに加えて、一時重み付け係数はそれ自体が時間とともに変化することができる。
【００３２】
Ｑ（ｊ）を、Ｋ個の値を有するパラメータの値ｊについてのエントリを含む待ち行列である場合、ｊ＝１，・・・，Ｋである。待ち行列エントリは過去Ｎ回の伝送の送信状態である。パラメータのそれぞれの値についての成功率又は失敗率は、過去のＮ回の試みにおける成功又は失敗伝送の割合を計算することにより算出することができる。パラメータのＫ個の値については、Ｋ個の成功又は失敗率が存在する。Ｓ（ｊ）をパラメータの値ｊの成功率又は失敗率であるとする。過去のＮ回の伝送におけるパラメータ値ｊの性能を推定するために、それぞれの値ｊについて、性能スコア又は性能指数Ｐ（ｊ）を算出することができる。この性能スコアは関数ｆ｛．｝を成功又は失敗率Ｓ（ｊ）及び理論値Ｔ（ｊ）に適用することにより決定することができる。理論値Ｔ（ｊ）は特定のパラメータ値ｊについての最適結果を用いて計算することができる。例えば、パラメータが変調方式である場合は、理論値Ｔ（ｊ）は、エラーがないと仮定した変調方式におけるデータレートとすることができる。パラメータがパケットサイズである場合は、理論値Ｔ（ｊ）は、サイズｊのパケットを使用するプロトコルのオーバヘッドの割合とすることができる。性能スコアＰ（ｊ）は
Ｐ（ｊ）＝ｆ｛Ｓ（ｊ），Ｔ（ｊ）｝                            （１）
で表すことができる。
【００３３】
関数ｆ｛．｝は伝送性能の有用なインジケータを提供するために選択することができる。以下に示されているように、関数ｆ｛．｝の具体例は乗算及び一次結合である。
【００３４】
Ｐ（ｊ）＝（ａ＋ｂＳ（ｊ））（ｃ＋ｄＴ（ｊ））＋ｅ            （２）
Ｐ（ｊ）＝ａＳ（ｊ）＋ｂＴ（ｊ）                              （３）
ここで、ａ、ｂ、ｃ、ｄ及びｅはスケール係数、ｊ＝１，・・・，Ｋ
【００３５】
性能スコアを基本となるパラメータの値の全て又はサブセットについて算出した後に、最高性能スコアに対応するパラメータ値が選択される。突然の変化を避けるために、パラメータ値のサブセットをステップ調節に使用することもできる。サブセットの一具体例が、現在の値、次に高い値、次に低い値である。性能スコアの最適性は、パラメータの種類により決まる。例えば、パラメータが変調方式である場合は、性能スコアが高ければ高いほど、性能はよくなる。パラメータがパケットサイズである場合は、性能スコアが低ければ低いほど、性能はよくなる。パラメータの最高値jbestが選択された後には、次のパケットの伝送は、このパラメータの最高値jbestを使用する。
【００３６】
動的調節における突然の変化を避けるために、ヒステリシスメカニズムを使用することができる。ヒステリシスメカニズムは、更新及び適応制御をスローダウンさせるためのフィルタのような働きを行う。これは数多くの方法により行うことができる。第１の方法においては、待ち行列エントリの更新は、伝送されるパケット毎ではなく、固定又は可変間隔で行うことができる。第２の方法においては、待ち行列エントリの更新は、パケット毎に行うことができるが、パラメータ値の変更の決定は固定又は可変間隔（例えば、Ｐ個のパケット毎）で行われる。
【００３７】
上記スキームを複数のパラメータに拡張できるということが考えられる。例えば、パラメータがパケットサイズである場合は、変調方式及び送信パワーのような追加パラメータを使用することもできる。このスキームにおいては、Ｒ個のパラメータについては、それぞれのパラメータに１つずつ、Ｒ個の最高値が存在する。あるいは、変調方式及び送信パワーを現在の変調方式及び送信パワーと同じにしたままで、パケットサイズについての最高値を得ることもできる。
【００３８】
上記のように、待ち行列２１０は、パラメータの選択値に対応する過去のＮ個の伝送結果を含む。過去のＮ個の伝送結果はパラメータの全ての値又はパラメータのそれぞれの値に対応することができる。それに加えて、待ち行列２１０には複数のパラメータをインデックスとして付けることもできる。したがって、待ち行列２１０の構造は３つの形態、すなわち、第１の待ち行列２１２、第２の待ち行列２１４、第３の待ち行列２１６を有することができる。
【００３９】
図３Ａは、本発明の一実施形態における変調方式パラメータによりインデックスが付けられた第１の待ち行列２１２を示す図である。この待ち行列構造においては、Ｎ個の待ち行列エントリはパラメータの全ての値に対応している。
【００４０】
第１の待ち行列２１２は、パラメータによりインデックスが付けられたＮ個の待ち行列エントリを含む。一具体例として、パラメータは変調方式である。パラメータは、変調方式及び符号化速度に対応するために１〜８の数値として符号化された８つの値を有する。値１、２、３、４、５、６、７、８は、ＢＰＳＫ１／２、ＢＰＳＫ３／４、ＱＰＳＫ１／２、ＱＰＳＫ３／４、１６ＱＡＭ１／２、１６ＱＡＭ３／４、１６ＱＡＭ２／３、６４ＱＡＭ３／４に対応することができる。
【００４１】
第１の待ち行列２１２のそれぞれの行は同じ時刻又はパケット番号に対応している。任意の時刻においては、又は任意の送信パケットについては、使用される変調方式は１つだけであるので、それぞれの行における有意味なエントリも１つだけしか存在しない。残りのエントリは空白又は未使用である。これらの空白又は未使用エントリがその後の性能推定において使用されることはない。第１の待ち行列２１２中の待ち行列エントリは伝送結果又は送信パケットの状態を表している。一般的なシナリオにおいては、パケットの伝送に成功する（例えば、エラーなし）こともあるし、失敗することもある。２値伝送結果の場合、エントリは２つの値、すなわち、真又は論理１と、偽又は論理ゼロとを有することができる。真値は伝送成功に対応することができ、偽値は伝送失敗に対応することができ、逆もまた同様である。性能推定においては、最高値を決定することができるようにパラメータのそれぞれの値について性能スコアが計算される。この最高値は伝送すべき次のパケットに使用される。
【００４２】
図３Ｂは、本発明の一実施形態における変調方式パラメータによりインデックスが付けられた第２の待ち行列２１４を示す図である。第１の待ち行列２１２の場合と同様に、第２の待ち行列２１４はパラメータについて８つの値を有する。
【００４３】
第２の待ち行列もＮ行の待ち行列エントリを有するが、しかしそれぞれの行が同じ時刻又は同じ送信パケットに対応しているわけではない。基本的には、第２の待ち行列２１４の列に対応する８つのサブ待ち行列が存在し、それぞれのサブ待ち行列は、パラメータの１つの値に対応している。したがって、８つのサブカウンタｎ１〜ｎ８が存在する。それぞれのサブカウンタはそれぞれのサブ待ち行列中におけるエントリの数のトラックを維持する。図３Ｂに示すように、サブ待ち行列中におけるエントリの数１、２、３、４、５、６、７、８は、それぞれＮ、２、Ｎ、Ｋ、Ｎ、２、３、Ｎである。第２の待ち行列２１４の更新は、それぞれの個別のサブ待ち行列について行うことができる。この構造の第２の待ち行列におけるさらなる拡張も可能とすることができる。例えば、それぞれのサブ待ち行列は異なるサイズを、すなわち、異なるサイズの履歴ウィンドウを有することができる。それぞれのサブ待ち行列は異なるヒステリシスメカニズムを有することもできる。それに加えて、サブ待ち行列のサイズ及び／又はヒステリシスメカニズムは静的（すなわち、固定）又は動的（すなわち、可変）とすることができる。
【００４４】
第２の待ち行列２１４の構造はもっと多くのエントリを含むが、これらのエントリは遠い過去に伝送されたパケットに対応することもでき、したがって、現在の状況を正確に反映することはできない。上記のように、この問題に対処する１つの方法が、性能スコアの計算の際に、遠い過去のエントリへの重み付けをより最近のエントリへの重み付けよりも小さくすることである。この重み付け方式は第１の待ち行列２１２の構造にも同様に適用することができる。それに加えて、上記のような異なる環境条件に対応するために、重み付け方式それ自体が時間とともに変化することもできる。
【００４５】
図３Ｃは、本発明の一実施形態における複数のパラメータによりインデックスが付けられた第３の待ち行列２１６を示す図である。この例示においては、第３の待ち行列２１６には、パケットサイズ、変調方式、送信パワーからなる３つのパラメータによってインデックスが付けられている。当業者には周知のように、任意の数のパラメータを使用することができる。
【００４６】
第３の待ち行列２１６は、Ｎ個の待ち行列エントリを有する。パケットサイズについてはＫ個の値、変調方式についてはＬ個の値、送信パワーについてはＭ個の値が存在する。したがって、ＫＬＭ個のサブ待ち行列が存在する。例えば、Ｋ＝１０、Ｌ＝８、Ｍ＝３の場合は、第３の待ち行列中におけるサブ待ち行列又は列の総数は２４０である。第３の待ち行列２１６中におけるそれぞれの列は、第１の待ち行列２１２及び第２の待ち行列２１４との関連で検討したように、同じ時刻又は異なる時刻に対応することができる。
【００４７】
複数のパラメータを有するという点を除けば、第３の待ち行列２１６は、第１の待ち行列２１２及び第２の待ち行列２１４に類似している。第１の待ち行列２１２及び第２の待ち行列２１４に関する全ての検討は第３の待ち行列２１６にも適用可能であり、したがって、繰返しは避けることにする。
【００４８】
図４は、本発明の一実施形態による伝送パラメータ値の生成を適応制御するためのプロセス４００を例示したフローチャートである。
【００４９】
始まりにおいては、プロセス４００は、パラメータの現在の値を用いてデータストリーム内の現在のパケットを送信する（ステップ４１０）。パラメータは、変調方式、パケットサイズ、送信パワー、通信伝送に関する任意のその他の関連パラメータ、又はそれらの任意の組合せのいずれか１つとすることができる。現在のパケットは、実際のデータパケット又はプローブ又はダミーパケットとすることができる。次に、プロセス４００は伝送される現在のパケットの送信状態を決定する（ステップ４２０）。この状態は、返信確認応答のチェック又は任意のその他の状態報告技術により得ることができる。状態は、現在のパケットの伝送が成功であるかないかを示す。
【００５０】
その後に、プロセス４００は送信状態に基づいて待ち行列中の待ち行列エントリを更新する（ステップ４３０）。図５にステップ４３０の詳細を示す。次に、プロセス４００は、待ち行列エントリに基づいてパラメータの値について性能スコアを計算する（ステップ４４０）。図６にステップ４４０の詳細を示す。その後に、プロセス４００は、性能スコアの中の最高値に対応するパラメータの最高値を選択する（ステップ４５０）。次に、プロセス４００は、パラメータの最高値を用いて、次のパケットを送信し（ステップ５４７６０）、その後に終了させられる。
【００５１】
図５は、本発明の一実施形態による待ち行列を更新するためのプロセス４３０を例示したフローチャートである。
【００５２】
開始において、プロセス４３０は、送信パケットの履歴ウィンドウに対応したカウンタを更新する（ステップ５１０）。複数のパラメータが存在する場合は、カウンタは多くのサブカウンタを含むことができる。その後に、プロセス４３０はカウンタが最大ウィンドウサイズを超えるかどうかを決定する（ステップ５２０）。そうである場合は、プロセス４３０は新しいエントリのための場所を作るために待ち行列中の最も古いエントリを削除し（ステップ５３０）、その後にステップ５４０に進む。そうではない場合は、プロセス４３０はステップ５４０に進む。ステップ５４０においては、プロセス４３０は送信状態が成功であるかどうかを決定する（ステップ５４０）。リードソロモン（Reed-Solomon）によるＦＥＣ又は畳込み符号化のようなエラー訂正が使用される場合は、成功状態は、受信機においてエラーを満足できる状態又は完全に訂正することができるパケットだけを表している。成功である場合は、プロセス４３０は成功を示す新しいエントリを待ち行列に挿入し（ステップ５５０）、その後に終了させられる。成功ではない場合は、プロセス４３０は失敗を示す新しいエントリを待ち行列に挿入し（ステップ５６０）、その後に終了させられる。
【００５３】
図６は、本発明の一実施形態による性能スコアを計算するためのプロセス４４０を例示したフローチャートである。
【００５４】
始まりにおいては、プロセス４４０はパラメータの値についての更新された待ち行列エントリを用いて送信パケットの成功率を判定する（ステップ６１０）。パラメータのそれぞれの値についての成功率は、待ち行列中の成功待ち行列エントリの割合を決定すること、又は成功待ち行列エントリの数を数えることにより算出することができる。その後に、プロセス４４０は、成功率及びパラメータの理論値に関数を適用し、性能スコアを生成する（ステップ６２０）、その後に終了させられる。この関数は、パラメータの全ての値、すなわちパラメータの現在の値、より高い値及びより低い値のような、値のサブセットに適用することができる。関数は、現在のパケットエラー率を考慮に入れた最高性能を強調する任意の適当な関数とすることができる。この関数の具体例としては、スケール係数の有無にかかわらず乗算が含まれる。理論値は、基本となるパラメータについて計算又は推定される値である。
【００５５】
本発明を幾つかの実施形態により説明してきたが、本発明が説明した実施形態だけに限定されるものではなく、添付の特許請求の範囲の精神及び範囲の枠内における修正及び変更を伴ったものも実施可能であることは、当業者には理解されよう。したがって、この説明は限定ではなく、例示を目的としたものであると考えられたい。
【図面の簡単な説明】
【００５６】
本発明は、本発明の実施形態を例示するために使用される以下の説明及び図面を参照す
ることにより最もよく理解することができる。
【図１Ａ】本発明の一実施形態を実現するシステムの構成を示すブロック図である。
【図１Ｂ】本発明の一実施形態を実現するホストコンピュータシステムの構成を示すブロック図である。
【図２】本発明の一実施形態による適応コントローラの構成を示すブロック図である。
【図３Ａ】本発明の一実施形態による変調方式をインデックスとした第１の待ち行列を示す図である。
【図３Ｂ】本発明の一実施形態による変調方式をインデックスとした第２の待ち行列を示す図である。
【図３Ｃ】本発明の一実施形態による複数のパラメータをインデックスとした第３の待ち行列を示す図である。
【図４】本発明の一実施形態による伝送パラメータ値の生成を適応制御するためのプロセスを例示したフローチャートである。
【図５】本発明の一実施形態による待ち行列を更新するためのプロセスを例示したフローチャートである。
【図６】本発明の一実施形態による性能スコアを計算するためのプロセスを例示したフローチャートである。
【図１Ａ】
0004699359.tif 000002
【図１Ｂ】
0004699359.tif 000003
【図２】
0004699359.tif 000004
【図３Ａ】
0004699359.tif 000005
【図３Ｂ】
0004699359.tif 000006
【図３Ｃ】
0004699359.tif 000007
【図４】
0004699359.tif 000008
【図５】
0004699359.tif 000009
【図６】
0004699359.tif 000010