優先権の主張
本特許出願は、2009年11月6日に出願された「USB規格対応デバイスのためのリソース節約の手法(“RESOURCE CONSERVATION STRATEGIES FOR USB COMPLIANT DEVICES”)」と題する米国仮特許出願第61/259,054号、および2009年11月9日に出願された「USB規格対応デバイス(“RESOURCE CONSERVATION STRATEGIES FOR USB COMPLIANT DEVICES”)のためのリソース節約の手法」と題する米国仮特許出願第61/259,323号の両方の優先権を主張し、これらの両方は、ここにおいて参照により、明示的にここに組み込まれる。
背景
(分野)
本願は、デバイス間の通信を調整すること(regulating)に関し、特に、データ通信プロトコル規格対応デバイス(data communication protocol compliant devices)のためのリソースの節約(resource conservation)に関する。
(背景)
ユニバーサルシリアルバス(USB)標準規格(The Universal Serial Bus (USB) standard)は、電子周辺デバイスをホストデバイスに接続するためのデータ通信プロトコルを定めている(defines)。USB標準規格(USB standard)には、これまでに3つのリリース(USB1.0、USB2.0、およびUSB3.0)がある。USB標準規格は当初、コンピュータにおける標準的ではないシリアルデータポートおよびパラレルデータポートに取って代わるものと考えられていたが、それは、さまざまなデバイスドライバの開発と維持を要求した。しかしながら、その後のUSB標準規格の普及により、USBポートは、テレビゲーム機器、DVDプレイヤー、スマートフォン、および広くさまざまな他の家庭用電化製品で標準的な特徴となった。
周辺機器は、しばしば機能と呼ばれ、他のコンピュータ、およびキーボード、スキャナ、デジタルカメラ、プリンタ、外部記憶装置、等といったデバイスを含むことができる。USB標準規格は、ホストの電源を落としたりホストを再起動したりせずに、周辺デバイスをホストに接続し、ホストから取り外せるようにする、プラグ・アンド・プレイ能力を可能にする。まして、ホストは、デバイスが初めて接続された場合、エニュメレーション(enumeration)を行って、それを認識し、そのデバイスに必要なデバイスドライバをロードする。そして、ホストおよび接続された周辺機器は、互いにデータを通信することができる。
付属の特許請求の範囲に含まれるシステム、方法、デバイスのさまざまな実施形態の各々は、いくつかの態様を有するが、そのうちのどれ一つとして、ここに説明された所望の特徴に単独で寄与するものはない。いくつかの顕著な特徴が、付属の特許請求の範囲を限定することなく、ここに説明される。この説明を考慮した上で、特に、「詳細な説明」と題するセクションを読むと、ページチャネル等のモニタリングを管理するために、さまざまな実施形態の特徴がどのように使用されるかが理解されるだろう。
本開示の一態様は、方法の実現(implementation)であり、その方法は、第1のデバイスと第2のデバイスとの間の通信をサポートするために、第1のデバイスに位置する対応するリソースの測定値を表す少なくとも1つの信号を検知することと、少なくとも1つの信号に基づいてリソース利用値(a resource utilization value)を決定することと、リソース利用値に少なくとも部分的に基づいて動作パラメータ値を選択することにより動作パラメータを調節することとを含み、動作パラメータは第1のデバイスによる通信の処理に影響を及ぼす。
本開示の別の態様は、デバイスの実現(implementation)であり、そのデバイスは、そのデバイスと第2のデバイスとの間の通信をサポートするために、そのデバイスに位置する対応するリソースの測定値を表す少なくとも1つの信号を検知するように構成されたモニタリングエンティティを含む。上記デバイスはまた、上記少なくとも1つの信号に基づいてリソース利用値を決定し、リソース利用値に少なくとも部分的に基づいて動作パラメータ値を選択することにより動作パラメータを調節するように構成されたコントローラを含み、動作パラメータは上記デバイスによる通信の処理に影響を及ぼす。
本開示のさらに別の態様は、デバイスの実現(implementation)であり、そのデバイスは、そのデバイスと第2のデバイスとの間の通信をサポートするために、そのデバイスに位置する対応するリソースの測定値を表す少なくとも1つの信号を検知するための手段と、少なくとも1つの信号に基づいてリソース利用値を決定するための手段と、リソース利用値に少なくとも部分的に基づいて動作パラメータ値を選択することにより動作パラメータを調節するための手段とを含み、動作パラメータは上記デバイスによる通信の処理に影響を及ぼす。
本開示のさらに別の態様は、コンピュータプログラム製品の実現(implementation)であり、そのコンピュータプログラム製品は、非一時的なメモリに記憶された命令を備えたコンピュータ可読媒体を含み、その命令は、実行されると、装置に、第1のデバイスと第2のデバイスとの間の通信をサポートするために、第1のデバイスに位置する対応するリソースの測定値を表す少なくとも1つの信号を検知させ、少なくとも1つの信号に基づいてリソース利用値を決定させ、リソース利用値に少なくとも部分的に基づいて動作パラメータ値を選択することにより動作パラメータを調節させ、動作パラメータは第1のデバイスによる通信の処理に影響を及ぼす。
本開示の特徴を詳しく理解することができるように、上で簡潔にまとめられた説明が、態様を参照してより詳細に行われ、それらの態様のうちのいくつかは付属の図面に示される。しかしながら、その説明は、他の等しく有効な態様にも許容されうるので、本開示のある特定の典型的な態様のみを示す添付の図面は、その範囲を限定するものとして考慮されるべきではないということに留意すべきである。
図1は、USBシステムの簡略化されたブロック図である。
図2は、周辺デバイスの実現(implementation)の簡略化されたブロック図である。
図3は、周辺デバイスの実現の簡略化されたブロック図である。
図4は、周辺デバイスの実現の簡略化されたブロック図である。
図5は、周辺デバイスの実現の簡略化されたブロック図である。
図6は、方法の実現のフローチャートである。
図7は、方法の実現のフローチャートである。
図8は、方法の実現の信号図である。
慣例にならって、図に示したさまざまな特徴は、一定の比例に縮小されて描かれていない。したがって、さまざまな特徴の大きさは、わかりやすくするために、任意に拡大または縮小されうる。さらに、図のいくつかは、所与のシステム、方法、またはデバイスのコンポーネントのすべてを示していない場合もある。最後に、同様の参照番号は、明細書および図面を通して同様の特徴を表すために使用されることができる。
詳細な説明
付属の特許請求の範囲に含まれる実施形態のさまざまな態様が、下記に説明される。ここに説明される態様が、広くさまざまな形で具現化されうること、ここに説明される任意の特定の構造および/または機能が、単に代表例であるということが理解されるべきである。本教示に基づいて、当業者は、ここに説明された態様が、任意の他の態様から独立して実現され得る(may be implemented)こと、これらの態様のうちの2つ以上が、さまざまな手法で組み合わせられ得ることを理解すべきである。たとえば、ここで説明される任意の数の態様を使用して、装置が実現される(implemented)ことができ、および/または、方法が実施される(practiced)ことができる。 さらに、ここに説明された態様のうちの1つ以上に追加された、または、ここに説明された態様のうちの1つ以上とは異なる、他の構造および/または機能を用いて、そのような装置が実現され、および/または、そのような方法が実施されうる。
特定の態様がここに説明されるが、これらの態様の多くの変形および置き換えが、本開示の範囲に含まれる。好ましい態様のいくつかの利点および長所が説明されるが、本開示の範囲は、特定の利点、使用、および目的に限定されることを意図しない。むしろ、本開示の態様は、異なる無線技術、システム構成、ネットワーク、および伝送プロトコルに広く適用可能であることが意図され、そのうちのいくつかは、図面と以下の好ましい態様の説明において例として説明される。詳細な説明および図面は、限定的なものではなく、単に本開示を例示したものであり、本開示の範囲は、付属の特許請求の範囲およびその同等物によって定義される。
上述したように、USBポートは、デバイスがホストコントローラにインターフェース接続することを可能にするために、および/または、デバイスどうしが互いにインターフェース接続することを可能にするために、今や、広くさまざまな電子デバイスに標準的な特徴として含まれている。ホストは、典型的には、コンピュータであるが、多くの適用例において、ホストは、テレビゲーム機器、スマートフォン、カメラ、タブレットコンピュータ、または任意の他の電子デバイスであることもできる。ホストとインターフェース接続することができるデバイスにも、さまざまなタイプのものがある。たとえば、周辺デバイスは、ハブ、他のコンピュータ、マウスデバイス、キーボード、スキャナ、デジタルカメラ、プリンタ、外部記憶装置、等を含む。
当業者は、ホストデバイスとみなされうるデバイスのタイプの多くが周辺デバイスともみなされうること、その逆も言えるということを、本開示から理解するであろう。つまり、ホストと周辺デバイスは、同一のタイプのデバイスであることができる。USB標準規格は、USB標準規格によって2つのデバイス間に確立されたデータリンクに対し、2つのデバイスのうちのどちらが、相対的により主要な制御を有するかを識別する便宜上の手法として、「ホスト」と「周辺デバイス」という名称を規定している。ホストがUSBデータリンクの主たるコントローラ(primary controller)として機能する一方で、周辺デバイスは、仮に有するとしても従属的な制御(secondary control)を有する。
さらに、USBシステムにおけるデバイスは、しばしば層状のスター型トポロジーで、USBホストに接続されている。そのような構成において、USBシステムは、ポーリング方式のバスを含み、ホストコントローラは、そのバスで全通信を管理し、かつ、デバイスの接続および/または取り外しによる変化がないか、そのバス型トポロジーをモニタリングする、1つのUSBコントローラを含む。
USBシステムは、バスに接続された複数の周辺機器をサポートするが、USBプロトコルは、ポイントツーポイントプロトコルである。すなわち、1つのホストが一度にデータを送ることができるのは、一意的にアドレス指定された1つのデバイスである。したがって、さまざまなデバイスのためのデータは、各デバイスがその時間スロットの間にデータを送受信することができるように、時間多重される。
USBシステムは、一般的に、1ミリ秒長のフレームを定めている。そのフレーム内で、USBシステムは、バス上のデバイスの多くに、または、すべてに、異なる時間スロットを割り当てることができる。各デバイスが一意的なアドレスを有するため、デバイスは、送信されたデータがそれに宛てられたものであることがわかり、または、各デバイスが送信データとともにその一意的なアドレスを供給するので、ホストは、どのデバイスからデータが受信されたかがわかる。
図1は、単一のホスト110および単一のデバイス120を示した簡易なUSBシステム100の簡略化されたブロック図である。上述したように、当業者は、1つ以上のデバイスがホストに接続されうること、また、ここに開示される実現のより適切な態様を単に示すために、図1に1つのデバイスが示されていることを、理解するだろう。
ホスト110およびデバイス120は、上りリンク124aおよび下りリンク124bを共有する。上りリンクは、デバイス120からホスト110へのデータ通信に使用される。下りリンクは、ホスト110からデバイスへのデータ通信に使用される。上りリンク124aおよび下りリンク124bは、別個の接続のように示されているが、当業者は、上りリンク124aおよび下りリンク124bが、ホスト110とデバイス120との間の同一の物理的な接続上に存在しうることを理解するだろう。上りリンク124aおよび下りリンク124bは、典型的には、ホスト110によって管理されるUSBバスに含まれる。デバイス120は、また、バッファ121を含み、バッファ121は、少なくとも、下りリンク124aを介して受信されたデータを一時的に記憶するために使用される。
多くのUSBバス・トランザクションは、3つのパケットを含む。ホスト110は、トランザクションのタイプと方向、デバイスのアドレス、およびエンドポイント番号を記述したトークンパケットを送る。アドレス指定されたデバイス120は、トークンパケットからそのアドレスを認識する。データは、トークンパケットにおいて指定された方向に基づき、ホスト110からアドレス指定されたデバイス120へ、または、アドレス指定されたデバイス120からホスト110へ、転送される。多くの場合、データの宛先は、転送されたデータの受信ステータスを表すハンドシェイクパケットを用いて応答し、それは、下記においてさらに詳細に説明される。
動作において、デバイス120が初めてホスト110に接続された場合、デバイス120は、ホスト110による使用のためにデバイス120をセットアップするための、および、いくつかの実現ではそのクライアントソフトウェアをセットアップするための、初期設定、エニュメレーション、およびコンフィギュレーションの処理を受ける。
USB標準規格は、USBリンクで約480Mbps(生データ転送速度(raw data-rates))のデータ転送速度をサポートする便利な規格化インターフェース(convenient standardized interface)を提供するが、相対的に高いデータ転送速度は、限られたリソースを有するデバイスに特有の課題を提起する。USB2.0標準規格は、周辺デバイスに対し、ホストから入ってくるデータフローの速度を制御するための限られたセットのメカニズムのみ(only a limited set of mechanisms)を提供する。しかしながら、このフロー制御メカニズムがもたらす効果は限られており、周辺デバイスによって利用可能なリソースが相対的に長い持続時間にわたっておよび/または恒久的に限られている場合、リソースの制約によってもたらされる制限は悪化する。たとえば、いくつかのデバイスは、限られたリソースを有するハンドヘルドデバイスおよび/またはポータブルデバイスでありうる。これらのリソースは、利用可能な動作電力、相対的に少ないメモリの割り当て、処理能力を含みうるが、これらに限定されない。
より具体的には、現在利用可能なUSBフロー制御メカニズムは、デバイスによって利用可能なリソースにおける一時的な制約によってもたらされる、短期間の高い要求を緩和するように設計されたものである。すなわち、現在利用可能なUSB2.0標準規格は、フロー制御メカニズムをトリガするリソースの制約が短時間にわたり持続するという仮定に基づいて設計された基本的なフロー制御メカニズムを提供する。利用可能なフロー制御メカニズムは、周辺デバイスが、利用可能なバッテリー電力といった限られたリソースを有する、という状況に適した解決策を提供しない。
さらに図1を参照すると、USB標準規格によれば、そのような1つのフロー制御メカニズムは、ホスト110からデバイス120へのリンクで送られた、どのデータ/制御トラヒックのセグメントも、3つの考えられる手法のうちの1つで確認応答されなくてはならないと規定している。第一に、デバイス120は、データがエラーなく受信された場合、肯定応答(ACK)を送る。第二に、デバイス120は、ホスト110に対し、USBリンクで、巡回冗長検査(CRC)の失敗、データのエラー受信および/または破損を表すために、否定応答(ERR)を送る。第三に、デバイス120は、ホスト110をフロー制御するために、ホスト110にNAK信号を送ることができる。
デバイス120からホスト110へのNAK信号は、デバイス120が、一時的なリソースの制約により、入ってくるデータを処理できないことを、ホスト110に示すものである。ホストは、この処理において、次のマイクロフレームでデバイス120からさらなるNAKがトリガされるのと同じくらい早く、再送を試みうる。
各NAK送信は、バッテリー電力とUSBリンクの帯域幅を消耗することになるので、このシステムは、電源内蔵型で少なくとも利用可能なバッテリー電力による制約があるポータブルデバイスにとって非効率である。その代わりに、USB標準規格で定められているPINGプロトコルが、バスでの過度なNAKトラヒックの生成を減じるのに有用だが、このメカニズムでさえ、フロー制御メカニズムをトリガしたリソースの制約が短期間にわたって生じるという仮定に基づいている。したがって、デバイスのリソースが長期にわたる時間期間のあいだ制約されている場合には、PINGプロトコルでさえ極めて非効率である。しかし、ポータブルデバイスの初期構成からすると、利用可能なバッテリー電力、メモリ、処理能力といったリソースは、ポータブルデバイスにおいて、しばしば、長い持続時間にわたっておよび/または恒久的に限られている。
システム、方法、および装置の実現は、USB標準規格(USB standards)によって意図された持続時間よりも長い持続時間にわたりリソースの制限をこうむるUSB規格対応デバイス(a USB compliant device)にとって有用でありうる、リソース節約の手法の態様を含む。ここに開示されたシステム、方法、および装置の実現により、USB規格対応デバイスは、ホストとデバイスとの間のUSB通信からもたらされるインタラプト(interrupts)および/または他のオーバーヘッド(other overhead)を選択的に処理することが可能になる。現在のリソース利用レベルに部分的に基づいて、いくつかのインタラプトおよび/または他のオーバーヘッドを処理しないことにより、デバイスは、ホストから相対的に高いデータ転送速度で入ってくるトラヒックを処理するために必要とされるリソースを解放することができる。いくつかの実現では、局所的に実現された手法が非効率的であることが判明すると、デバイスは、ホストに対し、下りリンクのデータ転送速度を減じるようオプションで要求することができる。
図2は、周辺デバイス120の実現の簡略化されたブロック図である。図2に示されたデバイス120は、図1に示されたデバイス120に似ており、図1に示されたデバイス120から適応されている。したがって、簡略のため、両デバイスに共通のエレメントは、共通の参照番号を共有し、両デバイス間の相違のみが、ここで説明される。図2を参照すると、デバイス120は、上記バッファ121と、上述した上りリンク/下りリンク接続124a,bに加え、USBバスインターフェース123、USB論理デバイス125、および機能エレメント127を含む。当業者は、USB規格対応デバイスが他のコンポーネントを含みうることを理解するだろうが、図2に示したデバイス120は、より付属の特許請求の範囲内での実現の態様に関連のある、それらのコンポーネントを含んでいる。
USBバスインターフェース123、USB論理デバイス125、および機能エレメント127は、デバイス120のUSBスタックを含む。動作において、バスインターフェース123は、物理的なデータ伝送(すなわち、ホストとのリンクを介したパケットの送信/受信)の役割を担い、USB論理デバイス125は、バスインターフェース123とデバイス120の個々のエンドポイントとの間でパケットをルーティングする役割を担う。機能エレメント127は、デバイス120(たとえば、デジタルカメラ)によって提供される実際の機能を表す。
機能エレメント127は、リソース128を含む。リソース128は、非限定的に、メモリ131、プロセッサ133(またはコントローラ)、およびデバイス120の電源の役割を果たすバッテリー135を含む。当業者は、リソース128が、バスインターフェース123や論理デバイス125といった、デバイスに含まれた他のコンポーネントによって共有されうること、リソース128は、単に考えられる1つの実現として機能エレメント127内に示されているだけであることを、本開示から理解するだろう。
動作において、バスインターフェース123は、データの転送が首尾よく(successfully)完了すると、上位層にインタラプトを送る。インタラプトの頻度は、しばしば実現ごとに固有(implementation specific)である。たとえば、USB2.0は、マイクロフレーム境界(micro-frame boundaries)で動作し、ここで、各マイクロフレームは、125マイクロ秒長である。マイクロフレーム境界でのインタラプトは、普通、大きい処理オーバーヘッドという結果を招く。したがって、多くのUSBデバイスは、ミリ秒(msec)の境界、またはUSBによって定められたフレーム境界(the USB defined frame boundaries)といった、より少ないインタラプト頻度で動作する。連続するインタラプト間の最小間隔(minimum interval)はしばしば、最小インタラプト間隔時間(minimum interrupt interval time)と呼ばれる。バスコントローラからのインタラプトに応じて、データフェーズ中に、論理デバイス125は、ホストから受信されていたかもしれない、バッファ121における利用可能な任意のデータを処理する。この処理は、デバイス120の処理能力、メモリ、等を含むがこれらに限定されないリソースを消費する。上述したように、現在利用可能なUSB標準規格は、デバイス120のリソース128が、相対的に長い持続時間にわたって制約されている、および/または限られている、という状況に適した解決策を提供するフロー制御メカニズムを提供しない。
図3は、周辺デバイス120の実現の簡略化されたブロック図である。図2に示されたデバイス120は、図1に示されたデバイス120に似ており、図1に示されたデバイス120から適応されたものである。したがって、簡略のため、両デバイスに共通のエレメントは、共通の参照番号を共有し、両デバイス間の相違のみが、ここで説明される。図3を参照すると、デバイス120は、モニタリングエンティティ(a monitoring entity)150とインタラプトプロセッサ(an interrupt processor)とをさらに含む。
インタラプトモニタリングエンティティ(interrupt monitoring entity)150は、リソース128のうちの1つ以上に対応する測定値を表す信号を検知する。下記においてさらに詳細に説明されるように、この信号のうちの1つ以上は、リソース利用値に変換される。このリソース利用値は、次いで、インタラプトプロセッサ140に供給される。インタラプトプロセッサ140は、バスインターフェース123によって生成されたインタラプトに応じてどのように処理を行うかを調節する。いくつかの実現において、インタラプトプロセッサ140はまた、しきい値レベルを超えたバッファ内のデータの処理をどのように行うかを調節する。
1つの実現において、総リソース利用可能度(the total resource availability)は、N段階のレベルまたはビンに量子化される。これらのレベルは、インデックスn(ここで、1≦n≦N)によって指定されうる。すなわち、rが、問題となっているリソースの利用パーセンテージを表すとすると、レベルnは、rがThMAX_n−1<r≦ThMAX_nの範囲にあるケースに対応し、ここで、ThMAX_nは、インデックスnによって表される特定のビンのためのリソース利用の上限値(the upper threshold of resource utilization)を表す。
1つの実現において、このレベルは、漸進的に増加するリソース利用のレベル(progressively increasing levels of resource utilization)を表す。すなわち、ThMAX_n−1<ThMAX_nである。しかしながら、当業者は、本開示から、このレベルが、漸進的に減少するリソース利用のレベルを示すことを含んだ、レベル間で多くの他の関係が定められうること、を理解するだろう。
1つの実現において、各レベルには、バスインターフェース123によって生成されたインタラプトをゲート制御する(gate)ために使用されうる最小インタラプト間隔時間値が割り当てられる。たとえば、動作において、リソースの利用が特定のしきい値を超えた場合、デバイス120は、リソースの消費を少なくする必要があり得る。このしきい値を超えると、デバイスは、自立的に、バスコントローラ123からのインタラプト頻度をより少ないインタラプト頻度に適応的に切り替えることにより、リソースを節約することを選び得る。これは、現在のリソース利用レベルに基づいて選ばれたビンnに対応する最小インタラプト間隔時間値を動的に変更することによって、達成されることができる。この処理は、図6を参照してさらに説明される。
インタラプト頻度が変わるにつれ、リソースの利用が増えるので、デバイス120は、待ち時間(latencies)を犠牲にしてアグリゲーション(aggregation)から利益を達成する(As the interrupt frequency changes, the device 120 achieves gains from aggregation at the cost of latencies as the resource utilization increases.)。一方、リソース利用レベルが減少すると、デバイス120は、インタラプト頻度をノーマルなレベルまで引き上げ戻す。これは、ノーマルな動作状況下でのデバイス120の待ち時間を減じることを可能にする。
入ってくるデータ転送速度が与えられたリソース利用の所定のレベルで、バッファ121がオーバーフローしないように、各レベルのための最小インタラプト間隔の値は、さらに選ばれることができる。デバイス120は広くさまざまな機能を有しうるので、それぞれのレベルのための最小インタラプト間隔値は、特定の実現に依存する。
別の実現においては、各レベルは、受信されたイベント信号(a received event-signal)、例えば、インタラプト、および/または、しきい値を突破するバッファにおけるデータ量(the amount of data in a buffer breaching a threshold)、に応じた処理の確率値(a probability value of processing)が割り当てられる。言い換えると、インタラプトサービスルーチンは、Pの確率で、データ転送をシグナリングするインタラプトを処理することができる。すなわち、データ転送の終了を表すインタラプトは、(1−P)の確率で、データの損失なしにデバイス120によって自立的にドロップされうる。この処理のより詳細な例は、図7を参照し、下記において説明される。
ここでも、デバイス120は多種多様の機能を有しうるので、各レベルでのPの値は、バッファのオーバーフローに起因する任意の考えられるデータの損失を避けるために利用可能なハードウェアバッファのサイズを含み、特定の実現に依存する。さらに、いくつかの実現において、Pの値はまた、デバイスで使用されている、現在のリソース利用レベルおよび最小インタラプト間隔時間値を考慮に入れる。
さらに、別の実現では、インタラプトは、前に受信されたM個の連続するインタラプトが実行(service)されていなかった場合、バッファのオーバーフローに起因するデータの損失を少なくするため、および/または防ぐために、自動的に実行(service)される。すなわち、実行されていないM個の連続するインタラプトの後には、デバイスのバッファがオーバーフローするリスクがある。このリスクを減じるために、次のインタラプトは、自動的に実行される。実行されていないM個の連続するインタラプトにヒットする確率は、所与のレベルのための確率値Pに依存する。
ここに開示されるさまざまな手法は、ソフトウェア、ハードウェア、ファームウェア、またはそれらの組み合わせのいずれかで実現されうる。図4は、図3に示したデバイス120におけるソフトウェアの実現の簡略化されたブロック図である。図2に示されたデバイス120は、図1に示されたデバイス120に似ており、図1に示されたデバイス120から適応されている。 したがって、簡略のために、両デバイスに共通のエレメントは、共通の参照番号を共有し、両デバイス間の相違のみが、ここで説明される。
図4を参照すると、デバイス120は、ハードウェアインタラプトを生成するハードウェアコンポーネント160を含む。1つの実現において、ハードウェアコンポーネント160は、少なくとも(図3に示した)バスインターフェース123の一部を含む。デバイス120はまた、2つのソフトウェアモジュールを含む。1つは、インタラプトマネジャモジュール141であり、もう1つは、インタラプトを処理するソフトウェアモジュール142である。
動作において、インタラプトマネジャ141は、モニタリングエンティティからリソース利用値を受信する。それに応じて、インタラプトマネジャ141は、上述した実現のうちの1つに基づいて、最小インタラプト間隔時間値と確率値のうちの1つを選択し、その値をインタラプトを処理するソフトウェア142に供給する。それに応じて、インタラプト処理ソフトウェア(interrupt processing software)141は、新たな最小インタラプト間隔時間値を用いてハードウェアインタラプトをゲート制御するか、または、確率値を使用してハードウェアインタラプトをドロップすべきかどうかを決定する。
図5は、図3に示したデバイス120の別の代替の実現の簡略化された部分ブロック図である。図2に示されたデバイス120は、図1に示されたデバイス120と似ており、図1に示されたデバイス120から適応されている。したがって、簡略のため、両デバイスに共通のエレメントは、共通の参照番号を共有し、両デバイス間の相違のみが、ここで説明される。
図5を参照すると、デバイス120は、ハードウェアインタラプトを生成するハードウェアコンポーネント160を含む。1つの実現において、ハードウェアコンポーネント160は、少なくとも(図3に示した)バスインターフェース123の一部を含む。デバイス120はまた、ハードウェアで実現されたインタラプトマネジャ141を含む。
動作において、インタラプトマネジャ141は、モニタリングエンティティ(monitoring entity)からリソース利用値を受信する。それに応じて、インタラプトマネジャ141は、上述した実現のうちの1つに基づいて、最小インタラプト間隔時間値と確率値のうちの1つを選択し、その値をハードウェアモジュール160に供給する。それに応じて、ハードウェアモジュール160は、新たな最小インタラプト間隔時間値を用いてハードウェアインタラプトをゲート制御するか、または、確率値を使用してハードウェアインタラプトをドロップすべきかどうかを決定する。
図6は、方法の実現のフローチャートである。ブロック6−1に示すように、この方法は、デバイス内での総リソース利用可能度に基づいて、2つ以上の離散的なリソース利用のレベル(two more discrete levels)(またはビン)を決定することを含む。ブロック6−2に示すように、この方法は、離散的なリソース利用のレベルの各々に関し、それぞれの最小インタラプト間隔時間値を決定すること、および設定することのうちの1つを含む。ブロック6−3に示すように、この方法は、デバイスに含まれた1つ以上のリソースに関するリソース測定値を受信することを含む。ブロック6−4に示すように、この方法は、リソース測定値に基づいてリソース利用値を決定することを含む。ブロック6−5に示すように、この方法は、リソース利用値を所定のリソース利用レベルのうちの1つにマッピングすることにより、リソース利用値に基づいて最小インタラプト間隔時間値を選択することを含む。ブロック6−6に示すように、この方法は、選択された最小インタラプト間隔時間値を使用してインタラプトをゲート制御するためにタイマーを設定することを含む。
図7は、方法の実現のフローチャートである。ブロック7−1に示すように、この方法は、デバイス内での総リソース利用可能度に基づいて、2つ以上の離散的なリソース利用のレベル(またはビン)を決定することを含む。ブロック7−2に示すように、この方法は、離散的なリソース利用のレベルの各々に関し、それぞれの確率値を決定すること、および設定することのうちの1つを含む。ブロック7−3に示すように、この方法は、たとえば、バスインターフェースのようなデータリンクインターフェース(a data link interface)からインタラプトを受信することを含む。ブロック7−4に示すように、この方法は、デバイスに含まれた1つ以上のリソースに関するリソース測定値を受信することを含む。ブロック7−5に示すように、この方法は、リソース測定値に基づいてリソース利用値を決定することを含む。ブロック7−6に示すように、この方法は、リソース利用値を所定のリソース利用レベルのうちの1つにマッピングすることにより、リソース利用値に基づいて確率値を選択することを含む。
ブロック7−7に示すように、この方法は、確率値に基づいて、受信されたインタラプトに関連づけられた処理をスキップすべきかどうかを決定することを含む。1つの例示的な実現において、数がランダムに発生させられ、確率値と比較される。ランダムに発生させられた数が確率値よりも大きい場合、関連づけられた処理は、受信されたインタラプトに応じて行われる。一方、ランダムに発生させられた数が確率値未満である場合、関連づけられた処理は、スキップされる。さらにブロック7−7を参照すると、確率値に基づいて、関連づけられた処理がスキップされるべきでないと決定された場合(7−7の「いいえ」)、この方法は、ブロック7−10に示した方法の一部に進むことを含む。一方、確率値に基づいて、関連づけられた処理がスキップされるべきであると決定された場合(7−7の「はい」)、この方法は、ブロック7−8に示した方法の一部に進むことを含む。
ブロック7−8を参照すると、この方法は、受信された前のM個のインタラプトがスキップされたかどうかを決定することを含む。前のM個のインタラプトがスキップされていた場合(7−8の「はい」)、ブロック7−10に示すように、この方法は、ブロック7−3に示した方法の一部に戻る前に、受信されたインタラプトに関連づけられた処理を実行することを含む。一方、前のM個のインタラプトがスキップされていなかった場合(7−8の「いいえ」)、ブロック7−9に示すように、この方法は、受信されたインタラプトに関連づけられた処理をスキップし、ブロック7−3に示した方法の一部に戻ることを含む。
図3をさらに参照すると、上記方法が、ホスト110からのフローの制御に十分に影響を及ぼさない状況があり得る。そのような状況において、デバイス120は、オプションで、ホスト110に対し伝送データ転送速度を低くするよう要求を送ることができる。図8は、そのような方法の実現の信号図である。
上述した例の1つによると、ブロック801に示すように、デバイス120は、現在のリソース利用レベルに基づいて動作パラメータを変更すべきかどうかを決定する。上述した例の1つによると、ブロック802に示すように、デバイス120は、局所的に補償を試みる。ブロック803に示すように、デバイスは、局所的な補償の取り組みが成功したかどうかを決定する。局所的な補償の取り組みが成功した場合(803で「はい」の場合)、ブロック804に示すように、デバイス120は、さらなる動作を行う必要はない。一方、局所的な補償の取り組みが成功しなかった場合(803で「いいえ」の場合)、ブロック805に示すように、デバイス120は、データリンクに影響を及ぼす1つ以上の動作設定を変更する。信号806で示すように、デバイス120は、ホスト110に新たな設定を送信する。ブロック807に示すように、ホスト110は、データリンクをコンフィギュレーションし直す。信号808で示すように、ホストは、新たな設定のもと、デバイス120にデータを送信する。
USB規格対応デバイスは、初期設定時に、サポートされたコンフィギュレーションの各々のための、複数の代わりの設定のエニュメレーションを行うことができる。代わりの設定の各々は、各エンドポイントのためのサポートされたデータ転送速度といったパラメータを含むことができる。
そのようなものとして、1つの実現では、USB規格対応デバイスは、複数の代わりの設定をサポートし、その各々は、個々のデータ転送速度のためのサポートされた最大データ転送速度の異なるセットを有する。さらに、デバイスのリソースが制約されている場合、デバイスは、所定の、実現に固有の信号をホストに送ることができる。たとえば、これは、特定の機能のための関連づけられた制御パイプでの複数のストールトークン、複数の連続したタイムアウト(back-to-back time-outs)、または、ホストソフトウェアによってインタラプトされうる、実現に固有の、カスタマイズされた制御トークンでさえであることができる。そして、この信号は、ホストソフトウェアのレイヤによるデータ転送速度の再評価をトリガするために使用されることができる。1つの実現において、デバイスが、フロー制御をトリガするために所定の信号をホストに送ると、それに応じて、ホストソフトウェアは、デバイスによるリソースの節約を支援するために、より低いデータ転送速度を含む代わりの設定への移行をトリガする。さらに、および/または、その代わりに、デバイスが、新たに再調整された代わりの設定に対応するデータ転送速度もまた高すぎると最終的に決定すると、デバイスは、ホストへのフロー制御信号を繰り返すことができ、ホストは、より節約的な代わりの設定に切り替えることができる。
このアプローチは、長期にわたる時間期間のあいだ、NAKトークンの生成を減じるために実現されることができる。また、デバイスおよびホストは、利用可能なリソースに基づいたデータ転送速度の調節メカニズムを確立することができるので、データ転送速度は、直近のデバイスのステータスに基づいて調節されることができ、それにより、デバイスは、確実に、ホストをフロー制御するためにさらなる電力を消費させられずに済む。すなわち、フロー制御が、USBの仕様での規定のごとくマイクロフレームごとに実行されるのではなく、はるかにより少ない頻度で実行されるので、ホストをフロー制御するコストは少なくなる。
USB2.0標準規格は、上記PINGプロトコルを使用したNAK制限機能の導入により、特定の機能/エンドポイントのためのフロー制御に起因するリンク帯域幅/リソースの過度な消耗という課題に部分的に対処している。デバイスが、OUTトークンに対しNAKを用いて応答することによりホストをフロー制御する場合、ホストは、PINGパケットを用いてデバイスのステータスをポーリングすることができる。そして、デバイスは、現在のデバイスのステータスに基づいて、これらの特別なPINGトークンに対し、ACK/NAKを用いて応答することができる。PINGに対するNAK応答に対し、PINGに対するACK応答は、デバイスがさらなるデータを受け入れ可能であることを表している。
PINGトークンは、OUTトークンのためのNAK帯域幅とリソースの消耗を少なくするために有用なメカニズムを提供するが、このメカニズムに固有の問題は、USB標準規格がPINGトークンの頻度に何の制限も設けていないことである。たとえば、ホストは、ほぼどの頻度でも(at almost any frequency)PINGトークンを発行できるが、デバイスは、連続するマイクロフレームにおけるような頻度でPINGトークンを処理できなくてはならない、とUSB2.0標準規格は規定している。
この問題を解決するために、1つの実現では、ホストは、繰り返されるPING送信の間、指数関数バックオフメカニズムにしたがう。ホストが第1のPINGトークンを発行すると、ホストは初期値でタイマーを開始する。デバイスがNAKを用いて応答する場合、ホストは、次のPINGトークンを発行する前に、タイマーが満了するまで待機する。連続するPINGトランザクションごとに、タイマーの値は、PINGバックオフにについて、ある特定の最大値に到達するまで、増加ファクター(a multiplicative factor)によって増やされる。最大値は、個々の機能およびデバイスの特徴に基づいて決定されることができるので、実現によって固有である。
「第1」、「第2」等の名称を使用した、ここでのエレメントへのいずれの言及も、一般的に、それらのエレメントの数または順序を限定するものではないということが理解されるべきである。むしろ、これらの名称は、2つ以上のエレメントどうし、またはエレメントの実例どうしを区別する便宜上の方法として、ここでは使用され得る。したがって、第1および第2のエレメントへの言及は、2つだけのエレメントがそこで用いられ得るという意味でも、第1のエレメントが何らかの手法で第2のエレメントより前に起こらなくてはならないという意味でもない。また、そうでないとの記載がない限り、エレメントのセットは、1つ以上のエレメントを含むことができる。
当業者は、情報および信号が、さまざまな異なる技術および手法のうちのいずれかを使用して表され得ることを理解するだろう。たとえば、上記説明を通して言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場または磁性粒子、光場または光粒子、またはそれらの任意の組み合わせによって表されることができる。
当業者は、ここに開示された態様に関連して説明されたさまざまな例示的な論理ブロック、モジュール、プロセッサ、手段、回路、およびアルゴリズムのステップが、いずれも、電子ハードウェア(たとえば、ソースの符号化または何らかの他の手法を用いて設計されうる、デジタル実現、アナログ実現、またはその2つの組み合わせ)、(便宜上、ここでは「ソフトウェア」または「ソフトウェアモジュール」と呼ばれ得る)命令を組み込んだ、さまざまな形態のプログラムまたは設計コード、またはその2つの組み合わせとして実現され得ることを、さらに理解するだろう。ハードウェアとソフトウェアのこの互換性を明確に説明するために、さまざまな例示的なコンポーネント、ブロック、モジュール、回路、およびステップが、それらの機能の観点で一般的に上述されている。そのような機能がハードウェアとして実現されるかソフトウェアとして実現されるかは、システム全体に課せられた特定の用途および設計上の制約に依存する。当業者は、特定の用途ごとにさまざまな手法で、説明された機能を実現することができるが、そのような実現の決定は、本開示の範囲から逸脱するものと解釈されるべきではない。
ここに開示された態様に関連して説明されたさまざまな例示的な論理ブロック、モジュール、および回路は、集積回路(IC)、アクセス端末、またはアクセスポイント内で実現されることができ、またはそれらによって実行されることができる。ICは、ここに説明された機能を実行するように設計され、IC内に、IC外に、またはその両方に存在するコードまたは命令を実行することができる、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)または他のプログラマブル論理デバイス、離散ゲートまたはトランジスタ論理、離散ハードウェアコンポーネント、電気コンポーネント、光コンポーネント、機械コンポーネント、またはそれらの任意の組み合わせを含むことができる。汎用プロセッサは、マイクロプロセッサであることができるが、その代わりに、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであることができる。プロセッサは、また、コンピューティングデバイスの組み合わせ、たとえば、DSPと、1つのマイクロプロセッサ、複数のマイクロプロセッサ、DSPコアに連結された1つ以上のマイクロプロセッサの組み合わせ、または任意の他のそのような構成としても実現されることができる。
開示された任意の処理におけるステップのいずれの具体的な順序も階層も、例示的なアプローチの一例であるということが理解されるべきである。処理におけるステップの具体的な順序または階層は、設計の優先性に基づいて並べ替えられることができると同時に、本開示の範囲内のままである、ということが理解されるべきである。付属の方法の請求項は、例示的な順序で、さまざまなステップのエレメントを提示しているが、提示された具体的な順序または階層に限定されることを意図しない。
説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせにおいて実現されることができる。ソフトウェアで実現される場合、機能は、コンピュータ可読媒体で、1つ以上の命令またはコードとして記憶または伝送されることができる。コンピュータ可読媒体は、コンピュータ記憶媒体、および、1つの場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスされることができる、任意の入手可能な媒体であることができる。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD−ROM、または他の光ディスク記憶装置、磁気ディスク記憶装置、または他の磁気記憶デバイス、または命令またはデータ構造の形態で所望のプログラムコードを搬送または記憶するために使用されることができ、かつ、コンピュータによってアクセスされることができる任意の他の媒体を含むことができる。また、任意の接続も当然、コンピュータ可読媒体と呼ばれる。たとえば、ソフトウェアが、ウェブサイト、サーバー、または他のリモートソースから、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波のような無線技術を使用して伝送される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波のような無線技術は、媒体の定義に含まれる。ディスク(disk)およびディスク(disc)は、ここで使用される場合、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)、およびブルーレイ(登録商標)ディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生するが、ディスク(disc)は、レーザーを用いて光学的にデータを再生する。上述したものの組み合わせも、コンピュータ可読媒体の範囲内に含まれるべきである。要するに、コンピュータ可読媒体は、任意の適切なコンピュータプログラム製品において実現され得るということが理解されるべきである。
上記説明は、いずれの当業者にも付属の特許請求の範囲内の実施例を製造または使用させることができるように提供されている。これらの態様に対するさまざまな変更は、当業者には容易に理解でき、ここで定義された一般的な原理は、この開示の範囲から逸脱せずに、他の態様に適用されることができる。したがって、本開示は、ここに示した態様に限定されることを意図せず、ここに開示された原理および新規な特徴と整合する最も広い範囲が与えられるものとする。