CN100405259C - 总线设备的选择性暂停 - Google Patents

总线设备的选择性暂停 Download PDF

Info

Publication number
CN100405259C
CN100405259C CNB028215591A CN02821559A CN100405259C CN 100405259 C CN100405259 C CN 100405259C CN B028215591 A CNB028215591 A CN B028215591A CN 02821559 A CN02821559 A CN 02821559A CN 100405259 C CN100405259 C CN 100405259C
Authority
CN
China
Prior art keywords
equipment
hub
request
idle request
usb
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.)
Expired - Fee Related
Application number
CNB028215591A
Other languages
English (en)
Other versions
CN1578940A (zh
Inventor
J·G·索扎
D·J·赫兰
K·D·雷
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 Technology Licensing LLC
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 CN1578940A publication Critical patent/CN1578940A/zh
Application granted granted Critical
Publication of CN100405259C publication Critical patent/CN100405259C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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
    • 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

Abstract

一种用于对通过总线(84)连接的一个或多个硬件设备(86,90,92,94和96)功率控制的方法和系统。本发明包括一种用于发出信号和等待暂停与一个第二设备相连接的一个第一设备的方法和系统。本发明还包括了一种用于暂停作为母设备和子设备以树状结构层次组织的一个或多个设备的一个设备树的方法和系统。一个在树根部的控制器(86)接受来自一个或多个子设备的一个空闲请求并且在接受到了来各个子设备的一个空闲请求之后暂停树中的所有设备。本发明还包括了一个用于通讯空闲请求的输入/输出控制(IOCTL)数据结构。

Description

总线设备的选择性暂停
技术领域
本发明主要涉及设备功率控制的领域。尤其是,本发明涉及适用于对与总线相连接的一个或多个硬件设备施加功率控制以选择性地暂停设备。
发明背景
外围硬件设备是通过各种总线结构来连接到个人计算机的。例如,通用串行总线(USB)连接到诸如集线器(HUB)、人机界面设备(HID)、扬声器以及用户输入设备之类的设备。在某些现有技术的系统中,主机在系统运行的同时是以全功率来维持所连接的设备,即使这类设备此时并没有使用。此外,当没有非HUB设备连接到它们时,任何HUB或者控制器仍旧没有必要地全功率运行。这些限制都会对台式计算机产生功率消耗和热产生的影响,尤其会对膝上型电脑产生电池功率保存的影响。
另外,在某些现有技术的系统中,当一个适用于总线的总线控制器没有处于暂停状态时,它可以连续地访问主机系统的主存储器。这就阻碍了主机系统使系统处理器的高速缓存或者用于主存储器和处理器的主高速缓存处于空闲状态(即,C3)。此外,某些现有技术的系统,只有在没有内容插入到总线的根HUB的端口时,才能使得总线的总线控制器空闲。
以下针对上述以及其它不足中的一项或多项来讨论本发明。
发明内容
本发明主要涉及对与总线相连接的一个或多个硬件设备施加功率控制。特别是,本发明包括能够暂停与第二设备相连接的第一设备的信令和等待。当第一设备准备暂停时,第一设备就向第二设备发送一个空闲的请求。随后,第一设备就等待接受来自第二设备的对与第一设备有关的回叫功能的呼叫以暂停第一设备。
体现本发明各个方面的方法,可暂停由一个和多个设备以母子设备树状结构方式层次组成的各个方面设备树。在该树根部的控制器接受来自一个或多个子设备的一个空闲请求,且在接受到来自各个子设备的一个空闲请求之后暂停在该树中的所有设备。
本发明也允许总线、主机控制器以及在与诸如膝上计算机之类的一个计算机系统有关的总线上的任何设备能够进入一个低功率模式,而计算机系统仍旧以全功率进行操作。低功率模式能够使得膝上计算节省电池功率,特别是在没有USB设备连接到系统时,并且向其它计算机系统提供了与主动节省功率有关的益处。本发明使得主机控制器能够空闲,即使有其它设备插入到根集线器端口,只要该类设备或其它设备驱动器能利用本发明。此外,当一个综合设备连接到总线时,且无论该综合设备是唯一的一个设备还是在设备树中的一个设备,本发明都可以暂停总线。
在另一实施例中,本发明允许整个总线立即暂停,因为在总线上的所有设备都可以空闲状态来注册且准备暂停。本发明可以暂停缺乏独立功率控制的对等设备。本发明从类驱动器的不同控制器中提炼变化。此外,采用本发明,原始设备的制造商可以将嵌入设备加入到它们的计算机系统中,同时允许主机控制器从空闲出来,并且允许处理器以及与嵌入设备有关的高速缓存能够进入到暂停状态。
另外,本发明可以包括各种其它方法和装置。
其它性能也将部分显而易见且在下文中进行部分讨论。
附图简要描述
图1是一个说明通过通用串行总线(USB)连接设备的硬件模式的本发明一个实施例的方框图。
图2是一个说明一例实现本发明的示例性计算机系统环境的本发明一个实施例的方框图。
图3是一个说明通过USB连接设备的软件模式的本发明一个实施例的流程图。
图4是一个说明用于控制一个子USB设备的驱动软件操作的本发明一个实施例的流程图。
图5是一个说明用于控制一个母USB设备的驱动软件操作的本发明一个实施例的流程图。
图6是一个说明用于暂停一个设备树的控制器软件的操作的本发明一个实施例的流程图。
图7是一个说明与用于控制一个树状结构中的一个子USB设备的驱动软件有关的一个信令组件和一个驱动器组件的本发明一个实施例的方框图。
图8是一个说明用于通过对硬件设备施加功率控制的一个接口组件和一个控制组件的本发明一个实施例的方框图。
图9是一个说明一个IODTL空闲请求的本发明一个实施例的方框图。
在所有附图中,相对应的参考字符表示对应的部件。
发明的详细描述
现在参考附图,本发明通过诸如一个通用串行总线(USB)之类总线连接的一个或多个硬件设备来维持功率控制。
图1以方框图的形式说明了通过USB连接到设备的一个硬件模式。在图1所示的实施例中,一个计算机82包括一个内部PCI总线84。外围组件包括,但并不限制于,结合图2所描述的这些组件,连接到内部PCI总线84。例如,一个外围组件可以是一个综合设备(例如,一个具有多个接口的设备),一个诸如USB根HUB88的根集线器,或者一个诸如USB主机控制器的控制器86。在图1中,在计算机82中的USB主机控制器86连接到PCI总线84。USB主机控制器86包括USB根HUB 88,可以通过一般以89表示的USB连接到外围设备。在其它实施例中,USB根HUB 88是在USB控制器86的外部。在图1中,打印机90和操纵杆92连接到USB根HUB 88。在该实施例中,打印机90包括一个HUB因为它还有一个鼠标器94和扬声器96与它相连。
在图1所示实例中的外围设备都是以一个树状结构中的节点来分层次组成的,在该树状结构中鼠标器94和扬声器96都是子结点或者是打印机90的子设备。如果打印机90是一个综合设备,则打印组件将是同属于相同打印机90设备的其它组件的一个兄弟。在另一个实施例中,一个原始的母体设备可用作为一个综合设备的母体,且该综合设备自身并不具有最小功能性。同样,打印机90和操纵杆92都是计算机82的子结点。在这种情况下,控制器86、根HUB88、或者计算82都可称之为打印机90和操纵杆92的母结点。一般来说,HUB。控制器或者原始母体可以是一个和多个子结点的母结点。为了简洁,参考字符98一般是指设备,例如,一个或多个打印机90、操纵杆92、鼠标器94、扬声器96,等等。
本领域中的熟练技术人士都会注意到,图1所示的结点结构仅仅是一个实例,并且本发明可以采用以连接到一个第二结点的树状结构中的多个结点的任何一个结点来操作。此外,如果图1中的总线是一个USB,则本领域中的熟练技术人士将会注意到,本发明可以采用任何类型的总线或者允许在设备之间或在设备和控制器之间通讯的网络结构进行操作。
在某些现有技术的系统中,综合设备的子设备不能够单独进行功率控制,因为子设备是相同物理设备的组件并且相互共同享用着相同的公共功率电源。本发明对设备98提供了独立的功率控制,该设备并不具有通过任何连接的子设备(例如,鼠标器94和扬声器96)的独立功率控制。本发明的实现是在诸如USB设备驱动器(例如,类驱动器)和USB核心堆之类的驱动软件之间的协同努力。虽然本文所讨论的本发明包括对类驱动器的示例引用,本领域的熟练技术人士都会注意到,本发明一般可以任何类型的设备驱动软件(即,并不限制于对类驱动器)来操作。根据本发明,USB类驱动器可向USB核心堆指示,该设备98是空闲的且不再在使用。当所指定的设备98是空闲时,驱动器可以希望将它们各个设备98进入到低功率模式。低功率模式若可用的话可以节省能源以及电池的功率。另外,本发明包括了一个机制,该机制使得USB核心堆可以对该类驱动器指示出该类设备98可以安全地进入到低功率模式。在驱动器和核心堆之间的交互允许USB类驱动器在驱动器检测到它们的设备98是空闲的或者不再使用时就关闭它们的设备98的电源。
根据本发明的操作,具有独立的输入/输出控制和功能但没有独立功率控制的两个独立设备可以变成空闲的并准备单独暂停。两个独立的设备向第三设备发出信号,通知第三设备这两个设备是相互连接的且将同时暂停。此外,主机控制器86可以空闲,即使在一个或多个设备是连接到根HUB 88的一个或多个端口。同样,本发明包括适用于独立暂停连接到总线的一个或多个根HUB的方法。在只有一个综合设备连接到总线的情况下,本发明还允许暂停一个总线。相类似,在没有设备与总线相连接的情况下,本发明的操作允许一个计算机来暂停一个总线控制器。
一个新的输入/输出控制(IOCTL)请求允许一个USB类驱动器向一个USB核心堆指出,与USB类驱动器有关的驱动器已准备暂停。当该类驱动器已经确定所下载的USB设备98处于空闲且不再使用时,USB类驱动器就向USB核心堆发出IOCTL请求。在一个实施例中,IOCTL通过一个输入/输出请求包(IRP)机制发送至USB核心堆。在IOCTL请求中转发至USB核心堆的参数之一是在所提交该请求的USB类驱动器中的回叫信号功能的指针。该回叫信号功能是提交该请求的USB类驱动器中的实际功能,当已经进行了呼叫时,它可使USB设备98进入到低功率模式。
在本发明的一个实施例中,设备98通过USB相互连接。一个USB综合设备(例如,打印机90,扬声器96)可以是一种类型的USB设备98,该设备可以包含用于多种(或者相同的多个实例)要被下载的USB类驱动器的多个接口。例如,许多USB扬声器(例如,扬声器96)设备事实上都是USB综合设备,事实上,它的一个接口事实上是一个USB音频组件,另一个接口是一组人机接口设备(HID)控制,一般可用于提升/降低由扬声器96输出的声音音量。典型的是,对一个简单的USB设备或者对一个USB综合设备的接口来说,适用于USB综合设备98的驱动器一般知道它是否能被下载。一般,USB综合设备都具有多个接口。对于USB设备98来说,用于控制一个HID或其它USB设备的软件也可称之为USB类驱动器。同样,对于一个USB来说,用于控制该控制器的软件也可以称之为USB核心堆。该USB核心堆包括一个原始母驱动器、一个HUB驱动器以及一个控制器驱动器。例如,USB核心堆一般可以包括作为USB综合设备一个类驱动器的USBCCGP.SYS以及作为用于USB HUB设备一个类驱动器和作为用于USB集线器驱动器的类驱动器和用于USB的总线驱动器的USBHUB.SYS。USBHUB.SYS为每一个连接到系统的USB设备,无论是简单的还是综合的设备,都创建一个物理设备对象(PD0)。在综合设备的情况下,可以在由USBHUB.SYS所创建的一个PDO上下载USBCCGP.SYS作为该类驱动器。
常规USB实现所在着各种限制。特别是,在一个USB综合设备的情况下,一个单一的接口就不能够进入到一个低功率模式,且也不能要求在同一USB综合设备上的所有的其它接口进入到一个低功率模式。此外,在不了解与该接口有关USB类驱动器的知识或许可的条件下,一个接口不能够强制进入到一个低功率模式。
另外,某些类型的USB类驱动器,特别是适用于USB输入(或者HID)设备的那些USB类设备,就需要用户输入或者设备活动的通知,以便于了解何时将USB设备返回到全功率模式。对一些现有的USB主机控制器来说,控制器中时常存在着一个硬件问题,如果只有一个单个USB端口是处于低功率模式或者整个控制器的硬件本身不是处于低功率模式,则通知功能就难以发挥其功能。例如,如果有一个USB鼠标器(即,鼠标器94)连接到一个怀疑是USB主机控制器(即,USB主机控制器86)中的一个端口,以及还存在着另一个USB设备连接到同一控制器的另一端口时,则如果用于USB鼠标器的该类驱动器使得设备进入到一个低功率模式,那么USB类驱动器就将不能知道后续的设备活动(即,终端用户是移动鼠标器还是点击鼠标器的按钮)。于是,用于USB鼠标器的USB类驱动器就不能够将设备设置成全功率模式。该硬件问题带给终端用户的影响是很显然的,该USB鼠标器已经变得不能操作了。由于这类有问题的USB主机控制器,当采用USB工作时的另一个限制是用于USB设备而下载的USB类驱动器不能允许把已下载了该驱动器的USB设备基于来自USB类驱动器单方面的请求而使之进入到一个低功率模式。
结合图4和图5说明和讨论了根据本发明的驱动软件的操作。在图4中,驱动软件支持一个USB设备(例,一个HID)作为以层次结构设备树中的一个子设备来操作。在图5中,驱动器软件支持层次结构设备树中的一个USB综合的母设备和USB集线器设备。本发明的该驱动软件包括正如图4和图5所说明的软件的两个方面。
再参考图2,该方框图说明了一例适用于实现本发明的计算机系统的环境100的实例。该计算机系统环境100仅仅只是一例适用的计算机或者操作环境的实例,并不试图对本发明的使用范围和功能形成任何限制。并不应该将计算机系统环境100解释成具有与在示例性计算机系统环境100中所说明组件中任何一个或其组合有关的依赖性或要求性。
图2以计算机130形式显示了一例通用的计算设备的实例。在本发明的一个实施例中,一个诸如计算机130的计算机也适用于在本文中所说明和讨论的其它附图中使用。例如,一个诸如计算机130的计算机可适合作为计算机82来使用。
计算机130具有一个或多个处理器或处理单元132和一个系统存储器134。在所说明的实施例中,一个系统总线136与各种系统组件相耦合,包括:系统存储器134与处理器132的耦合。该总线136表示了若干总线结构中的一种或多种,包括一个存储器总线或存储器控制器、一个外围总线、一个加速图形端口,以及一个使用多种总线结构中的任何一种的处理器或局部总线。举例来说,但并不限制于,这类结构包括:工业标准结构(ISA)总线、微通道结构(MCA)总线、增强ISA(EISA)总线、视频电子标准协会(VESA)局部总线、以及外围组件互连(PCI)也称之为Mezzanine总线。
计算机130一般具有至少某些形式的计算机可读媒体。包括易失性和非易失性媒体或可移动和不可移动媒体的计算机可读媒体也可以是计算机130能够读取的任何可供使用的媒体。举例来说,但并不限制于,计算机可读媒体包括计算机存储媒体和通讯媒体。计算机存储媒体包括用于信息(例如,计算机可读指令、数据结构、程序模块或者其它数据)存储中的任何方法或技术所实现的任何易失性和非易失性或可移动和不可移动的媒体。例如,计算机存储媒体包括:RAM、ROM、EEPROM、闪存存储器或者其它存储器技术、CD-ROM、数字通用盘片(DVD)或者其它光盘存储、盒式磁带、磁带、磁盘存储或其它磁性存储设备、或者任何其它可以用于存储所需信息且能够由计算机130所读取的媒体。
通讯媒体一般都嵌入于计算机可读指令、数据结构、程序模块、或者在诸如载波或其它传输机制之类的调制信号中的数据中,并且包括任何信息传递的媒体。本领域中的熟练技术人士都十分熟悉调制数据的信号,它可以以对信号中的信息编码的方式来对其一个或多个特性进行设置或改变。通讯媒体的实例包括:有线媒体,例如,一个有线网络或直接连线的连接,和无线媒体,例如,超声、RF、红外和其它无线媒体。上述的任何组合也都包括于计算机可读媒体的范围内。
计算机存储器134包括可移动和/或不可移动、易失性和/或非易失性存储器形式的计算机存储媒体。在所说明的实施例中,系统存储器134包括只读存储器(ROM)138和随机存取存储器(RAM)140。基本输入/输出系统142(BIOS),包含着有助于在计算机130中的各组件之间传递信息(例如,在启动器件)的基本例程,一般都存储于ROM 138中。RAM 140一般都包含数据和/或程序模块,这些数据和/或程序模块都是处理器单元132可以直接存取和/或进行处理的。举例来说,但并不限制于,图2显示了操作系统144、应用程序146、其它程序模块148和程序数据150。
计算机130也可以包括其它可移动/不移动,易失性/非易失性计算机存储媒体。例如,图2显示了一个硬盘驱动器154,它能够对一个非移动的、非易失性的存储媒体进行读写。图2也显示了一个磁盘驱动器156,它能够对一个可移动的、非易失性的磁盘158进行读写;以及一个光盘驱动器160,它可以对一个诸如CD-ROM和其它光学媒体之类的可移动的、非易失性的光盘162进行读写。在示例性计算机环境中可以使用的其它可移动/不可移动的、易失性/非易失性的计算机存储媒体包括,但并不限制于,盒式磁带、闪存存储卡、数字通用盘片、数字视频带、固态RAM、固态ROM。以及其它等等。硬盘驱动器144、和磁盘驱动器156以及光盘驱动器160一般都通过一个非易失性存储器接口,例如,接口166,连接到系统总线136。
以上所讨论和图2所显示的驱动器或者其它批量存储设备以及它们所相关的计算机存储媒体,都可以提供适用于计算机130的计算机可读指令、数据结构、程序模块和其它数据的存储。在图2中,例如,所显示的硬盘驱动器154可存储操作系统170、应用程序72、其它程序模块174、以及程序数据176、值得注意的是,这些组件都可以类同于或者不同于操作系统144、应用程序146、其它程序模块148以及程序数据150。操作系统170、应用程序172、其它程序模块174以及程序数据176在本文中以不同的数字给出,以便于说明至少它们是不同的拷贝。
用户可以通过输入设备,例如,键盘180和指点设备182(例如,鼠标器、跟踪球。笔、或者触摸屏)向计算机130输入命令和信息。其它输入设备(未显示)可以包括:麦克风、操纵杆、游戏垫、碟形卫星天线、扫描仪,或其它等等。上述设备以及其它设备都可以通过一个用户接口184连接到处理单元132,该用户接口于系统总线136相耦合,但是,也可以通过其它接口和总线结构来连接,例如,并行端口、游戏端口、或者通用串行总线(USB)。监视器188或其它类型的显示设备也可通过一个接口,例如,一个视频接口190,与系统总线136相连接。除了监视器188之外,计算机还时常包括其它外围输出设备(未显示),例如,打印机和扬声器,这些都可以通过一个输出外围接口(未显示)相连接。
计算机130可以在一个网络环境中操作,它使用与一个和多个远程计算机,例如,远程计算机194的逻辑连接。远程计算机194可以是一台个人计算机。一台服务器、一个路由器、一台网络计算机、一个对等设备或者其它公共网络结点,并且一般都包括许多或所有与计算机130有关的上述讨论的组件。图2所表示的逻辑连接包括一个局域网(LAN)196以及一个广域网(WAN)198,但是也可以包括其它网络。这类网络化的环境在办公室中都是常见的,例如,企业内部的计算机网络、内部互联网,以及全球计算机网络(例如,互联网)。
当用于局域网联网环境中时,计算机130可以通过一个网络接口或适配器186与LAN 196相连接。当用于广域网络联网环境中时,计算机130一般可包括一个调制解调制178或者其它建立与WAN 198(例如,互联网)相通讯的部件。调制解调器178可以是内置的或者是外置的,它可以通过用户输入接口194或者其它合适的机制与系统总线136相连接。在联网环境中,所表示的与计算机130有关的程序模块,或者它的一部分可以存储于远程存储器存储设备(未显示)中。举例来说,但并不限制于,图2说明了远程应用程序192驻留在远程存储器设备中。应该意识到,所显示的网络连接仅仅是一个例子,也可以使用适用于在计算机之间建立通讯链路的其它装置。
一般来说,计算机130的数据处理器是可编程的,它可以籍助于以不同的时间存储于计算机的各种不同计算机可读存储媒体中的指令来编程。程序和操作系统一般是分布在,例如,软盘上和CD-ROM上。从软盘上和CD-ROM,可以将程序和操作系统下载到计算机的辅助存储器中。在执行时,它们至少部分可下载到计算机的主电子存储器中。当计算机可读存储媒体包含了适用于实现以下结合微处理器和其它数据处理器讨论的步骤的指令或程序,本文所讨论的发明包括上述和其它各种计算机可读存储媒体。在以下讨论根据方法和技术的编程时,本发明也包括了计算机本身。
为了说明的目的,程序和其它了执行程序组件,例如,操作系统,在本文中都以分立的方框的形式来说明。然而,应该认识到,这些程序和组件都可以各种不同的时间驻留在计算机的不同存储组件中,并且可以由计算机的数据处理器来执行。
接着,参考图3,方框图说明了通过USB连接的设备(例如,以上结合图1所说明和讨论的设备)的软件模式。图3的软件模式显示了与一个示例性设备配置有关的软件组件。图3所示的设备配置与图1所示的设备配置不同。在图3中,以虚线所显示的硬件设备都是与靠近该设备所显示的软件组件有关。
在该实施例中,USB控制器302连接到一个与一台计算机(例如,计算机130)有关的PCI总线304。USB控制器302包括一个根HUB 306。该根HUB 306包括一个或多个端口308,由端口#1至端口#N所表示。HUB 310连接到端口308中的一个端口。使用HUB310的软件包括一个总线驱动器312和一个客户机驱动器314。一个原始的母体(或者其它综合设备)316和一个连接到HUB 310的HID 318,它可作为子设备或HUB 310的结点。用于HID 318的软件包括客户机驱动器。在图3所示的示例性实施例中,HID 318与鼠标器有关。原始母体316具有两个子设备:一个音频组件320和一个HID 322。软件子客户机驱动器分别与音频组件320和HID 322有关。在该实例中,音频组件320与扬声器有关。此外,HID 322与一个和多个扬声器按钮有关。
接着,参考图4,该流程图显示了适用于控制一个子USB设备(例如,HID 322)的驱动软件的示例性操作。该驱动软件包括发出和等待暂停一个诸如结合图1和图3所讨论的USB设备(例如,一个原始母体和一个HUB设备)的方法。与USB设备有关的驱动软件可以在402连续确定该USB设备是否空闲。如果该驱动器软件已经确定该USB设备是空闲的或者准备暂停的话,则在404驱动软件就向USB设备的母设备(即,母设备316)提交一个空闲请求或者以另外方式发出一个信号。例如,驱动软件以软件的方式向它的物理设备对象发送该请求。在一个实施例,所提交或发送空闲请求包括将来自USB设备的IOCTL请求发送至USB设备的母设备。在一个实施例中,所发送的IOCTL请求包括将一个包含了来自USB设备的IOCTL请求的输入/输出请求包(IRP)发送至USB设备的母设备。例如,USB设备可以是一个USB主机控制器,并且USB设备的母设备可以是一台计算机。在该实例中,USB主机控制器向计算机发出USB主机控制器准备暂停的信号。计算机可以随后暂停该USB主机控制器,即使如果没有其它设备与USB主机控制器相连接。也就是说,对于希望空闲的根HUB的客户机驱动器用于该根HUB的物理设备对象(PDO)发送一个空闲请求。该PDO随后指令客户机驱动器暂停该根HUB。
在一个实施例中,USB设备具有一个活动状态和一个空闲状态。在该实例中,在处于空闲状态时,USB设备已准备好暂停。本发明预期可以在其它实施例中希望USB设备能够暂停,即使USB设备还没有完全空闲。例如,USB设备可以执行不需要全功率的操作。正是如此,USB设备可以继续执行操作,即使进入一个低功率模式或者其它暂停状态。在一个实施例中,该实施例中的USB设备可以具有一个或多个子结点(见下列图5),当USB设备处于空闲且USB设备的各个子结点都准备暂停时,USB设备才可以准备暂停。在该实例中,USB设备的各个子结点都将向USB设备发出一个空闲请求,以表示它们正准备暂停。
在提交了该空闲请求之后,驱动器软件就在406等待来自母设备所呼叫的使它功率降低的回叫信号功能。在功率降低回叫功能来自母设备的回叫之后,驱动器软件就在408对USB设备执行功率降低的回叫信号的功能,以暂停USB设备。在非空闲活动之后,驱动器软件就在410唤醒USB设备。USB设备,任何一个或多个USB设备的多个子结点,USB设备的母结点,或者与控制器有关的软件(即,应用程序)可以执行向USB设备发出唤醒的信号的非空闲活动。例如,如果USB设备是一个指点设备(例如,鼠标器),则非空闲的活动可能是鼠标器的移动。同样,如果母结点是控制器且一个或多个设备是扬声器,则在计算机上所执行的与控制有关的软件可以通过扬声器播放音乐来创建一个非空闲的活动。唤醒设备包括复位各空闲请求,使得该设备可自由提交新的空闲请求。
在一个设备通过USB相连接的实施例中,一旦USB设备(和整个USB设备树)已经被暂停时,就会至少由两种方法可以使得设备(以及随后的整个USB设备树)可以被“唤醒”并且重新回到全功率模式。第一种方法是任何USB类驱动器的都可以通过提交一个用于该设备的设置功率的请求使得它的子设备进入到全功率模式。第二种方法是通过对任何USB设备的“远程唤醒”活动,该USB设备可以支持且在设备进入到低功率模式之前原先已经使能了远程唤醒。在各种这样的情况下,所采取的行动将会具有使得整个设备树都进入到全功率模式的效果,并且当它们确定了它们的子设备和接口都已经是空闲并且不再使用时,用于子设备的USB类驱动器随后就能自由地进一步提交新的空闲请求,从而整个周期再一次开始。
也就是说,一旦暂停之后,一个设备就能够至少以两种方法来唤醒。第一,通过继续向远程具有唤醒功能的设备发出信号来产生唤醒(即,成功地完成一个等待/唤醒IRP)。典型的是,通过功能驱动器的等待/唤醒IRP完成例程将设备设置成全操作功率状态(即,功率状态DO)。等待/唤醒IRP可以用于提供设备的远程唤醒。第二,通过由客户机软件来始发一个新的开启请求,从而产生唤醒。在唤醒的过程中,任何空闲请求信息都是可以复位或者取消的。
在本发明的一个实施例中,当子设备不再准备暂停时,一个驱动器可以在执行它的回叫信号功能之前,通过向该子设备的母设备发送一个取消请求,来取消用于它的子设备或者接口的空闲请求。一般来说,取消请求是在发出了空闲请求之后由子设备发出的。控制器(例,USB核心堆)可以响应取消请求来取消当前正在处理的任何暂停转换并且取消用于在设备树中的任何其它设备的任何其它待决的空闲请求。
如果取消请求是在暂停之后发出的,则控制器可认为该取消请求是请求唤醒整个设备树的非空闲活动。
USB设备和母设备可以通过一个通讯媒体相互连接。通讯媒体包括,但并不限制于,结合图2所讨论的任何网络和总线结构。这类总线结构包括一个层次结构的并行总线,一个具有类似树状结构连接的无线总线,以及一个USB。例如,结合图4所讨论的结点可以是通过USB连接的设备。在该实例中,当其它设备暂停时,也可以暂停一个USB HUB和/或一个USB控制器。此外,即使没有其它设备(计算机内部或外部的设备)与总线相连接时,一台计算机也能够暂停USB控制器。
本发明包括一个或多个计算机可读媒体,该媒体具有执行图4所示方法的计算机可执行指令。
在一个实施例中,在设备之间的通讯可以通过操作系统内部的设备的软件表示来发生。例如,当控制器接受到一个空闲请求时,这是适用于接受空闲请求的控制器的软件设备对象。本领域内的熟练技术人士都会意识到,通讯也可以通过在物理硬件设备之间的电性能信令来发生。此外,本领域内的熟练技术人士也都会意识到,对于控制和功能的目的来说,母子设备可以是逻辑上的不同,而并不是物理上的不同。例如,该设备可以包括一个嵌入的HUB和两个嵌入的设备,或者一个具有两种独立控制功能的综合设备。
接着,参考图5,该流程图说明了适用于控制一个母USB设备(即,母316)的驱动器软件的操作。该母USB设备(即,原始母体或者HUB设备)具有一个和多个连接到母USB设备的子设备(即,音频320和HID 322)。用于母USB设备的驱动软件在502重复循环,以确定是否已经接受到了来自各个子设备的一个空闲请求。如果已经接受到来自子设备的一个空闲请求,驱动器软件就在504确定是否母设备自身是空闲的。如果母USB设备不是空闲的,则驱动软件就返回到在502的确定。如果母USB是空闲的,则驱动软件就在506确定是否母设备是一个根HUB。如果该母USB设备不是根HUB,则母USB设备就在508通过向母USB设备的一个母设备(例,HUB 310)提交一个空闲的请求来传递所接受到的空闲请求。在一个实施例,所提交的空闲请求包括所有接受到的来自子设备的空闲请求。如果子设备具有从属于该树中的母USB设备的子设备,则所提交的空闲请求就包括由各个从属子设备所提交的所有的空闲请求。采用这样的方式,来自该树中各个设备的空闲请求都会转发至根HUB或者在树根部上的其它控制器。
如果母USB设备是根HUB,则母设备可以在510暂停设备树(见图6)。在设备是通过USB相连接的实施例中,则根HUB管理树中的设备的功率。
本领域熟练技术人士应该注意到,作出空闲确定的次序并非限制于图5所说明的次序。确定是否已经接受到来自各个子结点的空闲请求和是否母USB设备已经是空闲的可以任何次序来发生,只要在树暂停或者母设备将空闲请求转发给母USB设备的母设备之前能够满足这两项确定。也就是说,转发该空闲请求一般包括,如果第一设备准备暂停和如果第一设备已经接受到了来自第一设备的任何一个子设备的空闲请求,就向一个第二设备(例如,是第一设备的母设备)发送来自一个第一设备所接受到的空闲请求。转发空闲请求还包括从第一设备到控制器传导式地遍历树结构。特别是,转发该空闲请求包括确定是否第一设备已经接受到了一个来自第一设备的各个子结点的空闲请求。如果还没有接受到一个来自各个子结点的空闲请求,则驱动器软件就等待接受一个来自各个子结点的空闲请求。如果第一设备已经接受到一个来自各个子结点的空闲请求,则驱动器软件就向第二设备提交一个空闲请求。
本发明包括一个或多个计算机可读媒体,它具有执行图5所说明的方法的计算机可执行指令。
接着,参考图6,该流程图说明了适用于暂停设备树的控制器软件的操作。在设备通过USB相互连接的实施例中,图6说明了适用于根HUB(例如,根HUB
306)的管理树中设备功率的软件的操作。在其它实施例中,控制器软件可以是除根HUB以外的与在树根部的组件有关。
参考图6,该树包括一个或多个以树状的子设备和母设备的层次组成的设备。特别是,根HUB具有一个或多个连接到根HUB的子设备且以树状结构组成。控制器软件(例,USB核心堆)接受来自子设备的空闲请求。用于根HUB的控制器软件在602重复循环以确定是否已经接受到了来自各个子设备的空闲请求。如果已经接受到了来自各个子设备的一个空闲请求,控制器软件就在604暂停设备树。
在一个实施例中,所接受到的来自子设备的空闲请求包括转发的来自从属于各子设备的子设备的空闲请求。暂停可以通过在树中的各个母设备呼叫它的各个子设备的功率下降的回叫信号功能来实现。这一过程可以通过该树经过接受到来自子设备的空闲请求所经过的路径以及转发的空闲请求来实现。这个转发以如下方式通过树,即在树中的各个子设备的驱动器软件的转发接受来自子设备的母设备的对回叫功能的呼叫并且随后该回叫功能执行对子设备的暂停。各个子设备的暂停包括回叫功能的执行,以将子设备置于低功率模式和其它暂停状态。
在另一实施例中,根HUB或其它控制器接受来自连接这根HUB的各个子设备的一个单一空闲请求,其中所接受到的空闲请求并不包括来自任何其它从属子设备的空闲请求。响应所接受到的来自子设备的所有空闲请求,根HUB可以通过功率下降回叫功能的逆向转发来暂停在树中的所有设备。也就是说,用于根HUB的控制器软件呼叫该根HUB的各个子设备的功率下降回叫功能,随后,适用于各个子设备的驱动器软件呼叫它的各个子设备的功率下降回叫功能,等等。采用这样的方式,就可以暂停树中的各个设备。该实施例假定适用于各个母设备的驱动器软件可以了解到对母设备的任何子设备指定的驱动器软件的功率下降回叫功能。
本发明包括一个或多个计算机可读媒体,它媒体具有执行图6所示方法的计算机可执行指令。
接着,参考图7,该方框图说明了与控制一个作为树结构中的一个子设备的HID的驱动器软件有关的一个信令组件704和一个驱动器组件706。虽然在图7所示的子设备作为一个HID来讨论,本领域内的熟练技术人士应该注意到,子设备可以是任何总线设备(例,任何USB设备)。树包括一个或多个以母设备和子设备层次组成的设备。在一个实施例中,母设备和子设备都是通过USB相互连接到的。一个或多个与HID有关的计算机可读媒体702可具有适用于发出信号和等待暂停HID的计算机可执行组件。该组件包括信令组件704和驱动器组件706。当HID准备暂停时,该信令组件704将一个空闲请求从HID发送至HID的母设备。该空闲请求通过树从母设备转发至控制器或者根HUB设备。此外,如HID具有至少一个子设备的话,则信令组件704就可接受到来自子设备的一个空闲请求并且将所接受到的空闲请求发送至母设备。
在一个实施例中,如果空闲请求在暂停HID之前发送的话,则可以由HID取消空闲请求。在该实施例中,信令组件704响应由HID产生的非空闲活动将一个取消请求从HID转发至母设备。该取消请求可以转发至控制器或者根HUB设备,并且随后取消由信令组件704所发送的空闲请求。如果在HID暂停之后发送的话,则由控制器或需要唤醒树中所有设备的非空闲活动的母设备来产生该取消请求。
驱动器组件706等待着它的回叫功能被从自它的母设备处调用来暂停HID。信令组件704响应所转发的空闲请求接受来自控制器的它的回叫功能的调用。驱动器组件706响应由信令组件704所调用的回叫功能的执行来暂停HID。在一个实施例中,回叫功能执行功率下降功能以将HID的功率下降。此外,功率下降功能可以包括一个将HID置于一个低功率模式的降低功率的功能。驱动器组件706响应由HID的活动,一个来自母设备的信号,或者一个来自与控制器相关软件的信号而唤醒该HID。
接着,参考图8,该方框图说明了与控制器有关的一个接口组件804和一个控制器组件806。本领域内的熟练技术人士应该意识到,本文主要讨论的控制器的某些和所有功能以及特别是与图7和图8有关的都可以采用根HUB设备作为一个控制器的子设备来执行。一个或多个计算机可读媒体802具有可通过在树根部的一个控制器来对设备树施加功率控制的计算机可执行组件。一个或多个计算机可读媒体802是与控制器相关联。该树包括一个或多个以树中的母设备和子设备层次组织的设备。在一个实施例中,母设备和子设备都通过USB相互连接到。组件可包括接口组件804和控制器组件806。接口组件804在接受到来自一个或多个子设备的空闲请求控制器组件806在接收到来自各个子设备的一个空闲请求之后阿暂停树中的所有设备。控制器随后响应控制器和任何设备或者两者的活动来唤醒树中的设备。
接着,参考图9,该方框图说明了一个IOCTL空闲请求的数据结构。计算机可读媒体902存储着表示以一个IOCTL请求方式体现的一个空闲请求的数据结构904。该数据结构904包括一个第一字段和一个第二字段。第一字段存储着表示一个回叫信号的例程属性906。例如,例程属性906是指向一个子设备中功能的指针,当母设备需要对子设备指示一个能够安全降低它的设备功率时,这是可以由母设备所调用的功能。第二字段存储着表示一个回叫环境的环境属性908。当回叫功能被调用时回叫环境被传递给回叫功能并提供一个用于执行该回叫功能的环境。正如以上所讨论的,当第一设备准备暂停时,一个第一设备可通过数据结构904向一个第二设备发送一个空闲请求。回叫功能响应空闲请求的发送执行暂停第一设备,正如结合图4和图5所讨论的那样。
第一设备具有一个和多个以树状结构组织的子结点。此外,第一设备具有一个活动状态和一个空闲状态。当第一设备中的一个和多个子结点的每一个准备暂停时,该第一设备就准备暂停。在一个实施例中,第一设备和第二设备都是通过通用串行总线来相互连接的。
以下显示了图9所示的一例数据结构的实例:
typedef VOID(*USB_IDLE_CALLBACK)(
    PVOID Context
    );
typedef struct_USB_IDLE_CALLBACK_INFO{
   USB_IDLE_CALLBACK IdleCallback;
   PVOID IdleContext;
}  USB_IDLE_CALLBACK_INFO,*PUSB_IDLE_CALLBACK_INFO;
本领域内的熟练技术人士都会意识到,本文所讨论的设备包括,但并不限制于,设备可以在计算机的外部以及设备可以嵌入在计算机内部。例如,设备可以是嵌入在膝上计算机中的USB相兼容的设备。使用本发明,膝上计算机允许一个高速缓存和与所嵌入的USB设备有关,与膝上计算机有关,或者与另一个嵌入设备(例,一个控制器)有关的处理器,从而可以进入到一个暂停状态(例如,C3)。
下列特定于USB的实例说明了本发明。当一个USB类驱动器确定用于下载的USB设备是空闲的并且不再使用时,USB类驱动器就向USB核心堆发送一个包含了一个IOCTL空闲请求的IRP,以向USB核心堆表示用于该设备的USB类驱动器希望将该设备置于低功率模式。该IOTCL空闲请求被作为IOCTL_INTERNAL USB_SUBMIT_IDLE_NOTIFICATION而引用。该IOCTL空闲请求可以在一个中断请求级(IRQL)PASSIVE_LEVEL上发送。当USB核心堆接受该请求,USB核心堆驱动器就标记该子设备是空闲的。USB核心堆、总线、或者端口驱动器设置将适当的出错状态例如,变量中的STATUS_SUCCESS设置为例如,Irp->IoStatus.Status。USB芯片驱动器随后遍历一列表中的所有子设备,以确定是否用于所有其它子设备的所有USB类设备都已经请求将它们的子设备置于一个低功率模式。如果USB核心驱动器确定了确实所有的USB子设备已经通过为每个设备下载的USB类驱动器请求而进入到低功率模式,则USB芯片存储器随后向这些USB子设备的母设备提交一个空闲请求。如果子设备是一个USB综合设备的话,则该母设备可以是一个USB原始的母设备。同样,如果子设备是一个简单的USB设备的话,则该母设备可以是一个USB HUB。如果它所有的子设备都是空闲的,则母USB原始设备或HUB设备是空闲的。
一旦空闲的请求是通过USB设备树来传输的,并且提交了一个用于USB根HUB设备的空闲请求,则USB根HUB设备随后调用它的下载的类驱动器的回叫信号(USBHUB.SYS)。各个USB母设备,USB综合设备,或者HUB设备随之调用各个USB类驱动器的回叫信号,下载用于各个USB子设备或接口。所有这类驱动器请求将它们的USB设备或接口置于低功率模式,并随后整个USB设备树和USB根HUB都置于低功率模式。当USB根HUB置于了低功率模式时,USB主机控制器就随后也置于低功率模式。如果USB设备或者接口支持远程唤醒并且还没有IRP_MN_WAIT_WAKE的请求在待命,则用于这些设备或接口的回叫例程就应该在关闭设备或接口之前向USB核心堆提交一个IRP_MN_WAIT_WAKE的请求。另外,一旦清楚Wait/WAKE将被要求,功能驱动器就向USB驱动器堆提交一个Wait/Wake IRP,而不是等待在呼叫信号例程中来进行。
另外,如果能够将设备置于一个全功率操作状态的话,则HUB驱动器可采用一个指示成功的状态代码来完成空闲请求(例,DO)。这就通知了较高层次的驱动器设备已经不再是空闲的。然而,如果设备已经移去了或者停止了,则HUB驱动器就可以采用一个适当的出错码来完成该空闲请求IRP。
如果功能驱动器取消了该空闲请求IRP,则HUB驱动器就将以一个出错码来完成该IRP。当一个功能驱动器的完成例程检测到HUB驱动器以一个出错码而不是STATUS_POWER_STATE_INVALID来完成该空闲请求的话,则功能驱动器就将试图打开该设备。在一个实施例中,只要HUB驱动器是以一个出错来完成一个空闲请求IRP,则HUB驱动器就不能保证该设备是处于一个功率状态。
根据本发明的一个方面,一种方法提供了发出信号并等待暂停一个第一设备。该第一设备通过一个通讯媒体与一个第二设备相连接。该方法包括:当第一设备准备暂停时,就将来自第一设备的一个空闲请求发送至第二设备。该方法还包括由第一设备来等待接受来自第二设备的,对与第一设备有关的回叫功能的调用来暂停第一设备。
根据本发明的另一个方面,一种方法提供了暂停设备树。该树包括一个或多个以树状结构的母设备和子设备所组织的设备。该树还包括一个在树根部的控制器。该方法包括由控制器来接受一个来自一个或多个子设备的空闲请求。该方法还包括在接受一个来自该树中的各个设备的空闲请求之后由控制器暂停在树状结构中的所有设备。
根据本发明的还有一个方面,一个或多个计算机可读媒体具有用于发出信号和等待暂停设备树中的一个设备的计算机可执行组件。该树包括以分层结构组织为母设备和子设备的一个或多个的设备。该树还包括一个在树根部的控制器。该组件包括一个信令组件,它用于当子设备准备暂停时,将来自至少一个子设备的一个空闲请求发送至一个母设备的信令组件。该空闲请求通过树从母设备传播到控制器。该组件还包括一个驱动器组件,它用于等待由子设备所接受到的来自控制器的,对与子设备有关的回叫功能的调用以能够暂停该子设备。
本发明的一个或多个计算机可读媒体的实施方面具有计算机可执行组件,它适用于由一个在树根部的控制器来施加对设备树的功率控制。该树包括一个或多个以树状结构的母设备和子设备所组织的设备。该组件包括一个接口组件,用于由控制接受来自一个或多个子设备的一个空闲请求。该组件还包括一个控制器组件,用于由控制器在接受到来自各个子设备的一个空闲请求之后暂停树状结构中的所有设备。
在本发明的还有一个方面,一种计算机可读媒体存储表示一个空闲请求的一个数据结构。该数据结构包括一个第一字段和一个第二字段。第一字段存储着表示一个呼叫功能的一个例程属性。第二字段存储着表示一个回叫环境的一个环境属性。在第一设备准备暂停时,一个第一设备就通过该数据结构向一个第二设备发送一个空闲请求。
尽管讨论结合了一个包括计算机130的示例性计算机系统环境,但是本发明可以多种其它通用或专用计算机系统环境或结构来实现。计算机系统环境并不试图建议对本发明的使用或功能的范围作出任何限制,此外,计算机系统环境不应该理解成具有在示例性操作环境中所说明组件的任何一个或组合有关的任何依赖性或要求。适用于本发明所使用的众所周知的计算机系统、环境,和/或配置的实例可包括,但并不限制于,个人计算机、服务器计算机、手持或膝上设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机、大型计算机、包括任何上述系统或设备的分布式计算环境,以及其它相类似的。
本发明可以采用计算机可执行指令的一般环境来讨论,例如,可以由一个或多个计算机或其它设备执行的程序模块。一般来说,程序模块包括,但并不限制于,例程,程序、对象、组件,以及执行特殊任务或实现特殊抽象数据类型的数据结构。本发明也可以分布式计算环境来实现,在该分布式计算环境中,其任务是由通过一个通讯网络相连接的远程处理设备来执行的。在一个分布式计算环境中,程序模块可以置于包括存储器存储设备的局部或远程计算机存储媒体中。
在介绍本发明的组件或实施例时,所使用冠词“a”,“an”,“the”和“said”都是试图是指由一个和多个组件。术语“comprising”,“including”和“having”都是试图包括且是指还可能存在着其它组件而不仅仅是所列出的组件。
鉴于以上讨论,应该看到,能够达到本发明的几个目的且能够获得其它有益结果。
当对上述产品和方法在不背离本发明范围的条件下进行各种不同变化时,在上述讨论中所包含的所有内容以及在附图中所显示的所有内容都应该理解成仅仅是说明而没有限制的含义。

Claims (22)

1.一种适用于发出信号和等待暂停第一设备的方法,第一设备和第二设备与计算机相关联,第一设备具有与第二设备的暂停状态无关的暂停状态,第一设备通过通讯媒体与根HUB相连接,所述方法包括:
通过至少一个第一设备的驱动器确定所述至少一个第一设备何时准备暂停;
将空闲请求从被确定准备暂停的所述至少一个第一设备的驱动器发送至根HUB,所述发送与第二设备所发送的任何空闲请求无关;
发送了所述空闲请求的所述至少一个第一设备的驱动器等待接收来自所述根HUB的、对与发送了所述空闲请求的所述至少一个第一设备相关联的回叫功能的调用;以及
由所述发送了所述空闲请求的所述至少一个第一设备的驱动器执行所述回叫功能以暂停发送了所述空闲请求的所述至少一个第一设备,同时保持与未发送所述空闲请求的一个或多个其它第一设备中的每一个相关联的状态。
2.如权利要求1所述方法,其特征在于,第一设备包括与所述计算机相关联的一个或多个外围组件。
3.如权利要求2所述方法,其特征在于,所述外围组件是从包括综合设备、根HUB以及控制器的组中选择的。
4.如权利要求1所述方法,其特征在于,第一设备具有活动状态和空闲状态,并且当处于所述空闲状态时第一设备准备暂停。
5.如权利要求1所述方法,其特征在于,第一设备包括以树状结构组织的多个结点,并且第一设备包括所述根HUB的子结点。
6.如权利要求5所述方法,其特征在于,在树状结构中的所述结点通过通用串行总线相连接。
7.如权利要求5所述方法,其特征在于,至少一个第一设备是所述根HUB的所述子结点,作为所述根HUB的子结点的所述至少一个第一设备具有树状结构的一个或多个子结点,并且当作为所述根HUB的子结点的所述至少一个第一设备的一个或多个子结点的每一个都准备暂停时,作为所述根HUB的子结点的所述至少一个第一设备就准备暂停。
8.如权利要求7所述方法,其特征在于,还包括:由作为所述根HUB的子结点的所述至少一个第一设备接收来自其至少一个子结点的空闲请求。
9.如权利要求8所述方法,其特征在于,还包括:将来自作为所述根HUB的子结点的所述至少一个第一设备的所述空闲请求转发给位于所述树状结构的根部的控制器。
10.如权利要求9所述方法,其特征在于,所述转发空闲请求包括将所述空闲请求通过传导式遍历所述树状结构而从作为所述根HUB的子结点的所述至少一个第一设备转发给所述控制器。
11.如权利要求9所述方法,其特征在于,所述转发空闲请求包括:如果作为所述根HUB的子结点的所述至少一个第一设备正准备暂停并且已经接收到了来自其所有子结点的空闲请求,就将所接收到的来自作为所述根HUB的子结点的所述至少一个第一设备的空闲请求发送至另一个第一设备。
12.如权利要求9所述方法,其特征在于,所述转发空闲请求包括:
确定是否作为所述根HUB的子结点的所述至少一个第一设备已经接收到了来自其各个子结点的空闲请求;
如果还没有接收到来自各个子结点的空闲请求,则等待接收来自各个子结点的空闲请求;
如果作为所述根HUB的子结点的所述至少一个第一设备已经接收到了来自各个子结点的空闲请求,则将一个空闲请求提交给所述控制器。
13.如权利要求1所述方法,其特征在于,发送空闲请求包括将来自被确定准备暂停的所述至少一个第一设备的输入/输出控制IOCTL请求发送至所述根HUB。
14.如权利要求13所述方法,其特征在于,发送所述IOCTL请求包括将来自被确定准备暂停的所述至少一个第一设备的输入/输出请求包发送至所述根HUB。
15.如权利要求1所述方法,其特征在于,还包括由发送了所述空闲请求的所述至少一个第一设备接收来自所述根HUB的、对与所述发送了所述空闲请求的所述至少一个第一设备相关联的回叫功能的调用,并且响应于对所接收到的回叫功能的执行来暂停所述发送了所述空闲请求的所述至少一个第一设备。
16.如权利要求15所述方法,其特征在于,还包括唤醒被暂停的所述至少一个第一设备。
17.如权利要求16所述方法,其特征在于,唤醒的发生是响应所述被暂停的所述至少一个第一设备将所述被暂停的所述至少一个第一设备准备被唤醒的信号发送给所述根HUB。
18.如权利要求16所述方法,其特征在于,唤醒的发生是响应所述根HUB向所述被暂停的所述至少一个第一设备发送唤醒的信号。
19.如权利要求16所述方法,其特征在于,所述被暂停的所述至少一个第一设备具有以树状结构组织的一个或多个子结点,以及唤醒的发生是响应至少一个子结点向所述被暂停的所述至少一个第一设备发送唤醒的信号。
20.如权利要求16所述方法,其特征在于,唤醒包括复位所发送的空闲请求。
21.如权利要求1所述方法,其特征在于,还包括,当所述被暂停的所述至少一个第一设备不再准备暂停时,由所述被暂停的所述至少一个第一设备向所述根HUB发送取消请求,所述发送取消请求发生在发送所述空闲请求之后。
22.如权利要求1所述方法,其特征在于,还包括,当另一个第一设备准备暂停时,该另一个第一设备向所述根HUB发送空闲请求,并且与所述被确定准备暂停的所述至少一个第一设备同时暂停,所述另一个第一设备和所述被确定准备暂停的所述至少一个第一设备是与所述根HUB连接的两个第一设备,所述另一个第一设备具有独立于所述被确定准备暂停的所述至少一个第一设备的输入/输出控制和功能。
CNB028215591A 2001-10-31 2002-10-30 总线设备的选择性暂停 Expired - Fee Related CN100405259C (zh)

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
US10/003,338 2001-10-31

Publications (2)

Publication Number Publication Date
CN1578940A CN1578940A (zh) 2005-02-09
CN100405259C true CN100405259C (zh) 2008-07-23

Family

ID=21705355

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB028215591A Expired - Fee Related CN100405259C (zh) 2001-10-31 2002-10-30 总线设备的选择性暂停

Country Status (13)

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

Families Citing this family (51)

* 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 休止状態制御装置、休止状態制御方法並びに休止状態制御プログラム及び情報記録媒体
US20050114552A1 (en) * 2003-11-21 2005-05-26 David Mak-Fan 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
JP4843372B2 (ja) * 2006-05-09 2011-12-21 株式会社リコー 画像処理装置
JP4698479B2 (ja) * 2006-05-18 2011-06-08 Necエンジニアリング株式会社 Usb装置および給電制御方法
US7681051B2 (en) * 2006-08-30 2010-03-16 Agere Systems Inc. Transitioning of a port in a communications system from an active state to a standby state
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
JP5386931B2 (ja) * 2007-11-15 2014-01-15 株式会社リコー メモリカード制御装置およびメモリカード制御方法
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
WO2010033497A1 (en) 2008-09-18 2010-03-25 Marvell World Trade Ltd. Preloading applications onto memory at least partially during boot up
JP2010094942A (ja) * 2008-10-20 2010-04-30 Canon Inc インクジェット記録システム及びインクジェット記録装置
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 威盛电子股份有限公司 电源管理系统及方法
JP5790007B2 (ja) * 2011-02-09 2015-10-07 株式会社リコー 情報処理装置および情報処理装置の制御方法、ならびに、プログラム
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
CN109075968A (zh) 2016-03-08 2018-12-21 马维尔国际贸易有限公司 用于安全设备认证的方法和装置
US11054887B2 (en) 2017-12-28 2021-07-06 Advanced Micro Devices, Inc. System-wide low power management

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5842027A (en) * 1993-01-14 1998-11-24 Apple Computer, Inc. Method and apparatus for supplying power to devices coupled to a bus
US5915119A (en) * 1996-10-01 1999-06-22 Ncr Corporation Proxy terminal for network controlling of power managed user terminals in suspend mode
US6092209A (en) * 1994-10-04 2000-07-18 Intel Corporation Method and apparatus for managing power consumption of peripheral devices of personal computers
CN1269550A (zh) * 1999-03-31 2000-10-11 国际商业机器公司 分区计算机系统中的动态i/o分配
US6243771B1 (en) * 1997-07-21 2001-06-05 U.S. Philips Corporation System for operating a communication channel in a mixed master/slave subscriber environmental through a dynamical closing and/or opening operation

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2986045B2 (ja) * 1992-12-14 1999-12-06 インターナショナル・ビジネス・マシーンズ・コーポレイション ビデオ・サブシステムにおける電力管理の方法および装置
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
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
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
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
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5842027A (en) * 1993-01-14 1998-11-24 Apple Computer, Inc. Method and apparatus for supplying power to devices coupled to a bus
US6092209A (en) * 1994-10-04 2000-07-18 Intel Corporation Method and apparatus for managing power consumption of peripheral devices of personal computers
US5915119A (en) * 1996-10-01 1999-06-22 Ncr Corporation Proxy terminal for network controlling of power managed user terminals in suspend mode
US6243771B1 (en) * 1997-07-21 2001-06-05 U.S. Philips Corporation System for operating a communication channel in a mixed master/slave subscriber environmental through a dynamical closing and/or opening operation
CN1269550A (zh) * 1999-03-31 2000-10-11 国际商业机器公司 分区计算机系统中的动态i/o分配

Also Published As

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

Similar Documents

Publication Publication Date Title
CN100405259C (zh) 总线设备的选择性暂停
KR101281354B1 (ko) 유니버설 시리얼 버스 (usb) 원격 웨이크업
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
US9032113B2 (en) Clock control for DMA busses
KR101551321B1 (ko) 휴대용 컴퓨팅 디바이스에서 요청들을 스케쥴링하기 위한 방법 및 시스템
US20040153867A1 (en) Dynamic performance and resource management in a processing system
AU2002353931A1 (en) Selective suspension of bus devices
US20040003299A1 (en) Power management architecture for computing devices
EP2726955B1 (en) Power management module for usb devices
KR101541664B1 (ko) 휴대형 컴퓨팅 디바이스에서 병렬 리소스 요청들을 관리하는 방법 및 시스템
US20020124125A1 (en) Method and apparatus to permit a peripheral device to become the default system bus master
US7200451B2 (en) Method for consistent on/off object to control radios and other interfaces
US20020095558A1 (en) Data transmission system
WO2002017315A2 (en) Intelligent data storage device
WO2021154400A1 (en) Billboard for context information sharing
JPH01263064A (ja) プリンタ装置
WO2023048833A1 (en) Method and apparatus for managing a controller in a power down state
JPH10333785A (ja) プリンター電源制御方式
KR20080059747A (ko) 다수의 처리 장치를 구비하는 시스템에서의 상태 제어 장치및 상태 제어 방법과 이를 실현시키기 위한 프로그램을기록한 컴퓨터로 판독 가능한 기록 매체
JPH07319570A (ja) レジューム制御方式

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150430

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150430

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080723

Termination date: 20191030

CF01 Termination of patent right due to non-payment of annual fee