JP2005508041A - バスデバイスの選択的サスペンド - Google Patents

バスデバイスの選択的サスペンド Download PDF

Info

Publication number
JP2005508041A
JP2005508041A JP2003540780A JP2003540780A JP2005508041A JP 2005508041 A JP2005508041 A JP 2005508041A JP 2003540780 A JP2003540780 A JP 2003540780A JP 2003540780 A JP2003540780 A JP 2003540780A JP 2005508041 A JP2005508041 A JP 2005508041A
Authority
JP
Japan
Prior art keywords
child
computer
tree
devices
controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2003540780A
Other languages
English (en)
Other versions
JP4290550B2 (ja
JP2005508041A5 (ja
Inventor
ジー.スザ ジョセフ
ジェイ.ホラン ドロン
ディー.レイ ケネス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005508041A publication Critical patent/JP2005508041A/ja
Publication of JP2005508041A5 publication Critical patent/JP2005508041A5/ja
Application granted granted Critical
Publication of JP4290550B2 publication Critical patent/JP4290550B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3253Power saving in bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Small-Scale Networks (AREA)
  • Power Sources (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Traffic Control Systems (AREA)
  • Bus Control (AREA)

Abstract

バス(84)を介して接続された1つまたは複数のハードウェアデバイス(86、90、92、94、および96)に電力制御を施行する方法およびシステム。本発明は、第2のデバイスに接続された第1のデバイスをサスペンドすることをシグナリングし、待機する方法およびシステムを含む。本発明は、ツリー中の親デバイスおよび子デバイスとして階層的に編成された1つまたは複数のデバイスを有するデバイスのツリーをサスペンドする方法およびシステムも含む。ツリーのルートにあるコントローラ(86)は、子デバイスの1つまたは複数からアイドル要求を受け取り、各子デバイスからアイドル要求を受け取った後にツリー中のすべてのデバイスをサスペンドする。本発明は、アイドル要求を通信するための入出力制御(IOCTL)のデータ構造も含む。

Description

【技術分野】
【0001】
本発明は、一般にはデバイスの電力制御の分野に関する。詳細には、本発明は、バスを介して接続された1つまたは複数のハードウェアデバイスに電力制御を施行して選択的にデバイスをサスペンドさせるシステムおよび方法に関する。
【背景技術】
【0002】
パーソナルコンピュータには、各種のバスアーキテクチャを介して周辺ハードウェアデバイスが接続する。例えば、ユニバーサルシリアルバス(USB)は、ハブ、ヒューマンインターフェースデバイス(HID)、スピーカ、およびユーザ入力装置などのデバイスを接続する。従来技術によるシステムの一部では、ホストオペレーティングシステムは、そのデバイスがその時に使用されていなくともシステムの稼動中は接続されたデバイスをフルパワー状態に維持する。さらに、ハブまたはコントローラは、それらに接続された非ハブデバイスがない時でも不必要にフルパワーの状態を保つ。これらの制約は、デスクトップコンピュータの場合には電力の消費と熱の発生を意味し、また特にラップトップコンピュータの場合はバッテリ電力の節減が必要となることを意味する。
【発明の開示】
【発明が解決しようとする課題】
【0003】
また、従来技術のシステムの一部では、バスのバスコントローラは、そのバスコントローラがサスペンド状態にない時には絶えずホストシステム上のメインメモリにアクセスする。その結果、ホストシステムは、メインメモリとプロセッサとのためのシステムプロセッサキャッシュまたはメインキャッシュをアイドル状態(例えばC3)にすることができない。さらに、一部の従来技術システムでは、バスのルートハブポートに何も差し込まれていない場合にのみバスのバスコントローラをアイドル状態にする。
【0004】
下記で述べる本発明は、これらおよびその他の不都合点の1つまたは複数に対処する。
【課題を解決するための手段】
【0005】
本発明は、一般には、バスを介して接続された1つまたは複数のハードウェアデバイスに対して電力制御を施行することに関する。詳細には、本発明は、第2のデバイスに接続された第1のデバイスをサスペンドすることをシグナリングし、待機することを含む。第1のデバイスは、当該第1のデバイスがサスペンドできる状態になると第2のデバイスにアイドル要求を送信する。第1のデバイスは次いで、第1のデバイスに関連付けられたコールバック関数への第2のデバイスからの呼び出しを受け取るのを待って第1のデバイスをサスペンド状態にする。
【0006】
本発明の態様を実施する方法は、1つまたは複数のデバイスがツリー中の親デバイスおよび子デバイスとして階層的に編成されたデバイスのツリーをサスペンドする。ツリーのルートにあるコントローラは、子デバイスの1つまたは複数からアイドル要求を受け取り、各子デバイスからアイドル要求を受け取った後にツリー中のすべてのデバイスをサスペンドする。
【0007】
本発明は、ラップトップコンピュータなどのコンピューティングシステムに関連付けられたバス、ホストコントローラ、およびバス上のデバイスが、当該コンピューティングシステムがfull動作電力を維持している間でも低電力モードに入ることも可能にする。低電力モードは、特にシステムにUSBデバイスが接続されていない時にラップトップコンピュータでバッテリ電力の節減を可能にし、電力節減のイニシアチブに関して他のコンピュータシステムに利益をもたらす。本発明は、クラスドライバまたは他のデバイスドライバが本発明を利用する限り、ルートハブポートに追加的なデバイスが接続されていてもホストコントローラをアイドル状態にする。さらに、本発明は、当該複合デバイスが唯一のデバイスであっても、あるいはデバイスツリー中のデバイスの1つであっても、複合デバイスがバスに接続されている時にバスをサスペンドすることができる。
【0008】
別の実施形態で、本発明は、バス上のすべてのデバイスは自身がアイドル状態であり、サスペンドできる状態にあることを通告(register)することができるので、バス全体を同時にサスペンドすることができる。本発明は、独立した電力制御を持たないピアデバイスをサスペンドする。本発明は、クラスドライバから様々なコントローラ間の相違をなくす。さらに、本発明では、元々の機器製造者は自社のコンピューティングシステムに内蔵デバイスを追加することができ、その一方で、ホストコントローラをアイドル状態にさせ、内蔵デバイスに関連付けられたプロセッサおよびキャッシュをサスペンド状態に入れることができる。
【0009】
あるいは、本発明は、各種の他の方法および装置を備えてもよい。
【0010】
この他の特徴は、部分的には明らかになり、部分的には以下で指摘する。
【発明を実施するための最良の形態】
【0011】
すべての図面を通じて、対応する参照符号は対応する部分を指す。
【0012】
次いで図面を参照すると、本発明は、ユニバーサルシリアルバス(USB)などのバスを介して接続された1つまたは複数のハードウェアデバイスに電力制御を施行する。
【0013】
図1に、USBを介して接続されたデバイスのハードウェアモデルをブロック図の形態で示す。図1の実施形態では、コンピュータ82は、内部PCIバス84を含む。これに限定しないが図2との関連で説明する周辺コンポーネントを含む周辺コンポーネントは、この内部PCIバス84に接続する。周辺コンポーネントは、例えば、複合デバイス(複数インターフェースを備えるデバイスなど)、USBルートハブ88などのルートハブ、あるいはUSBホストコントローラ86などのコントローラである。図1で、コンピュータ82中のUSBホストコントローラ86は、PCIバス84に接続する。USBホストコントローラ86は、概略的に89で示すUSBを介して周辺装置を接続することができるUSBルートハブ88を含む。他の実施形態では、USBルートハブ88は、USBコントローラ86の外部にある。図1で、プリンタ90およびジョイスティック92がUSBルートハブ88に接続される。この実施形態では、プリンタ90は、プリンタ90に接続されたマウス94およびスピーカ96を有するのでハブを含む。
【0014】
図1の例に示す周辺装置は、マウス94とスピーカ96がプリンタ90の子ノードあるいは子デバイスである点でツリー構造のノードとして階層的に編成されている。プリンタ90が複合デバイスである場合、印刷コンポーネントは、同じプリンタ90デバイスの他のコンポーネントに対して兄弟になる。別の実施形態では、包括的な親デバイスを、それ自体少なからぬ機能を持つ複合デバイスの親として使用する。同様に、プリンタ90とジョイスティック92とは、コンピュータ82の子ノードになる。この場合、コントローラ86、ルートハブ88、またはコンピュータ82を、プリンタ90およびジョイスティック92の親ノードと呼ぶ。一般に、ハブ、コントローラ、または包括的な親は、1つまたは複数の子ノードの親ノードになることができる。簡潔にするために、参照符号98で、プリンタ90、ジョイスティック92、マウス94、スピーカ96などの1つまたは複数などのデバイスをまとめて指す。
【0015】
当業者は、図1のノードの構成は例示的なものに過ぎず、本発明は、第2のノードに接続されたツリー構造中の複数ノードのうち任意の1ノードに動作可能であることに気付かれよう。さらに、図1のバスはUSBであるが、当業者には、本発明は、デバイス間またはデバイスとコントローラ間の通信を可能にする任意タイプのバスアーキテクチャまたはネットワークアーキテクチャと共に動作可能であることに気付かれよう。
【0016】
一部の従来技術システムでは、複合デバイスの子は、それらが同じ物理デバイスのコンポーネントであり、そのため同じ共通の電源を互いと共有するので、独立して電力制御することができない。本発明は、接続された子デバイス(例えばマウス94やスピーカ96)に対する独立した電力制御を持たないデバイス98の独立した電力制御を提供する。本発明の実施は、USBデバイスドライバ(例えばクラスドライバ)などのドライバソフトウェアとUSBコアスタックとの協同的な成果である。本明細書に記載する本発明はクラスドライバへの例示的な参照を含むが、当業者は、本発明は広く任意のタイプのデバイスドライバソフトウェア(すなわちクラスドライバに制限されない)に動作可能であることに気付かれよう。本発明によれば、USBクラスドライバは、デバイス98がアイドル状態であり、もはや使用されていないことをUSBコアスタックに通知する。特定のデバイス98がアイドル状態になると、ドライバは、各自の個々のデバイス98を低電力モードにすることを求める。低電力モードは、適用することが可能であればエネルギーとバッテリ電力とを節減する。また、本発明は、デバイス98を安全に低電力モードに入れられる可能性があることをUSBコアスタックがクラスドライバに通知するための機構を含む。ドライバとコアスタックとの対話により、USBクラスドライバは、自身のデバイス98がアイドル状態である、すなわち使用中でないことを検出するとそのデバイス98の電力を下げることができる。
【0017】
本発明により動作すると、独立した入出力の制御および機能を備えるが独立した電力制御を持たない2つの独立したデバイスが、それぞれ独立してアイドル状態になり、サスペンド可能な状態になることができる。2つの独立したデバイスは、両デバイスが接続されている第3のデバイスにメッセージを送信し、同時にサスペンド状態になる。さらに、ホストコントローラ86は、ルートハブ88の1つまたは複数のポートに1つまたは複数のデバイスが接続されている時でもアイドル状態になることができる。同様に、本発明は、バスに接続された1つまたは複数のルートハブポートを別々にサスペンドする方法を含む。本発明は、バスに複合デバイスだけが接続されている時にバスをサスペンドすることも可能にする。同様に、本発明は、バスに接続されたデバイスがない時にコンピュータがバスコントローラをサスペンドすることを可能にするように動作する。
【0018】
新しい入出力制御(IOCTL)要求により、USBクラスドライバは、そのUSBクラスドライバに関連付けられたデバイスがサスペンド可能な状態であることをUSBコアスタックに通知することができる。USBクラスドライバは、それがロードされた対象であるUSBデバイス98がアイドル状態で、もはや使用されていないと判定すると、USBコアスタックにIOCTL要求を送信する。一実施形態では、IOCTLは、入出力要求パケット(IRP)機構を介してUSBコアスタックに送信される。IOCTL要求でUSBコアスタックに渡されるパラメータの1つは、その要求を提出するUSBクラスドライバ中のコールバック機能へのポインタである。このコールバック関数は、それを行うために呼び出されるとUSBデバイス98を低電力モードに入れる要求を提出するUSBクラスドライバ中の実際の関数である。
【0019】
本発明の一実施形態では、デバイス98はUSBで接続される。USB複合デバイス(プリンタ90、スピーカ96など)とは、2つ以上のUSBクラスドライバ(または同じUBSクラスドライバの2つ以上のインスタンス)がそれについてロードされる2つ以上のインターフェースを含むタイプのUSBデバイス98である。例えば、スピーカ96などの多くのUSBスピーカデバイスは、実際にUSB複合デバイスであり、1つのインターフェースが実際のUSBオーディオコンポーネントであり、もう1つのインターフェースが、通例はスピーカ96から発せられる音声の音量を上げ下げするために使用されるヒューマンインターフェースデバイス(HID)コントロールのセットになっている。通例、USBデバイス98のドライバは、それが単純なUSBデバイスについてロードされるのか、またはUSB複合デバイスのインターフェースについてロードされるのかを認識しない。一般に、USB複合デバイスは、複数のインターフェースを公開する。USBデバイス98の場合、HIDまたは他のUSBデバイスを制御するソフトウェアをUSBクラスドライバとも称する。同様に、USBの場合、コントローラを制御するソフトウェアをUSBコアスタックとも称する。USBコアスタックには、包括的な親ドライバ、ハブドライバ、およびコントローラドライバが含まれる。例えば、USBコアスタックは、USB複合デバイスのクラスドライバであるUSBCCGP.SYSと、USBハブデバイスのクラスドライバおよびUSB全般のバスドライバであるUSBHUB.SYSを含むことができる。USBHUB.SYSは、システムに接続された単純なデバイスと複合デバイスとの両方の全USBデバイスについての物理デバイスオブジェクト(PDO)を生成する。複合デバイスの場合は、USBCCGP.SYSが、USBHUB.SYSによって作成されたPDOに対するクラスドライバとしてロードされる。
【0020】
従来のUSB実装には様々な制約がある。具体的には、USB複合デバイスの場合、単一のインターフェースが低電力モードに入るには、必ず同じUSB複合デバイスのすべての他のインターフェースも低電力モードに入れることが必要となる。さらに、インターフェースは、そのインターフェースに関連付けられたUSBクラスドライバの知識または許可がなければ低電力モードに入れることができない。
【0021】
また、一部のタイプのUSBクラスドライバ、特にUSB入力(またはHID)デバイスのクラスドライバは、いつUSBデバイスをフルパワーモードに戻すかを知るためにユーザ入力またはデバイスアクティビティの通知を必要とする。特定の既存のUSBホストコントローラについては、コントローラにハードウェアバグがあり、そのため、1つのみのUSBポートが低電力モードにあり、コントローラハードウェア全体自体は低電力モードにない場合には通知機能が機能しない。例えば、USBマウス(例えばマウス94)がバグのある可能性のあるUSBホストコントローラ(例えばUSBホストコントローラ86)の1つのあるポートに接続され、同じコントローラの第2のポートに別のUSBデバイスが接続されている場合に、USBマウスのクラスドライバがその別のデバイスを低電力モードに入れた場合、USBクラスドライバは、その後のデバイスアクティビティ(すなわちエンドユーザがマウスを動かす、あるいはマウスボタンをクリックするなど)を認識しない。そのため、USBマウスのUSBクラスドライバは、そのデバイスをフルパワーモードに設定しないことになる。エンドユーザに対するこのハードウェアバグの影響は、USBマウスが動作しなくなるという形で現れる。このバグのあるUSBホストコントローラによるUSBを扱う際の別の制約は、USBデバイスのためにロードされたUSBクラスドライバに、そのドライバがロードされた対象のUSBデバイスをUSBクラスドライバからの一方的な要求に基づいて低電力モードに入れさせることができないことである。
【0022】
本発明によるドライバソフトウェアの動作を図4および図5に示し、同図との関連で説明する。図4では、ドライバソフトウェアは、階層的に編成されたデバイスのツリー中で子デバイスとして機能するUSBデバイス(例えばHID)をサポートする。図5では、ドライバソフトウェアは、階層的に編成されたデバイスのツリー中のUSB複合親デバイスまたはUSBハブデバイスをサポートする。本発明のドライバソフトウェアは、図4および5に示すソフトウェアの両方の態様を含む。
【0023】
次いで図2を参照すると、本発明を実施することが可能な適切なコンピューティングシステム環境100の一例をブロック図で示す。コンピューティングシステム環境100は適切なコンピューティングまたは動作環境の一例に過ぎず、本発明の使用または機能性の範囲について何らの制限を示唆するものではない。またコンピューティングシステム環境100は、例示的コンピューティングシステム環境100に示す構成要素の任意の1つまたは組み合わせに関連する依存性または必要性を有するものとも解釈すべきでない。
【0024】
図2は、コンピュータ130の形態の汎用コンピューティングデバイスの一例を示す。本発明の一実施形態では、コンピュータ130などのコンピュータが、本明細書で説明する他の図で使用するのに適している。例えば、コンピュータ130などのコンピュータは、コンピュータ82として使用するのに適している。
【0025】
コンピュータ130は、1つまたは複数のプロセッサあるいは処理装置132とシステムメモリ134とを含む。図の実施形態で、システムバス136は、システムメモリ134を含む各種のシステム構成要素をプロセッサ132に結合する。システムバス136は、各種のバスアーキテクチャの任意のものを使用したメモリバスまたはメモリコントローラ、ペリフェラルバス、アクセラレーテッドグラフィックポート、およびプロセッサバスあるいはローカルバスを含む数タイプのバス構造のいずれか1つまたは複数を表す。これらに限定しないが、例として、このようなアーキテクチャには、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、およびメザニンバスとも称されるPCI(Peripheral Component Interconnects)バスが含まれる。
【0026】
コンピュータ130は、通例少なくとも何らかの形態のコンピュータ可読媒体を有する。コンピュータ可読媒体は、揮発性および不揮発性の媒体、取り外し可能および取り外し不能の媒体を含み、コンピュータ130からアクセスできる任意の利用可能な媒体であってよい。これに限定しないが、コンピュータ可読媒体の例には、コンピュータ記憶媒体と通信媒体とが含まれる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を記憶するための任意の方法または技術に実装された揮発性および不揮発性の媒体、取り外し可能および取り外し不能の媒体を含む。コンピュータ記憶媒体には、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶装置、あるいは、所望の情報の記憶に用いることができ、コンピュータ130によるアクセスが可能な任意の他の媒体が含まれる。通信媒体は、通例、搬送波または他の搬送機構などの変調データ信号に、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを実施し、任意の情報伝達媒体を含む。当業者は、信号中に情報を符号化する方式でその特性の1つまたは複数を設定または変化させた変調データ信号には精通している。配線ネットワークまたは直接配線接続などの配線媒体と、音響、RF、赤外線、および他の無線媒体などの無線媒体は、通信媒体の例である。上記の媒体のいずれの組み合わせもコンピュータ可読媒体の範囲に含まれる。
【0027】
システムメモリ134は、取り外し可能および/または取り外し不能メモリ、揮発性および/または不揮発性メモリの形態のコンピュータ記憶媒体を含む。図の実施形態では、システムメモリ134は、読み取り専用メモリ(ROM)138とランダムアクセスメモリ(RAM)140とを含む。起動時などにコンピュータ130内の要素間の情報転送を助ける基本ルーチンを含むBIOS(basic input/output system)142は、通例ROM138に記憶される。RAM140は通例、処理装置132から即座にアクセス可能な、かつ/または現在処理装置132によって操作中のデータおよび/またはプログラムモジュールを含む。これに限定しないが、例として図2にはオペレーティングシステム144、アプリケーションプログラム146、他のプログラムモジュール148、およびプログラムデータ150を示す。
【0028】
コンピュータ130は、この他の取り外し可能/取り外し不能、揮発性/不揮発性のコンピュータ記憶媒体も含むことができる。例えば、図2には、取り外し不能、不揮発性の磁気媒体の読み書きを行うハードディスクドライブ154を示している。図2には、取り外し可能、不揮発性の磁気ディスク158の読み書きを行う磁気ディスクドライブ156、およびCD−ROMや他の光学媒体などの取り外し可能、不揮発性の光ディスク162の読み書きを行う光ディスクドライブ160も示す。例示的動作環境で使用できるこの他の取り外し可能/取り外し不能、揮発性/不揮発性のコンピュータ記憶媒体には、これらに限定しないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどがある。ハードディスクドライブ154、磁気ディスクドライブ156、および光ディスクドライブ160は、通例、インターフェース166などの不揮発性メモリインターフェースによってシステムバス136に接続される。
【0029】
上記で説明し、図2に示すドライブまたは他の大容量記憶装置とそれに関連付けられたコンピュータ記憶媒体は、コンピュータ130のコンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの記憶を提供する。図2では、例えば、ハードディスクドライブ154にオペレーティングシステム170、アプリケーションプログラム172、他のプログラムモジュール174、およびプログラムデータ176を格納している。これらのコンポーネントは、オペレーティングシステム144、アプリケーションプログラム146、他のプログラムモジュール148、およびプログラムデータ150と同じものでも、異なるものでもよいことに留意されたい。ここではオペレーティングシステム170、アプリケーションプログラム172、他のプログラムモジュール174、およびプログラムデータ176には、それらが少なくとも異なるコピーであることを表すために異なる参照符号をつけている。
【0030】
ユーザは、キーボード180、およびポインティングデバイス182(マウス、トラックボール、ペン、タッチパッドなど)などの入力装置を通じてコンピュータ130にコマンドと情報とを入力することができる。他の入力装置(図示せず)には、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどがある。これらおよび他の入力装置は、システムバス136に結合されたユーザ入力インターフェース184を通じて処理装置132に接続することが多いが、パラレルポート、ゲームポート、あるいはユニバーサルシリアルバス(USB)など他のインターフェースおよびバス構造によって接続することも可能である。モニタ188または他タイプの表示装置も、ビデオインターフェース190などのインターフェースを介してシステムバス136に接続される。コンピュータは、モニタ188に加えて、プリンタやスピーカなど他の周辺出力装置(図示せず)もしばしば含み、それらは出力周辺インターフェース(図示せず)を通じて接続することができる。
【0031】
コンピュータ130は、リモートコンピュータ194など1つまたは複数のリモートコンピュータとの論理接続を使用するネットワーク環境で動作することができる。リモートコンピュータ194は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、あるいはその他の一般的なネットワークノードでよく、通例はコンピュータ130との関連で上記で挙げた要素の多くまたはすべてを含む。図2に示す論理接続には、ローカルネットワーク(LAN)196とワイドネットワーク(WAN)198とが含まれるが、他のネットワークを含むことも可能である。このようなネットワーキング環境は、オフィス、企業内のコンピュータネットワーク、イントラネット、および世界規模のコンピュータネットワーク(インターネットなど)に一般的に見られる。
【0032】
ローカルエリアネットワーキング環境で使用する場合、コンピュータ130はネットワークインターフェースまたはアダプタ186を通じてLAN196に接続される。ワイドエリアネットワーキング環境で使用する場合、コンピュータ130は通例、インターネットなどのWAN198を通じて通信を確立するためのモデム178またはその他の手段を含む。モデム178は内蔵型でも外付け型でもよく、ユーザ入力インターフェース194または他の適切な機構を介してシステムバス136に接続される。ネットワーク環境では、コンピュータ130との関連で図示したプログラムモジュール、またはその一部は遠隔のメモリ記憶装置(図示せず)に格納することができる。これに限定しないが、例として、図2ではリモートアプリケーションプログラム192がメモリ装置に常駐している。図のネットワーク接続は例示的なものであり、コンピュータ間に通信リンクを確立する他の手段を使用してよいことは理解されよう。
【0033】
一般に、コンピュータ130のデータプロセッサは、様々な時にコンピュータの各種のコンピュータ可読記憶媒体に記憶された命令によってプログラムされる。プログラムおよびオペレーティングシステムは、通例、例えばフロッピー(登録商標)ディスクまたはCD−ROMなどで配布される。そこから、コンピュータの2次メモリにインストールまたはロードされる。実行時に、プログラムおよびオペレーティングシステムは、少なくとも一部がコンピュータの主要な電子メモリにロードされる。本明細書に記載する本発明は、そのような媒体が、マイクロプロセッサまたは他のデータプロセッサと協働して下記のステップを実施する命令またはプログラムを含む場合はそれらおよび他の各種のコンピュータ可読記憶媒体を含む。本発明は、下記の方法および技術に従ってプログラムされた場合にはコンピュータ自体も含む。
【0034】
説明のために、プログラムおよびオペレーティングシステムなどの他の実行可能なプログラムコンポーネントはこの図では別々のブロックとして示している。ただし、そのようなプログラムおよびコンポーネントは、様々な時にコンピュータの様々な記憶コンポーネントに存在し、コンピュータのデータプロセッサによって実行されることは認識されよう。
【0035】
次いで図3を参照すると、ブロック図により、図1との関係で図示し、説明したようなUSBを介して接続されたデバイスのソフトウェアモデルを示す。図3のソフトウェアモデルは、例示的なデバイス構成に関連付けられたソフトウェアコンポーネントを示す。図3のデバイス構成は、図1のデバイス構成とは異なる。図3では、点線で示したハードウェアデバイスは、そのデバイスの隣に図示するソフトウェアコンポーネントに関連付けられる。
【0036】
この実施形態では、USBコントローラ302は、コンピュータ(コンピュータ130など)に関連付けられたPCIバス304に接続する。USBコントローラ302は、ルートハブ306を含む。ルートハブ306は、ポート#1〜#Nとして示す1つまたは複数のポート308を含む。ハブ310は、ポート308の1つに接続する。ハブ310のためのソフトウェアにはバスドライバ312およびクライアントドライバ314が含まれる。包括的な親(あるいは他の複合デバイス)316およびHID318は、ハブ310の子デバイスすなわち子ノードとしてハブ310に接続する。HID318のためのソフトウェアにはクライアントドライバが含まれる。図3の例示的実施形態では、HID318はマウスに関連付けられている。包括的な親316は、2つの子デバイス、すなわちオーディオコンポーネント320およびHID322を有する。ソフトウェアクライアントドライバが、オーディオコンポーネント320とHD322とに別々に関連付けられる。この例では、オーディオコンポーネント320はスピーカに関連付けられている。さらに、HID322は、1つまたは複数のスピーカボタンに関連付けられている。
【0037】
次いで図4を参照すると、流れ図により、HID322などの子USBデバイスを制御するドライバソフトウェアの例示的動作を説明している。ドライバソフトウェアは、図1および3との関連で説明したようなUSBデバイス(例えば包括的な親やハブデバイス)をサスペンドすることをシグナリングし、待機する方法を含む。USBデバイスに関連付けられたドライバソフトウェアは、ステップ402でUSBデバイスがアイドル状態であるかどうかを継続的に判定する。ドライバソフトウェアは、USBデバイスがアイドル状態であるか、ないしはサスペンドできる状態にあると判定すると、ステップ404でUSBデバイスの親デバイス(例えば親316)にアイドル要求を提出するか、ないしはシグナリングする。例えば、ドライバソフトウェアは、ソフトウェア中の自身の物理デバイスオブジェクトに要求を送信する。一実施形態では、アイドル要求の提出または送信は、USBデバイスからそのUSBデバイスの親デバイスにIOCTL要求を送信することを含む。一実施形態では、IOCTL要求の送信は、IOCTL要求を含む入出要求パケット(IRP)をUSBデバイスからそのUSBデバイスの親デバイスに送信することを含む。例えば、USBデバイスはUSBホストコントローラであり、USBデバイスの親デバイスはコンピュータであることが考えられる。この例では、USBホストコントローラは、USBホストコントローラがサスペンドできる状態であることをコンピュータにシグナリングする。コンピュータはその後、USBホストコントローラに他のデバイスが接続されていなくともUSBホストコントローラをサスペンドさせることができる。すなわち、アイドル状態になることを求めるルートハブのクライアントドライバは、そのルートハブの物理デバイスオブジェクト(PDO)にアイドル要求を送信する。PDOは次いで、クライアントドライバにルートハブをサスペンドするように指示する。
【0038】
一実施形態では、USBデバイスは、アクティブ状態とアイドル状態とを有する。この例では、USBデバイスは、アイドル状態にある時にはサスペンド可能な状態にある。本発明は、USBデバイスが完全にアイドル状態でなくともサスペンドを要求することが可能な他の実施形態を企図する。例えば、USBデバイスは、フルパワーを必要としない動作を行っている可能性がある。そのため、USBデバイスは、低電力モードまたは他のサスペンド状態に入る間もその動作を継続して実行することができる。USBデバイスが1つまたは複数の子ノード(下記の図5参照)を有する実施形態では、USBデバイスは、そのUSBデバイスがアイドル状態であり、USBデバイスの各子ノードがサスペンド可能な状態にある時に、サスペンドできる状態にある。この例では、USBデバイスの各子ノードは、USBデバイスにアイドル要求を送信して自身がサスペンドできる状態にあることを知らせているはずである。
【0039】
アイドル要求を提出すると、ドライバソフトウェアはステップ406で親デバイスから自身の電力低下のコールバック関数が呼び出されるのを待つ。親デバイスから電力低下のコールバック関数が呼び出されると、USBデバイスのドライバソフトウェアは、ステップ408で電力低下のコールバック関数を実行してUSBデバイスをサスペンドさせる。非アイドルのアクティビティ(activity)後、ステップ410でドライバソフトウェアがUSBデバイスをウェイクする。USBデバイス、USBデバイスの複数の子ノードのいずれか1つまたは複数、USBデバイスの親ノード、またはコントローラに関連付けられたソフトウェア(例えばアプリケーションプログラム)は、USBデバイスにウェイクするようにシグナリングする非アイドルアクティビティを行うことができる。例えば、USBデバイスがマウスなどのポインティングデバイスである場合は、非アイドルアクティビティはマウスの移動とすることができる。同様に、親ノードがコントローラであり、デバイスの1つまたは複数がスピーカである場合は、そのコントローラに関連付けられたコンピュータで実行されるソフトウェアは、スピーカで音楽を再生することにより非アイドルアクティビティを生成することができる。デバイスをウェイクすることは、デバイスが自由に新規のアイドル要求を提出できるようにアイドル要求を再設定することを含む。
【0040】
デバイスをUSBで接続する実施形態では、USBデバイス(およびそのUSBツリー全体)がサスペンド状態にされると、そのデバイス(およびその後USBデバイスツリー全体)を「目覚め(awaken)」させ、フルパワーモードに戻す方法が少なくとも2つある。第1の方法は、任意のUSBクラスドライバが、そのデバイスについての適切な電力設定要求を提出することにより、その子デバイスをフルパワーモードにするものである。第2の方法は、リモートウェイクをサポートし、低電力モードに置かれる前にあらかじめリモートウェイクを使用可能にしてある任意のUSBデバイスでの「リモートウェイク」アクティビティを利用するものである。これらの各場合で、行われる動作はデバイスツリー全体をフルパワーモードにする効力を持ち、子デバイスに対応するUSBクラスドライバは、各自の子デバイスまたはインターフェースがアイドル状態にあり、もはや使用中でないと判断すると、それ以降再び自由に新規のアイドル要求を提出することができ、全サイクルが再度開始する。
【0041】
すなわち、一旦サスペンド状態に置かれると、デバイスは、2つの方式の少なくとも1つでウェイクさせることができる。第1に、ウェイクは、リモートウェイク対応デバイスについてのシグナリングの再開を介して行うことができる(すなわち待機/ウェイクのIRPが正常に完了する)。通例、デバイスは、機能ドライバの待機/ウェイクIRPの完了ルーチンによって、完全に動作可能な電力状態(例えば電力状態D0)に設定される。待機/ウェイクIRPを使用して、リモートウェイクが行えるようにデバイスを備える(arm)。第2に、ウェイクは、クライアントソフトウェアによって開始される新しいオープン要求を介して行うことができる。ウェイクプロセス中、アイドル要求メッセージはリセットされるか、ないしはキャンセルされる。
【0042】
本発明の一実施形態では、ドライバは、子デバイスがもはやサスペンドできる状態にない時には、自身のコールバック関数を実行する前に子デバイスの親デバイスにキャンセル要求を送信することにより、その子デバイスまたはインターフェースについてのアイドル要求をキャンセルすることができる。一般に、キャンセル要求は、アイドル要求の送信後に子デバイスによって送信される。コントローラ(例えばUSBコアスタック)は、キャンセル要求に応答して、現在進行中のサスペンド状態への遷移をキャンセルし、デバイスツリー中の他のデバイスについての保留中の他のアイドル要求をキャンセルする。
【0043】
サスペンド後にキャンセル要求が送信された場合、コントローラは、そのキャンセル要求を、デバイスツリー全体をウェイクすることを必要とする非アイドルアクティビティと見なす。
【0044】
USBデバイスと親デバイスとは、通信媒体を介して接続される。この通信媒体には、これに限定しないが、図2との関連で説明したネットワークまたはバスアーキテクチャが含まれる。そのようなバスアーキテクチャには、階層的なパラレルバス、ツリー状の接続性を有する無線バス、およびUSBが含まれる。例えば、図4との関連で説明したノードは、USBを介して接続されたデバイスであってよい。この例では、他のデバイスがサスペンドするとUSBハブおよび/またはUSBコントローラもサスペンドする。さらに、コンピュータは、他のデバイス(そのコンピュータの内部または外部の)がバスに接続されていない時でもUSBコントローラをサスペンドさせることができる。
【0045】
本発明は、図4に示す方法を行うコンピュータ実行可能命令を有する1つまたは複数のコンピュータ可読媒体を含む。
【0046】
一実施形態では、デバイス間の通信は、オペレーティングシステムの内部にあるデバイスのソフトウェア表現を介して行われる。例えば、コントローラがアイドル要求を受け取る時には、そのコントローラのソフトウェアデバイスオブジェクトがアイドル要求を受け取る。当業者は、通信は物理ハードウェアデバイス間の電気的なシグナリングを利用して行ってもよいことに気付かれよう。さらに、当業者は、親デバイスと子デバイスとは論理的には異なってよいが、制御および機能のために物理的には異ならないことに気付かれよう。例えば、デバイスは、内蔵ハブと2つの内蔵デバイス、または2つの独立して制御される機能を有する複合デバイスを含むことができる。
【0047】
次いで図5を参照すると、流れ図により、親USBデバイス(例えば親316)を制御するドライバソフトウェアの動作を説明している。親USBデバイス(例えば包括的な親またはハブデバイス)は、その親USBデバイスに接続された1つまたは複数の子デバイス(例えばオーディオ320やHID322)を有する。親USBデバイスのドライバソフトウェアは、ステップ502で繰り返しループして、各子デバイスからアイドル要求を受け取っているかどうかを判定する。各子デバイスからアイドル要求を受け取っている場合、ドライバソフトウェアはステップ504で、親USBデバイス自体がアイドル状態であるかどうかを判定する。親USBデバイスがアイドル状態でない場合、ドライバソフトウェアはステップ502の判定に戻る。親USBデバイスがアイドル状態である場合、ドライバソフトウェアはステップ506で親デバイスがルートハブであるかどうかを判定する。親USBデバイスがルートハブでない場合、親USBデバイスは、ステップ508で、アイドル要求を親USBデバイスの親デバイス(例えばハブ310)に提出することにより、受け取ったアイドル要求を伝播する。一実施形態では、提出されるアイドル要求は、子デバイスから受け取ったすべてのアイドル要求を含む。子デバイスが、ツリー中で親USBデバイスの下位にある子デバイスを有する場合、提出されるアイドル要求は、下位の子デバイスそれぞれから提出されたすべてのアイドル要求を含む。このようにして、ツリー中の各デバイスからツリーのルートにあるルートハブまたは他のコントローラにアイドル要求が伝播される。
【0048】
親USBデバイスがルートハブである場合、親USBデバイスは、ステップ510でそのデバイスのツリーをサスペンド状態にする(図5参照)。デバイスがUSBで接続される実施形態では、ルートハブがツリー中のデバイスの電力を管理する。
【0049】
当業者は、アイドル状態の判定を行う順序は図5に示す順序に限らないことに気付かれよう。各子ノードからアイドル要求を受け取っているかどうかの判定、および親USBデバイスがアイドル状態かどうかの判定は、ツリーがサスペンドされる前、または親USBデバイスがアイドル要求をその親USBデバイスの親デバイスに伝播する前に両方の判定が満たされるのであれば、任意の順序で行うことができる。すなわち、アイドル要求の伝播は、一般には、第1のデバイスがサスペンドできる状態にあり、第1のデバイスが自身の各子デバイスからアイドル要求を受け取った場合に、受け取ったアイドル要求を第1のデバイスから第2のデバイス(第1のデバイスの親など)に送信することを含む。アイドル要求の伝播は、第1のデバイスからコントローラまでツリー構造を帰納的に横断することを含む。詳細には、アイドル要求の伝播は、第1のデバイスが当該第1のデバイスの各子ノードからアイドル要求を受け取っているかどうかを判定することを含む。ドライバソフトウェアは、各子ノードからアイドル要求を受け取っていない場合は、各子ノードからアイドル要求を受け取るのを待つ。ドライバソフトウェアは、第1のデバイスが各子ノードからアイドル要求を受け取っている場合は第2のデバイスにアイドル要求を提出する。
【0050】
本発明は、図5に示す方法を行うコンピュータ実行可能命令を有する1つまたは複数のコンピュータ可読媒体を含む。
【0051】
次いで図6を参照すると、流れ図により、デバイスのツリーをサスペンド状態にするコントローラソフトウェアの動作を説明している。USBでデバイスを接続する実施形態では、図6は、ツリー中のデバイスの電力を管理するルートハブ(例えばルートハブ306)に対応するソフトウェアの動作を説明することになる。他の実施形態では、ルートハブ以外のツリーのルートにあるコンポーネントにコントローラソフトウェアを関連付けることができる。
【0052】
図6に関して、ツリーは、ツリー中の子デバイスおよび親デバイスとして階層的に編成された1つまたは複数のデバイスを含む。詳細には、ルートハブは、ルートハブに接続され、ツリー構造に編成された1つまたは複数の子デバイスを有する。コントローラソフトウェア(例えばUSBコアスタック)は、子デバイスからアイドル要求を受け取る。ルートハブのコントローラソフトウェアは、ステップ602で繰り返しループして各子デバイスからアイドル要求を受け取っているかどうかを判定する。各子デバイスからアイドル要求を受け取っている場合、コントローラソフトウェアはステップ604でデバイスのツリーをサスペンドさせる。
【0053】
一実施形態では、子デバイスから受け取るアイドル要求は、ツリー構造中でさらに下位にある子デバイスから伝播されたアイドル要求を含む。ツリー中の各親が各自の子デバイスそれぞれの電力低下のコールバック関数を呼び出すことによってサスペンドが行われる。このサスペンドは、子デバイスから受け取るアイドル要求と伝播されるアイドル要求とがたどる経路を通じてツリー全体で行われる。このサスペンドは、ツリー中の各子デバイスのドライバソフトウェアが子デバイスの親デバイスから自身のコールバック関数への呼び出しを受け取り、次いでコールバック関数を実行して子デバイスをサスペンドさせるのでツリー全体に伝播される。各子デバイスのサスペンドは、子デバイスを低電力モードまたは他のサスペンド状態に入れるコールバック関数を実行することを含む。
【0054】
代替実施形態では、ルートハブまたは他のコントローラは、ルートハブに接続された各子デバイスから1つのアイドル要求を受け取り、受け取るアイドル要求は、さらに下位の子デバイスからのアイドル要求は含まない。子デバイスからのすべてのアイドル要求を受け取るのに応答して、ルートハブは、電力低下のコールバック関数を逆方向に伝播することによりツリー中のすべてのデバイスをサスペンドさせる。すなわち、ルートハブのコントローラソフトウェアがルートハブの各子デバイスの電力低下のコールバック関数を呼び出し、次いで各子デバイスのドライバソフトウェアが自身の各子デバイスの電力低下のコールバック関数を呼び出す。このようにしてツリー中の各デバイスをサスペンドさせる。この実施形態では、各親デバイスのドライバソフトウェアが、当該親デバイスの各子デバイスのドライバソフトウェアに固有の電力低下コールバック関数を認識することが確実になる。
【0055】
本発明は、図6に示す方法を行うコンピュータ実行可能命令を有する1つまたは複数のコンピュータ可読媒体を含む。
【0056】
次いで図7を参照すると、ブロック図により、ツリー構造中で子デバイスであるHIDを制御するドライバソフトウェアに関連付けられたシグナリングコンポーネント704およびドライバコンポーネント706を示している。図7の子デバイスはHIDとして説明するが、当業者は、子デバイスは任意のバスデバイス(例えばUSBデバイス)であってよいことに気付かれよう。このツリーは、親デバイスおよび子デバイスとして階層的に編成された1つまたは複数のデバイスを含む。一実施形態では、親デバイスおよび子デバイスはUSBで接続される。HIDに関連付けられた1つまたは複数のコンピュータ可読媒体702は、HIDのサスペンドをシグナリングし、待機するためのコンピュータ実行可能コンポーネントを有する。このコンポーネントには、シグナリングコンポーネント704とドライバコンポーネント706とが含まれる。シグナリングコンポーネント704は、HIDがサスペンド可能な状態になると、HIDからHIDの親デバイスにアイドル要求を送信する。このアイドル要求は、親デバイスからコントローラすなわちルートハブデバイスまでツリー中を伝播する。さらに、HIDが少なくとも1つの子デバイスを有する場合、シグナリングコンポーネント704は、その子デバイスからアイドル要求を受け取り、受け取ったアイドル要求を親デバイスに送信する。
【0057】
一実施形態では、アイドル要求は、HIDのサスペンドの前に送信された場合は、HIDによってキャンセルすることができる。この実施形態では、シグナリングコンポーネント704は、HIDによる非アイドルアクティビティに応答してHIDから親デバイスにキャンセル要求を送信する。キャンセル要求は、コントローラあるいはルートハブまで伝播し、シグナリングコンポーネント704から送信されたアイドル要求がその後キャンセルされる。HIDをサスペンドさせた後に送信された場合、キャンセル要求は、コントローラあるいは親デバイスにより、ツリー中の全デバイスのウェイクを必要とする非アイドルアクティビティと見なされる。
【0058】
ドライバコンポーネント706は、自身の親デバイスからそのコールバック関数が呼び出されるのを待ってHIDをサスペンドする。シグナリングコンポーネント704は、伝播されたアイドル要求に応答してコントローラから自身のコールバック関数の呼び出しを受け取る。ドライバコンポーネント706は、シグナリングコンポーネント704によって呼び出されたコールバック関数の実行に応答してHIDをサスペンドする。一実施形態では、コールバック関数は電力低下関数を実行してHIDの電力を下げる。さらに、電力低下関数は、HIDを低電力モードにするための低電力関数を含むことができる。ドライバコンポーネント706は、HIDによるアクティビティ、親デバイスからの信号、またはコントローラに関連付けられたソフトウェアからの信号に応答してHIDをウェイクする。
【0059】
次いで図8を参照すると、ブロック図により、コントローラに関連付けられたインターフェースコンポーネント804とコントローラコンポーネント806とを示している。当業者は、本明細書で概説し、特に図7および8との関連で説明するコントローラの機能の一部またはすべては、コントローラの子として機能するルートハブデバイスが行ってもよいことに気付かれよう。1つまたは複数のコンピュータ可読媒体802は、ツリーのルートにあるコントローラによってデバイスのツリーに電力制御を施行するためのコンピュータ実行可能コンポーネントを有する。1つまたは複数のコンピュータ可読媒体802は、そのコントローラに関連付けられる。ツリーは、ツリー中の親デバイスおよび子デバイスとして階層的に編成された1つまたは複数のデバイスを含む。一実施形態では、親デバイスと子デバイスとはUSBで接続される。コンポーネントには、インターフェースコンポーネント804とコントローラコンポーネント806とが含まれる。インターフェースコンポーネント804は、1つまたは複数の子デバイスからアイドル要求を受け取る。コントローラコンポーネント806は、各子デバイスからアイドル要求を受け取るとツリー中のすべてのデバイスをサスペンドする。コントローラはその後、コントローラ、デバイスのいずれか、またはその両方によるアクティビティに応答してツリー中のデバイスをウェイクする。
【0060】
次いで図9を参照すると、ブロック図によりIOCTLアイドル要求のデータ構造を示している。コンピュータ可読媒体902は、IOCTL要求として実施されたアイドル要求を表すデータ構造904を格納する。データ構造904は、第1のフィールドと第2のフィールドとを含む。第1のフィールドは、コールバック関数を表すルーチン属性906を格納する。ルーチン属性906は、例えば、親が子デバイスのデバイスの電力を安全に低下できることを子に通知する際に親によって呼び出される子ドライバ中の関数へのポインタである。第2のフィールドは、コールバックコンテクストを表すコンテクスト属性908を格納する。コールバックコンテクストは、呼び出されるとコールバック関数に渡され、そのコールバック関数を実行するための環境を提供する。本明細書で説明するように、第1のデバイスは、第1のデバイスがサスペンドできる状態になるとデータ構造904を介して第2のデバイスにアイドル要求を送信する。図4および5との関連で説明したように、アイドル要求の送信に応答してコールバック関数が実行されて第1のデバイスをサスペンドさせる。
【0061】
第1のデバイスは、ツリー構造に編成された1つまたは複数の子ノードを有する。さらに、第1のデバイスは、アクティブ状態とアイドル状態とを有する。第1のデバイスは、第1のデバイスの1つまたは複数の子ノードそれぞれがサスペンドできる状態になると、サスペンド可能な状態になる。一実施形態では、第1のデバイスと第2のデバイスは、ユニバーサルシリアルバスで接続される。
【0062】
図9のデータ構造904の一例を下に示す。
Figure 2005508041
【0063】
当業者は、本明細書で説明するデバイスは、これに限定しないが、コンピュータ外部のデバイスとコンピュータに内蔵されたデバイスとを含むことに気付かれよう。デバイスは、例えば、ラップトップコンピュータに内蔵されたUSB準拠デバイスである。本発明を使用して、ラップトップコンピュータは、内蔵USBデバイス、ラップトップ、あるいは別の内蔵デバイス(例えばコントローラ)に関連付けられたキャッシュおよびプロセッサがサスペンド状態(例えばC3)に入ることを許可する。
【0064】
次のUSB固有の例によって、本発明を例示する。USBクラスドライバは、それがロードされた対象のUSBデバイスがアイドル状態であり、もはや使用中でないと判断すると、IOCTLアイドル要求を含むIRPをUSBコアスタックに送信して、そのデバイスのUSBクラスドライバがそのデバイスを低電力モードにしようとしていることをUSBコアスタックに通知する。このIOCTLアイドル要求を、IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATIONと参照する。IOCTLアイドル要求は、PASSIVE_LEVELの割り込み要求レベル(IRQL)で送られる。USBコアスタックがこの要求を受け取ると、USBコアスタックドライバは、子デバイスがアイドル状態であることに気付く。USBコアスタック、バス、またはポートドライバは、Irp−>IoStatus.Statusなどの変数にSTATUS_SUCCESSなどの該当するエラーステータスを設定する。次いでUSBコアドライバは、すべての子デバイスのリストを検索して、すべての他の子デバイスのすべてのUSBクラスドライバが各自の子デバイスを低電力モードに入れることをすでに要求しているかどうかを判定する。USBコアドライバが、実際にすべてのUBS子デバイスを低電力モードに入れることが各デバイスのためにロードされたUSBクラスドライバにより要求されていると判定すると、USBコアスタックは、それらUSB子デバイスの親デバイスにアイドル要求を提出する。親デバイスは、子デバイスがUSB複合デバイスである場合は包括的なUSB親デバイスであってよい。同様に、親デバイスは、子デバイスが単純なUSBデバイスである場合はUSBハブであってよい。包括的な親USBデバイスまたはハブデバイスは、そのすべての子デバイスがアイドル状態であればアイドル状態になる。
【0065】
USBデバイスのツリー全体にアイドル要求が伝播され、USBルートハブデバイスについてアイドル要求が提出されると、USBルートハブデバイスは、ロードされた自身のクラスドライバ(USBHUB.SYS)のコールバックを呼び出す。各USB親デバイス、USB複合デバイス、またはハブデバイスは、その後、各USB子デバイスまたはインターフェースのためにロードされた各USBクラスドライバのコールバックを呼び出す。そのようなドライバはすべて、各自のUSBデバイスまたはインターフェースを低電力モードに入れることを要求し、したがってUSBデバイスとUSBルートハブとからなるツリー全体が低電力モードに入れられる。USBルートハブを低電力モードにすると、次いでUSBホストコントローラも低電力モードにする。USBデバイスまたはインターフェースがリモートウェイクアップをサポートし、保留中のIRP_MN_WAIT_WAKE要求がない場合は、それらのデバイスまたはインターフェースのコールバックルーチンは、それらデバイスまたはインターフェースの電力を切る前にIRP_MN_WAIT_WAKE要求をUSBコアスタックに提出しなければならない。あるいは、そのIRPが必要とされることが明らかになると、ファンクションドライバは、この要求の提出をコールバックルーチンで行うのを待つのではなく、Wait/WakeIRPをUSBドライバスタックに提出する。
【0066】
また、ハブドライバは、デバイスを完全に動作可能な電力状態(すなわちD0)に設定できる場合は、成功を示すステータスコードでアイドル要求を完了する。これは、そのデバイスがもはやアイドル状態ではないことをより高いレベルのドライバに知らせる。ただし、そのデバイスが除去あるいは停止されている場合は、ハブドライバは、該当するエラーコードでアイドル要求IRPを完了する。
【0067】
機能ドライバがアイドル要求IRPをキャンセルする場合、ハブドライバは、エラーコードでIRPを完了する。機能ドライバの完了ルーチンが、ハブドライバがSTATUS_POWER_STATE_INVALID以外のエラーコードでアイドル要求IRPを完了していることを検出すると、機能ドライバはそのデバイスの電源を入れることを試みる。一実施形態では、ハブドライバは、アイドル要求IRPをエラーで完了する時にはデバイスが電源供給状態にあることを保証しない。
【0068】
本発明の一態様によれば、ある方法が、第1のデバイスのサスペンドをシグナリングし、待機することを提供する。第1のデバイスは、通信媒体を介して第2のデバイスに接続される。この方法は、第1のデバイスがサスペンドできる状態になると第1のデバイスから第2のデバイスにアイドル要求を送信することを含む。この方法はさらに、第1のデバイスに関連付けられたコールバック関数の呼び出しを第2のデバイスから受け取るのを第1のデバイスが待機して第1のデバイスをサスペンドすることを含む。
【0069】
本発明の別の態様によれば、ある方法が、デバイスツリーのサスペンドを提供する。このツリーは、ツリー中の親デバイスおよび子デバイスとして階層的に編成された1つまたは複数のデバイスを含む。ツリーはさらに、ツリーのルートにあるコントローラを含む。この方法は、子デバイスの1つまたは複数からのアイドル要求をコントローラが受け取ることを含む。この方法はさらに、ツリー中の各デバイスからアイドル要求を受け取った後にツリー中のすべてのデバイスをコントローラがサスペンドすることを含む。
【0070】
本発明のさらに別の態様によれば、1つまたは複数のコンピュータ可読媒体が、デバイスツリー中のデバイスをサスペンドすることをシグナリングし、待機するコンピュータ実行可能コンポーネントを有する。このツリーは、親デバイスおよび子デバイスとして階層的に編成された1つまたは複数のデバイスを含む。ツリーは、ツリーのルートにコントローラを有する。上記のコンポーネントには、少なくとも1つの子デバイスがサスペンド可能な状態になった時にその子デバイスから親デバイスにアイドル要求を送信するシグナリングコンポーネントが含まれる。アイドル要求は、親デバイスからコントローラまでツリー中を伝播する。コンポーネントには、子デバイスに関連付けられたコールバック関数へのコントローラからの呼び出しを当該子デバイスが受け取るのを待って子デバイスをサスペンドするためのドライバコンポーネントも含まれる。
【0071】
本発明の態様を実施する1つまたは複数のコンピュータ可読媒体は、ツリーのルートにあたるコントローラによりデバイスのツリーに電力制御を施行するためのコンピュータ実行可能コンポーネントを有する。ツリーは、ツリー中の親デバイスおよび子デバイスとして階層的に編成された1つまたは複数のデバイスを含む。コンポーネントには、1つまたは複数の子デバイスからのアイドル要求をコントローラによって受け取るためのインターフェースコンポーネントが含まれる。コンポーネントには、各子デバイスからアイドル要求を受け取った後にツリー中のすべてのデバイスをコントローラによってサスペンドするためのコントローラコンポーネントも含まれる。
【0072】
本発明のさらに別の実施形態では、コンピュータ可読媒体が、アイドル要求を表すデータ構造を格納する。このデータ構造は、第1のフィールドと第2のフィールドとを含む。第1のフィールドは、コールバック関数を表すルーチン属性を格納する。第2のフィールドは、コールバックコンテクストを表すコンテクスト属性を格納する。第1のデバイスは、サスペンドできる状態になるとこのデータ構造を介して第2のデバイスにアイドル要求を送信する。
【0073】
本発明についてコンピュータ130を含む例示的コンピューティングシステム環境との関連で説明したが、本発明は、他の多数の汎用または特殊目的のコンピューティングシステム環境または構成で動作することができる。このコンピューティングシステム環境は、本発明の使用または機能性の範囲について何らの限定を示唆するものではない。さらに、このコンピューティングシステム環境は、例示的動作環境に示す構成要素の1つまたは組み合わせに関連する依存性または必要性を持つものと解釈すべきでない。本発明と共に使用するのに適する可能性があるよく知られるコンピューティングシステム、環境、および/または構成の例には、これらに限定しないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルド機器またはラップトップ機器、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な消費者家電製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたは機器を含む分散コンピューティング環境などが挙げられる。
【0074】
本発明は、1つまたは複数のコンピュータまたは他のデバイスによって実行されるプログラムモジュールなどのコンピュータ実行可能命令に概ね即して説明することができる。一般に、プログラムモジュールには、これらに限定しないが、特定のタスクを行うか、特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、およびデータ構造が含まれる。本発明は、通信ネットワークを通じてリンクされた遠隔の処理機器によってタスクを行う分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶装置を含むローカルおよびリモート両方の記憶媒体に置くことができる。
【0075】
本発明またはその実施形態の要素を紹介する際、冠詞「a」、「an」、「the」、および「said」は、その要素が1つまたは複数あることを意味する。用語「〜を備える(comprising)」、「〜を含む(including)」、および「〜を有する(having)」は、包含的な意味とし、列記した要素以外に追加的な要素があってよいことを意味する。
【0076】
上述から、本発明のいくつかの目的が達成され、他の有利な結果が得られることが理解されよう。
【0077】
本発明の範囲から逸脱することなく上記の製品および方法には各種の変更を行えるので、上記の説明に含まれ、添付図面に示すすべての事項は説明を目的とするものであり、限定的な意味に解釈すべきではない。
【図面の簡単な説明】
【0078】
【図1】ユニバーサルシリアルバスで接続されたデバイスのハードウェアモデルを示す本発明の一実施形態のブロック図である。
【図2】本発明を実施することが可能な例示的コンピューティングシステム環境を示す本発明の一実施形態のブロック図である。
【図3】ユニバーサルシリアルバスで接続されたデバイスのソフトウェアモデルを示す本発明の一実施形態のブロック図である。
【図4】子USBデバイスを制御するドライバソフトウェアの動作を説明する本発明の一実施形態の流れ図である。
【図5】親USBデバイスを制御するドライバソフトウェアの動作を説明する本発明の一実施形態の流れ図である。
【図6】デバイスのツリーをサスペンドするコントローラソフトウェアの動作を説明する本発明の一実施形態の流れ図である。
【図7】ツリー構造中の子USBデバイスを制御するドライバソフトウェアに関連付けられたシグナリングコンポーネントおよびドライバコンポーネントを示す本発明の一実施形態のブロック図である。
【図8】ハードウェアデバイスに電力制御を施行するインターフェースコンポーネントおよびコントローラコンポーネントを示す本発明の一実施形態のブロック図である。
【図9】IOCTLアイドル要求を示す本発明の一実施形態のブロック図である。

Claims (50)

  1. 第1のデバイスをサスペンドすることをシグナリングし、待機する方法であって、前記第1のデバイスは通信媒体を介して第2のデバイスに接続され、前記方法は、
    前記第1のデバイスがサスペンド可能な状態になると前記第1のデバイスから前記第2のデバイスにアイドル要求を送信すること、および
    前記第1のデバイスに関連付けられたコールバック関数への前記第2のデバイスからの呼び出しを受け取るのを前記第1のデバイスによって待機して、前記第1のデバイスをサスペンドすること
    を含むことを特徴とする方法。
  2. 前記第2のデバイスはコンピュータであり、前記第1のデバイスは前記コンピュータに関連付けられた周辺コンポーネントであることを特徴とする請求項1に記載の方法。
  3. 前記周辺コンポーネントは、複合デバイス、ルートハブ、およびコントローラからなる群から選択されることを特徴とする請求項2に記載の方法。
  4. 前記送信ステップおよび待機ステップは、前記第1のデバイスを制御するドライバを介して行われることを特徴とする請求項1に記載の方法。
  5. 前記第1のデバイスはアクティブ状態とアイドル状態とを有し、前記第1のデバイスは前記アイドル状態にある時にサスペンド可能であることを特徴とする請求項1に記載の方法。
  6. 前記第1のデバイスは、ツリー構造に編成された複数のノードの1つからなり、前記第1のデバイスは、前記第2のデバイスの子ノードであることを特徴とする請求項1に記載の方法。
  7. 請求項6に記載の方法を行うコンピュータ実行可能命令を有することを特徴とする1つまたは複数のコンピュータ可読媒体。
  8. 前記ツリー中のノードはユニバーサルシリアルバスで接続されることを特徴とする請求項6に記載の方法。
  9. 前記第1のデバイスは、前記ツリー構造中に1つまたは複数の子ノードを有し、前記第1のデバイスは、前記第1のデバイスの前記1つまたは複数の子ノードそれぞれがサスペンド可能な状態になるとサスペンド可能になることを特徴とする請求項6に記載の方法。
  10. 前記第1のデバイスの前記子ノードの少なくとも1つからのアイドル要求を前記第1のデバイスによって受け取ることをさらに含むことを特徴とする請求項9に記載の方法。
  11. 前記アイドル要求を前記第1のデバイスから前記ツリー構造のルートにあるコントローラに伝搬することをさらに含むことを特徴とする請求項10に記載の方法。
  12. 前記アイドル要求を伝搬することは、前記ツリー構造を前記第1のデバイスから前記コントローラまで帰納的に横断することにより前記アイドル要求を伝搬することを含むことを特徴とする請求項11に記載の方法。
  13. 前記アイドル要求を伝搬することは、前記第1のデバイスがサスペンド可能な状態であり、前記第1のデバイスが前記第1のデバイスの各子ノードからアイドル要求を受け取っている場合に、前記受け取ったアイドル要求を前記第1のデバイスから前記第2のデバイスに送信することを含むことを特徴とする請求項11に記載の方法。
  14. 前記アイドル要求を伝搬することは、
    前記第1のデバイスが前記第1のデバイスの各子ノードからアイドル要求を受け取っているかどうかを判定すること、
    各子ノードからアイドル要求を受け取っていない場合は、前記子ノードそれぞれからアイドル要求を受け取るのを待つこと、および
    前記第1のデバイスが前記子ノードそれぞれからアイドル要求を受け取っている場合は前記第2のデバイスにアイドル要求を提出すること
    を含むことを特徴とする請求項11に記載の方法。
  15. アイドル要求を送信することは、前記第1のデバイスから前記第2のデバイスに入出力制御(IOCTL)要求を送信することを含むことを特徴とする請求項1に記載の方法。
  16. 前記IOCTLを送信することは、前記第1のデバイスから前記第2のデバイスに入出力要求パケットを送信することを含むことを特徴とする請求項15に記載の方法。
  17. 前記第1のデバイスに関連付けられた前記コールバック関数への前記第2のデバイスからの呼び出しを前記第1のデバイスによって受け取り、前記受け取ったコールバック関数が実行されるのに応答して前記第1のデバイスをサスペンドすることをさらに含むことを特徴とする請求項1に記載の方法。
  18. 前記第1のデバイスをウェイクさせることをさらに含むことを特徴とする請求項17に記載の方法。
  19. 前記ウェイクは、前記第1のデバイスが前記第2のデバイスに前記第1のデバイスがウェイクできる状態にあることをシグナリングするのに応答して行われることを特徴とする請求項18に記載の方法。
  20. 前記ウェイクは、前記第2のデバイスが前記第1のデバイスにウェイクするようにシグナリングするのに応答して行われることを特徴とする請求項18に記載の方法。
  21. 前記第1のデバイスは、ツリー構造に編成された複数のノードの1つであり、前記第1のデバイスは1つまたは複数の子ノードを有し、前記ウェイクは、前記子ノードの少なくとも1つが前記第1のデバイスにウェイクするようにシグナリングするのに応答して行われることを特徴とする請求項18に記載の方法。
  22. 前記ウェイクは、前記送信されたアイドル要求をリセットすることを含むことを特徴とする請求項18に記載の方法。
  23. 前記第1のデバイスがもはやサスペンド可能な状態でなくなると前記第1のデバイスから前記第2のデバイスにキャンセル要求を送信することをさらに含み、前記キャンセル要求の送信は、前記アイドル要求の送信後に行われることを特徴とする請求項1に記載の方法。
  24. 第3のデバイスがサスペンド可能な状態になると前記第3のデバイスが前記第2のデバイスにアイドル要求を送信し、前記第1のデバイスと同時にサスペンドすることをさらに含み、前記第3のデバイスは、前記第1のデバイスとは独立した入出力の制御および機能を有することを特徴とする請求項1に記載の方法。
  25. デバイスのツリーをサスペンドする方法であって、前記ツリーは、前記ツリー中の親デバイスおよび子デバイスとして階層的に編成された1つまたは複数のデバイスを含み、前記ツリーはさらに、前記ツリーのルートにコントローラを含み、前記方法は、
    前記子デバイスの1つまたは複数からのアイドル要求を前記コントローラによって受け取ること、および
    前記ツリー中の各前記デバイスからアイドル要求を受け取った後に前記ツリー中のすべてのデバイスを前記コントローラによってサスペンドすること
    を含むことを特徴とする方法。
  26. アイドル要求を受け取ることは、前記子デバイスを制御するソフトウェアを介して前記子の1つまたは複数からのアイドル要求を前記コントローラによって受け取ることを含むことを特徴とする請求項25に記載の方法。
  27. 前記サスペンドすることは、前記子デバイスそれぞれのコールバック関数を実行して前記子デバイスを低電力モードに入れることを含むことを特徴とする請求項25に記載の方法。
  28. 前記親デバイスと前記子デバイスとはユニバーサルシリアルバス(USB)を介して接続され、前記ツリーはUSBハブを含み、さらに前記USBハブを前記コントローラによってサスペンドすることを含むことを特徴とする請求項25に記載の方法。
  29. 前記親デバイスと前記子デバイスとはユニバーサルシリアルバス(USB)を介して接続され、前記コントローラはコンピュータであり、前記ツリーはUSBコントローラを含み、USBホストコントローラを前記コンピュータによってサスペンドすることをさらに含むことを特徴とする請求項25に記載の方法。
  30. アイドル要求を受け取るステップは、前記子デバイスの1つまたは複数からの入出力制御(IOCTL)要求を前記コントローラによって受け取ることを含むことを特徴とする請求項25に記載の方法。
  31. 前記IOCTL要求を受け取ることは、前記1つまたは複数の子デバイスからの入出力要求パケットを前記コントローラによって受け取ることを含むことを特徴とする請求項30に記載の方法。
  32. 前記親デバイスと子デバイスとはユニバーサルシリアルバスを介して接続されることを特徴とする請求項25に記載の方法。
  33. 請求項25に記載の方法を行うコンピュータ実行可能命令を有することを特徴とする1つまたは複数のコンピュータ可読媒体。
  34. デバイスのツリー中のデバイスをサスペンドすることをシグナリングし、待機するコンピュータ実行可能コンポーネントを有する1つまたは複数のコンピュータ可読媒体であって、前記ツリーは、親デバイスおよび子デバイスとして階層的に編成された1つまたは複数のデバイスを含み、前記ツリーは前記ツリーのルートにコントローラを有し、前記コンポーネントは、
    少なくとも1つの子デバイスがサスペンド可能な状態になった時に前記子デバイスから親デバイスにアイドル要求を送信するシグナリングコンポーネントであって、前記アイドル要求は、前記親デバイスから前記コントローラまで前記ツリー中を伝搬するシグナリングコンポーネントと、
    前記子デバイスに関連付けられたコールバック関数への前記コントローラからの呼び出しを前記子デバイスが受け取るのを待って、前記子デバイスをサスペンドするドライバコンポーネントと
    を含むことを特徴とするコンピュータ可読媒体。
  35. 前記シグナリングコンポーネントは、前記子デバイスの少なくとも1つの子からのアイドル要求を受け取り、前記シグナリングコンポーネントは、前記受け取ったアイドル要求を前記親デバイスに送信することを特徴とする請求項34に記載のコンピュータ可読媒体。
  36. 前記シグナリングコンポーネントは、前記伝搬されたアイドル要求に応答して前記コントローラからコールバック関数の呼び出しを受け取ることを特徴とする請求項34に記載のコンピュータ可読媒体。
  37. 前記ドライバコンポーネントは、前記コールバック関数の実行に応答して前記子デバイスをサスペンドすることを特徴とする請求項36に記載のコンピュータ可読媒体。
  38. 前記ドライバコンポーネントは、前記子デバイスによるアクティビティ、または前記親デバイスからの信号、またはその両方に応答して前記子デバイスをウェイクすることを特徴とする請求項37に記載のコンピュータ可読媒体。
  39. 前記コールバック関数は、前記子デバイスの電力を低下する電力低下関数を含むことを特徴とする請求項34に記載のコンピュータ可読媒体。
  40. 前記電力低下関数は、前記子デバイスを低電力モードに入れる低電力関数を含むことを特徴とする請求項39に記載のコンピュータ可読媒体。
  41. 前記親デバイスと子デバイスとはユニバーサルシリアルバスを介して接続されることを特徴とする請求項34に記載のコンピュータ可読媒体。
  42. 前記シグナリングコンポーネントは、前記子デバイスによる非アイドルアクティビティに応答して前記子デバイスから前記親デバイスにキャンセル要求を送信することを特徴とする請求項34に記載のコンピュータ可読媒体。
  43. デバイスのツリーのルートにあるコントローラによって前記ツリーに電力制御を施行するためのコンピュータ実行可能コンポーネントを有する1つまたは複数のコンピュータ可読媒体であって、前記ツリーは、前記ツリー中の親デバイスおよび子デバイスとして階層的に編成された1つまたは複数のデバイスを含み、前記コンポーネントは、
    1つまたは複数の子デバイスからのアイドル要求を前記コントローラによって受け取るためのインターフェースコンポーネントと、
    前記子デバイスそれぞれからアイドル要求を受け取った後に前記ツリー中のすべてのデバイスを前記コントローラによってサスペンドするためのコントローラコンポーネントと
    を含むことを特徴とするコンピュータ可読媒体。
  44. 前記コントローラは、前記コントローラ、前記デバイスのいずれか、またはその両方によるアクティビティに応答して、前記ツリー中のデバイスをウェイクすることを特徴とする請求項43に記載のコンピュータ可読媒体。
  45. 前記子デバイスは、ヒューマンインターフェースデバイス(HID)であることを特徴とする請求項43に記載のコンピュータ可読媒体。
  46. 前記子デバイスはコンピュータに内蔵されたデバイスであることを特徴とする請求項43に記載のコンピュータ可読媒体。
  47. 前記親デバイスと子デバイスはユニバーサルシリアルバスを介して接続されることを特徴とする請求項43に記載のコンピュータ可読媒体。
  48. アイドル要求を表すデータ構造が格納されたコンピュータ可読媒体であって、前記データ構造は、
    コールバック関数を表すルーチン属性を格納する第1のフィールドと、
    コールバックコンテクストを表すコンテクスト属性を格納する第2のフィールドと
    を含み、
    第1のデバイスは、前記第1のデバイスがサスペンド可能な状態になると前記データ構造を介して第2のデバイスにアイドル要求を送信し、前記第1のデバイスが前記アイドル要求を送信するのに応答して前記コールバック関数が実行されて前記第1のデバイスをサスペンドし、前記コールバックコンテクストは、前記コールバック関数を実行するための環境を提供することを特徴とするコンピュータ可読媒体。
  49. 前記第1のデバイスは、ツリー構造に編成された1つまたは複数の子ノードを有し、前記第1のデバイスはアクティブ状態とアイドル状態とを有し、前記第1のデバイスは、前記第1のデバイスの前記1つまたは複数の子ノードそれぞれがサスペンド可能な状態になるとサスペンド可能になることを特徴とする請求項48に記載のコンピュータ可読媒体。
  50. 前記第1のデバイスと前記第2のデバイスはユニバーサルシリアルバスを介して接続されることを特徴とする請求項48に記載のコンピュータ可読媒体。
JP2003540780A 2001-10-31 2002-10-30 バスデバイスの選択的サスペンド Expired - Lifetime JP4290550B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/003,338 US7103788B1 (en) 2001-10-31 2001-10-31 Selective suspension of bus devices
PCT/US2002/034830 WO2003038582A1 (en) 2001-10-31 2002-10-30 Selective suspension of bus devices

Publications (3)

Publication Number Publication Date
JP2005508041A true JP2005508041A (ja) 2005-03-24
JP2005508041A5 JP2005508041A5 (ja) 2006-01-05
JP4290550B2 JP4290550B2 (ja) 2009-07-08

Family

ID=21705355

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003540780A Expired - Lifetime JP4290550B2 (ja) 2001-10-31 2002-10-30 バスデバイスの選択的サスペンド

Country Status (13)

Country Link
US (1) US7103788B1 (ja)
EP (1) EP1440365B1 (ja)
JP (1) JP4290550B2 (ja)
KR (1) KR100847996B1 (ja)
CN (1) CN100405259C (ja)
AT (1) ATE379805T1 (ja)
AU (1) AU2002353931B2 (ja)
BR (1) BR0212847A (ja)
CA (1) CA2460276C (ja)
DE (1) DE60223830T2 (ja)
MX (1) MXPA04002752A (ja)
RU (1) RU2304300C2 (ja)
WO (1) WO2003038582A1 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007306143A (ja) * 2006-05-09 2007-11-22 Ricoh Co Ltd 画像処理装置
JP2007310647A (ja) * 2006-05-18 2007-11-29 Nec Engineering Ltd Usb装置および給電制御方法
JP2010094942A (ja) * 2008-10-20 2010-04-30 Canon Inc インクジェット記録システム及びインクジェット記録装置
JP2012168589A (ja) * 2011-02-09 2012-09-06 Ricoh Co Ltd 情報処理装置および情報処理装置の制御方法、ならびに、プログラム
US8549337B2 (en) 2007-11-15 2013-10-01 Ricoh Company, Ltd. Memory card control device and method for controlling the same
KR101355326B1 (ko) * 2006-08-30 2014-02-04 에이저 시스템즈 엘엘시 포트를 활성 상태로부터 대기 상태로 전이하는 방법, 통신장치에서 이용하기 위한 장치 및 데이터 통신 시스템
JP2021509240A (ja) * 2017-12-28 2021-03-18 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated システム全体の低電力管理

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7376851B2 (en) * 2002-10-31 2008-05-20 Lg Electronics Inc. Apparatus and method for managing power in computer system
US20040193715A1 (en) * 2003-03-27 2004-09-30 Froelich Daniel S. Scheduling of host-initiated transactions
JP2004350048A (ja) * 2003-05-22 2004-12-09 Pioneer Electronic Corp 休止状態制御装置、休止状態制御方法並びに休止状態制御プログラム及び情報記録媒体
EP1533682A1 (en) * 2003-11-21 2005-05-25 Research In Motion Limited System and method for powering a peripheral device
JP2005182462A (ja) * 2003-12-19 2005-07-07 Toshiba Corp 電子機器、ユニット駆動装置およびユニット駆動装置のインタフェース制御方法
US7424632B2 (en) 2004-02-13 2008-09-09 Microsoft Corporation Systems and methods that facilitate state machine power and wake state management
US7313708B2 (en) * 2004-04-28 2007-12-25 Microsoft Corporation Interlocked plug and play with power management for operating systems
US7308586B2 (en) * 2004-04-28 2007-12-11 Microsoft Corporation Interlocked plug and play with power management for operating systems
US7831748B2 (en) * 2004-08-10 2010-11-09 Microsoft Corporation Extended USB protocol with selective broadcast mechanism
US7506343B2 (en) * 2004-08-19 2009-03-17 International Business Machines Corporation System and method for passing information from one device driver to another
US20060136755A1 (en) * 2004-12-16 2006-06-22 Shekoufeh Qawami System, apparatus, and method to enable and disable a mode of operation of a stacked circuit arrangement on an independent circuit basis using register bits and a single shared mode control line
US20060149977A1 (en) * 2004-12-31 2006-07-06 Barnes Cooper Power managing point-to-point AC coupled peripheral device
US7912987B2 (en) * 2005-01-14 2011-03-22 Microsoft Corporation USB devices in application server environments
AU2005200225A1 (en) * 2005-01-19 2006-08-03 Opdicom Pty Ltd Single power source for serially connectable devices
US7516255B1 (en) 2005-03-30 2009-04-07 Teradici Corporation Method and apparatus for providing a low-latency connection between a data processor and a remote graphical user interface over a network
US8560753B1 (en) 2005-03-30 2013-10-15 Teradici Corporation Method and apparatus for remote input/output in a computer system
US8659505B2 (en) * 2005-08-31 2014-02-25 Mircosoft Corporation Auxiliary display device driver interface
US7844770B2 (en) * 2006-11-02 2010-11-30 Bretford Manufacturing, Inc. Hub structure for enabling communication with a large number of handheld electronic devices
US8095816B1 (en) 2007-04-05 2012-01-10 Marvell International Ltd. Processor management using a buffer
US8443187B1 (en) 2007-04-12 2013-05-14 Marvell International Ltd. Authentication of computing devices in server based on mapping between port identifier and MAC address that allows actions-per-group instead of just actions-per-single device
US8321706B2 (en) * 2007-07-23 2012-11-27 Marvell World Trade Ltd. USB self-idling techniques
TW200915058A (en) * 2007-09-19 2009-04-01 Asustek Comp Inc A computer, a power saving method and a method for reducing output current
US8171309B1 (en) 2007-11-16 2012-05-01 Marvell International Ltd. Secure memory controlled access
US7873774B2 (en) * 2008-02-01 2011-01-18 Telefonaktiebolaget Lm Ericsson (Publ) Connections and dynamic configuration of interfaces for mobile phones and multifunctional devices
US8510560B1 (en) 2008-08-20 2013-08-13 Marvell International Ltd. Efficient key establishment for wireless networks
US8296555B2 (en) * 2008-09-18 2012-10-23 Marvell World Trade Ltd. Preloader
WO2010077787A1 (en) * 2009-01-05 2010-07-08 Marvell World Trade Ltd. Method and system for hibernation or suspend using a non-volatile-memory device
KR101587457B1 (ko) * 2009-05-26 2016-01-21 삼성전자주식회사 복합 네트워크 장치의 대기 모드 지원 장치 및 방법
US8332676B2 (en) * 2009-09-24 2012-12-11 Intel Mobile Communications GmbH Methods of preparing a power saving state, universal serial bus device and universal serial bus host
CN101895975A (zh) * 2010-07-22 2010-11-24 中兴通讯股份有限公司 一种进入待机模式的方法及其应用的移动终端
US9360916B2 (en) * 2010-09-08 2016-06-07 Hewlett Packard Development Company, L.P. Transition an input/output device
KR20120032102A (ko) * 2010-09-28 2012-04-05 삼성전자주식회사 유에스비 장치의 전력 절감을 위한 장치 및 방법
CN102081581B (zh) * 2010-10-01 2013-10-30 威盛电子股份有限公司 电源管理系统及方法
US9141394B2 (en) 2011-07-29 2015-09-22 Marvell World Trade Ltd. Switching between processor cache and random-access memory
US9436629B2 (en) 2011-11-15 2016-09-06 Marvell World Trade Ltd. Dynamic boot image streaming
US9134984B2 (en) 2012-05-11 2015-09-15 Hobnob, Inc. Virtual network adapter
KR101334692B1 (ko) * 2012-05-21 2013-12-02 세진전자 주식회사 Usb 장치의 다중 hid 데이터 제어 시스템
US9575768B1 (en) 2013-01-08 2017-02-21 Marvell International Ltd. Loading boot code from multiple memories
US9183069B2 (en) * 2013-03-14 2015-11-10 Red Hat, Inc. Managing failure of applications in a distributed environment
US9736801B1 (en) 2013-05-20 2017-08-15 Marvell International Ltd. Methods and apparatus for synchronizing devices in a wireless data communication system
US9521635B1 (en) 2013-05-21 2016-12-13 Marvell International Ltd. Methods and apparatus for selecting a device to perform shared functionality in a deterministic and fair manner in a wireless data communication system
CN105518621B (zh) 2013-07-31 2019-09-17 马维尔国际贸易有限公司 将引导操作并行化的方法
US10101797B2 (en) * 2014-09-27 2018-10-16 Intel Corporation Efficient power management of UART interface
WO2017168228A1 (en) 2016-03-08 2017-10-05 Marvell World Trade Ltd. Methods and apparatus for secure device authentication

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2986045B2 (ja) * 1992-12-14 1999-12-06 インターナショナル・ビジネス・マシーンズ・コーポレイション ビデオ・サブシステムにおける電力管理の方法および装置
US5483656A (en) * 1993-01-14 1996-01-09 Apple Computer, Inc. System for managing power consumption of devices coupled to a common bus
JPH06318142A (ja) 1993-03-12 1994-11-15 Canon Inc 情報処理装置及び方法
US5535400A (en) 1994-01-28 1996-07-09 Compaq Computer Corporation SCSI disk drive power down apparatus
US5752050A (en) 1994-10-04 1998-05-12 Intel Corporation Method and apparatus for managing power consumption of external devices for personal computers using a power management coordinator
US6092209A (en) 1994-10-04 2000-07-18 Intel Corporation Method and apparatus for managing power consumption of peripheral devices of personal computers
JP2705617B2 (ja) * 1995-03-03 1998-01-28 日本電気株式会社 電源切断方式
JPH08314587A (ja) 1995-05-15 1996-11-29 Nec Corp 省電力電源回路
US5638541A (en) * 1995-08-25 1997-06-10 Intel Corporation System and method for managing power on desktop systems
US5784628A (en) 1996-03-12 1998-07-21 Microsoft Corporation Method and system for controlling power consumption in a computer system
US5799196A (en) * 1996-07-02 1998-08-25 Gateway 2000, Inc. Method and apparatus of providing power management using a self-powered universal serial bus (USB) device
US5915119A (en) 1996-10-01 1999-06-22 Ncr Corporation Proxy terminal for network controlling of power managed user terminals in suspend mode
US6085325A (en) * 1996-12-16 2000-07-04 Intel Corporation Method and apparatus for supporting power conservation operation modes
US6141711A (en) * 1996-12-19 2000-10-31 National Semiconductor Corporation Method and apparatus to enable insertion/ejection of a device in a computer system while maintaining operation of the computer system and application software
US5919264A (en) 1997-03-03 1999-07-06 Microsoft Corporation System and method for using data structures to share a plurality of power resources among a plurality of devices
JPH10254587A (ja) 1997-03-14 1998-09-25 Toshiba Corp コンピュータシステム
US6125449A (en) 1997-06-30 2000-09-26 Compaq Computer Corporation Controlling power states of a computer
WO1999005607A2 (en) 1997-07-21 1999-02-04 Koninklijke Philips Electronics N.V. A method and a system for dynamically operating a communication channel in a mixed master/slave subscriber environment
US5968178A (en) * 1997-11-04 1999-10-19 Cypress Semiconductor Corp. Circuit and method for resetting a microcontroller
US6085265A (en) * 1998-01-09 2000-07-04 Toshiba America Information Systems, Inc. System for handling an asynchronous interrupt a universal serial bus device
US6199134B1 (en) * 1998-03-13 2001-03-06 Compaq Computer Corporation Computer system with bridge logic that asserts a system management interrupt signal when an address is made to a trapped address and which also completes the cycle to the target address
US6119194A (en) * 1998-03-19 2000-09-12 Advanced Micro Devices, Inc. Method and apparatus for monitoring universal serial bus activity
US6209088B1 (en) 1998-09-21 2001-03-27 Microsoft Corporation Computer hibernation implemented by a computer operating system
US6105097A (en) * 1998-10-14 2000-08-15 Cypress Semiconductor Corp. Device and method for interconnecting universal serial buses including power management
US6272644B1 (en) * 1999-01-06 2001-08-07 Matsushita Electrical Industrial Co., Ltd. Method for entering powersave mode of USB hub
CA2299550A1 (en) * 1999-03-31 2000-09-30 International Business Machines Corporation Dynamic i/o allocation in a partitioned computer system
US6330639B1 (en) * 1999-06-29 2001-12-11 Intel Corporation Method and apparatus for dynamically changing the sizes of pools that control the power consumption levels of memory devices
US6496938B1 (en) * 2000-02-11 2002-12-17 Compaq Information Technologies Group Lp Enhanced PCI clock control architecture

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007306143A (ja) * 2006-05-09 2007-11-22 Ricoh Co Ltd 画像処理装置
JP2007310647A (ja) * 2006-05-18 2007-11-29 Nec Engineering Ltd Usb装置および給電制御方法
JP4698479B2 (ja) * 2006-05-18 2011-06-08 Necエンジニアリング株式会社 Usb装置および給電制御方法
KR101355326B1 (ko) * 2006-08-30 2014-02-04 에이저 시스템즈 엘엘시 포트를 활성 상태로부터 대기 상태로 전이하는 방법, 통신장치에서 이용하기 위한 장치 및 데이터 통신 시스템
US8549337B2 (en) 2007-11-15 2013-10-01 Ricoh Company, Ltd. Memory card control device and method for controlling the same
JP2010094942A (ja) * 2008-10-20 2010-04-30 Canon Inc インクジェット記録システム及びインクジェット記録装置
JP2012168589A (ja) * 2011-02-09 2012-09-06 Ricoh Co Ltd 情報処理装置および情報処理装置の制御方法、ならびに、プログラム
JP2021509240A (ja) * 2017-12-28 2021-03-18 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated システム全体の低電力管理
JP7264901B2 (ja) 2017-12-28 2023-04-25 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド システム全体の低電力管理

Also Published As

Publication number Publication date
EP1440365A4 (en) 2006-06-21
KR100847996B1 (ko) 2008-07-23
JP4290550B2 (ja) 2009-07-08
US7103788B1 (en) 2006-09-05
KR20050042017A (ko) 2005-05-04
EP1440365B1 (en) 2007-11-28
CA2460276C (en) 2011-05-24
EP1440365A1 (en) 2004-07-28
CN100405259C (zh) 2008-07-23
DE60223830D1 (de) 2008-01-10
RU2004116340A (ru) 2005-03-27
CN1578940A (zh) 2005-02-09
DE60223830T2 (de) 2008-10-30
CA2460276A1 (en) 2003-05-08
MXPA04002752A (es) 2004-06-29
AU2002353931B2 (en) 2008-06-12
ATE379805T1 (de) 2007-12-15
BR0212847A (pt) 2005-04-26
WO2003038582A1 (en) 2003-05-08
RU2304300C2 (ru) 2007-08-10

Similar Documents

Publication Publication Date Title
JP4290550B2 (ja) バスデバイスの選択的サスペンド
AU2002353931A1 (en) Selective suspension of bus devices
TWI564704B (zh) 省電處理器架構
US7065659B2 (en) Power management architecture for defining component power states under a global power state and maintaining a power state floor for a specified component if a power state for the specified component under a new global power state is below the power state floor
US6360327B1 (en) System with control registers for managing computer legacy peripheral devices using an advanced configuration power interface software power management system
KR101281354B1 (ko) 유니버설 시리얼 버스 (usb) 원격 웨이크업
US8793697B2 (en) Method and system for scheduling requests in a portable computing device
JP4612631B2 (ja) データ処理デバイスを動作させるための方法、装置、及びシステム
EP1508081B1 (en) Method and apparatus for providing a decoupled power management state
US20050246560A1 (en) Unified device power management engine
JP2005508041A5 (ja)
US20120227053A1 (en) Distributed resource management in a portable computing device
CA2844296A1 (en) Suspension and/or throttling of processes for connected standby
US7055046B2 (en) Power management architecture for defining component power states under a global power state and applying a new component power state when a new component power state is greater than a registered power state floor
EP2742400A1 (en) Suspension and/or throttling of processes for connected standby
WO2013154706A1 (en) Method and system for tracking and selecting optimal power conserving modes of a pcd
US8769544B2 (en) Method and system for managing parallel resource request in a portable computing device

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051026

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051026

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081007

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090105

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090113

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090206

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090303

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090401

R150 Certificate of patent or registration of utility model

Ref document number: 4290550

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120410

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120410

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130410

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130410

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140410

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250