买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
申请/专利权人:苹果公司
摘要:本发明涉及为外围子系统提供个体化电源控制的方法和装置。本发明提供了用于在独立域内隔离子系统资源诸如,时钟、电源和复位的方法和装置。在一个实施方案中,系统的每个子系统具有一个或多个专用电源与时钟域,所述一个或多个专用电源与时钟域独立于其它子系统的操作而运行。例如,在具有蜂窝、WLAN和PAN连接的示例性移动设备中,每个此类子系统连接到共同存储器映射总线功能件,但是仍能独立运行。所述公开的架构有利地既满足了移动设备的所述功率消耗限制因素,同时又为此类移动设备上的高带宽应用程序提供了存储器映射连接的所述益处。
主权项:1.一种为电子设备内的多个子系统提供个体化电源控制的方法,所述电子设备包括主机处理器装置,所述方法包括:建立通过所述电子设备的端点装置到所述多个子系统的存储器映射接口,所述多个子系统中的每个子系统与所述端点装置内包括的一个相应功能耦合,其中所述多个子系统中的每个子系统包括相对于所述多个子系统中的其它子系统的独立电源管理状态机;以及对于所述多个子系统中的一个子系统,使对应的电源管理状态机独立于所述多个子系统中的其它子系统,从睡眠状态转变至激活状态。
全文数据:为外围子系统提供个体化电源控制的方法和装置[0001]优先权[0002]本申请要求2017年7月11日提交、具有相同标题的共同拥有且共同未决的美国专利申请序列号15647,063的优先权益,此美国专利申请继而要求2016年11月10日提交、标题为“ApparatusandMethodsforIndependentPowerandClockDomainsofaMemorymappedArchitecture”的共同拥有且共同未决的美国临时专利申请序列号62420,143的优先权益,以上专利申请中的每一个全文以引用方式并入本文。[0003]相关申请[0004]本申请与以下专利有关:2017年7月11日提交,标题为“MethodsandApparatusforProvidingAccesstoPeripheralSub-SystemRegisters”的共同拥有且共同未决的美国专利申请序列号15647,088;以及2017年7月11日提交,标题为“MethodsandApparatusforProvidingPeripheralSub-SystemStability”的共同拥有且共同未决的美国专利申请序列号15647,103,以上专利申请中的每一个全文以引用方式并入本文。[0005]本申请也与以下专利有关:2015年10月8日提交,标题为“MethodsandApparatusforRunningandBootinganInter-ProcessorCommunicationLinkBetweenIndependentlyOperableProcessors”的共同拥有且共同未决的美国专利申请序列号14879,024;2015年10月8日提交,标题为“MethodsandApparatusforManagingPowerwithanInter-ProcessorCommunicationLinkBetweenIndependentlyOperableProcessors”的共同拥有共同未决的美国专利申请序列号14879,027;以及2015年10月8日提交,标题为“MethodsandApparatusforRecoveringErrorswithanInter-ProcessorCommunicationLinkBetweenIndependentlyOperableProcessors”的共同拥有且共同未决的美国专利申请序列号14879,030,以上专利申请中的每一个全文以引用方式并入本文。[0006]版权声明[0007]本专利文档的公开内容的一部分包含受到版权保护的材料。由于本专利文档或本专利公开内容出现在专利与商标局专利文件或记录中,因此版权所有人不反对任何人对本专利文档或本专利公开内容的拓制,但会以其他方式保留任何形式的所有版权权利。技术领域[0008]本公开整体涉及电子设备领域及其总线架构。更具体地,在一个示例性方面,本公开涉及用于独立操作存储器映射架构中电源、时钟和或其它资源域的方法和装置。背景技术[0009]外围部件互连高速PCIe是一项高速串行计算机扩展总线技术,该技术在计算机和消费电子产品制造商中具有非常高的采用率。其成功的一个原因在于,PCIe使设备与功能件之间的输入输出(10可以直接访问共享存储器映射。通过减少例如总线仲裁和集中式存储器管理,存储器映射访问大大减少了事务开销。实际上,PCIe已经成为添加超出计算机系统基础芯片组所提供的能力之外的另外的输入输出(IO能力的实际标准。除了PCIe原本支持的直接存储器映射总线能力之外,广泛的生态系统和不断发展的硬件和或软件驱动器对利用久经考验且强大的商品部件提供了显著优势。[0010]简而言之,PCIe基于较旧的1993年开发的PCI扩展总线技术。那时,PCI的目标是提供向计算机总线添加硬件单元的标准方法。每个硬件单元使用某机制连接到共享的并行总线,以将每个硬件单元视为共享总线的独特设备。每个设备在逻辑部件上被进一步细分成最多八8个功能件。因此,PCI总线开始能支持若干设备,每个设备具有若干功能件。随着PCIe的来到,物理上共享的并行总线由点对点高速串行总线替代。通过拆除共享并行总线,PCIe实现了对任意两2个端点之间全双工通信的支持,而不对多个端点上的并发访问具有内在限制。[0011]尽管PCIe非常适合个人计算应用,但是其并非针对移动空间考虑例如功率消耗、事务效率和或其它移动性考虑而设计。例如,个人计算机通常插入“墙上的电源”,如此功率消耗或节能通常不是问题。相比之下,移动设备依靠电池电源来运行,并且必须减小功率消耗过度以使电池寿命最大化。[0012]类似地,个人计算机一般支持单个处理器拓扑,所述单个处理器拓扑可根据需要不频繁地访问外部网络诸如,更广的因特网)。相比之下,移动设备可具有用于处理用户任务的应用处理器,但是也可具有多个另外的调制调解处理器,这些处理器自主搜索网络管理实体,注册到网络管理实体,以及或者与网络管理实体一起处理数据,所述网络管理实体诸如无线LAN或蜂窝网络的网络管理实体。[0013]尽管PCIe的限制因素在历史上已经限制了其对移动空间的适用性,但是无线技术不断增长的带宽能力以及消费者对更大移动设备需求的变化已经致使制造商重新考虑将PCIe作为一种可行的总线解决方案。具体地,PCIe存储器映射总线能力已经越来越普及。为此,需要改进型方法和装置来进一步优化移动应用中的高速直接存储器映射总线能力。发明内容[0014]本公开通过提供以下项满足了上述需求:尤其是用于独立操作存储器映射总线架构内电源、时钟和或其它资源域的系统、方法和装置。[0015]在第一方面,公开了为电子设备内的多个子系统提供个体化电源控制的方法,该电子设备包括主机处理器装置。在一个实施方案中,该方法包括:建立到多个子系统的存储器映射接口,多个子系统中每个子系统的特征在于对应的电源管理状态机;并且对于多个子系统中的一个子系统,致使对应的电源管理状态机独立于多个子系统中的其它子系统,从睡眠状态转变至激活状态。[0016]在一个变型中,多个子系统中的一个子系统从睡眠状态过渡至激活状态可以在多个子系统中的其它子系统没有从睡眠状态过渡至激活状态的情况下发生。[0017]在另一变型中,该方法还包括独立于多个子系统中的其它子系统,将多个子系统中的一个子系统过渡至多种节能模式。[0018]在又一变型中,该方法还包括通过主机处理器装置对多个子系统进行独立电源控制。[0019]在又一变型中,对多个子系统进行独立电源控制还包括使多个子系统中的第一子系统保持在激活状态。[0020]在又一变型中,对多个子系统进行独立电源控制还包括使多个子系统中的第二子系统过渡至睡眠状态,同时使多个子系统中的第一子系统保持在激活状态。[0021]在又一变型中,该方法还包括独立于多个子系统中的其它子系统,为多个子系统中的一个子系统发起上电时序。[0022]在第二方面,公开了提供到对应于端点装置内多个子系统的多个子系统寄存器的访问的方法,所述端点装置与多个子系统相关联。在一个实施方案中,该方法包括:建立到端点装置的存储器映射接口;以及在不唤醒对应的至少一个子系统的情况下,通过存储器映射接口访问多个子系统寄存器中的至少一个寄存器。[0023]在一个变型中,通过存储器映射接口访问多个子系统寄存器中的至少一个寄存器还包括:读取与多个子系统寄存器中的一个寄存器关联的寄存器。[0024]在另一变型中,通过存储器映射接口访问多个子系统寄存器中的至少一个寄存器还包括:对与多个子系统寄存器中的一个寄存器相关联的寄存器进行写入。[0025]在又一变型中,访问还包括执行访问外围部件互连高速PCIe功能件内的存储器位置的指令;唤醒PCIe通信链路;以及访问存储器映射接口内的存储器空间,该存储器空间与PCIe通信链路相关联。[0026]在又一变型中,该方法还包括,在访问存储器空间之后,唤醒对应的至少一个子系统。[0027]在又一变型中,对应的至少一个子系统包括蜂窝子系统,并且该方法还包括在不唤醒蜂窝子系统的情况下,查询端点装置内的蜂窝功能件。[0028]在又一变型中,该方法还包括在不唤醒多个子系统的情况下,通过存储器映射接口访问多个子系统寄存器中的每个寄存器。[0029]在第三方面,公开了用于提供个体化启动计算机化装置中多个子系统的方法。在一个实施方案中,该方法包括:建立到与装置相关联的端点的存储器映射接口,该端点被可操作地耦接到多个子系统中的每个子系统;枚举多个子系统;以及按顺序启动所枚举的多个子系统中的至少两个子系统。[0030]在一个变型中,该方法还包括从启动流程中裁剪掉所枚举的多个子系统中的一个子系统。[0031]在另一变型中,枚举的多个子系统中的裁剪子系统包括个人局域网PAN子系统,并且该方法还包括在裁剪之前禁用PAN子系统能力。[0032]在又一变型中,该方法还包括不论多个子系统中任一者的运行状态如何均给端点通电,给端点通电使能了枚举功能。[0033]在又一变型中,该方法还包括初始化多个子系统中一个子系统的配置空间。[0034]在又一变型中,该方法还包括访问多个子系统中一个子系统的配置空间,该访问不论多个子系统中的一个子系统的电源状态如何而发生。[0035]在又一变型中,该方法还包括确定枚举的多个子系统中至少两个子系统的重要次序,并根据所确定的重要次序,按顺序启动枚举的多个子系统中至少两个子系统。[0036]在第四方面,公开了用于提供个体化复位与恢复子系统的方法。在一个实施方案中,该方法包括:建立到端点的存储器映射接口,该存储器映射接口包括与多个子系统对应的多个存储器区域;响应于对多个子系统中第一子系统内的错误的检测,对对应的第一存储器区域内的复位地址进行写入;响应于该写入,启动第一子系统;以及恢复与检测到的错误对应的诊断信息。[0037]在一个变型中,该方法还包括响应于对第一子系统内的错误的检测执行循环指令,该循环指令使能了对诊断信息的恢复。[0038]在另一变型中,该方法还包括响应于对该错误的检测,采集多个存储器区域中存储器区域的快照。[0039]在又一变型中,端点包括多个功能件,所述功能件中的每个功能件与多个子系统中的指定子系统对应,并且该方法还包括针对多个功能件中的一个功能件发起功能件级复位。[0040]在又一变型中,针对多个功能件中的功能件发起功能件级复位还包括:复位与多个功能件中的功能件相关联的对应子系统。[0041]在又一变型中,启动第一子系统在不需要启动多个子系统中其它子系统的情况下发生。[0042]在第五方面,公开了计算机化装置。在一个实施方案中,计算机化装置包括:主机处理装置,该主机处理装置包括根组件;外围装置,该外围装置包括端点装置,端点装置包括多个功能件,多个功能件中的每个功能件与多个子系统中相应的子系统耦接;和通信链路,该通信链路在根组件与端点装置之间。[0043]在一个变型中,多个子系统中的每个子系统包括与多个子系统中其它子系统分隔开的电源管理。[0044]在另一变型中,主机处理装置包括与多个子系统分隔开的主机电源管理;并且通信链路包括与主机处理装置和多个子系统分隔开的链路电源管理。[0045]在又一变型中,多个子系统中的一个子系统包括无线局域网WLAN子系统,其中WLAN子系统能够扫描附近的信标,而不需要唤醒多个子系统中的其它子系统。[0046]在又一变型中,WLAN子系统能够扫描附近的信标,而不必唤醒通信链路或主机处理装置。[0047]在又一变型中,多个子系统中的一个子系统包括蜂窝子系统,其中蜂窝子系统被配置为在移动管理更新期间与蜂窝网络连接,而不使子系统、主机处理装置和通信链路中其它者中的一者或多者上电。[0048]在第二实施方案中,计算机化装置包括:主机处理装置,该主机处理装置包括根组件;外围装置,该外围装置包括端点装置,端点装置包括设置在存储器映射接口内的多个功能件,多个功能件中的每个功能件与多个子系统中相应的子系统耦接;以及通信链路,该通信链路在根组件与端点装置之间。主机处理装置被进一步配置为:通过存储器映射接口访问与多个子系统中的一个子系统相关联的子系统寄存器,而不需要将该一个子系统通电进入运行状态来处理该访问。[0049]在一个变型中,多个子系统中的每个子系统包括存储器映射接口内对应的访问空间,其中多个子系统中的每个子系统只可以访问存储器映射接口之内对应的访问空间。[0050]在另一变型中,根组件还包括多个控制寄存器,并且主机处理装置还被配置为在通信链路处于较低功率状态时,对多个控制寄存器的至少一部分进行读取或写入。[0051]在又一变型中,主机处理装置被进一步配置为当通信链路处于较低功率状态时:执行访问通信链路功能件内存储器位置的指令;将通信链路从较低功率状态中唤醒;以及访问存储器映射接口内的存储器空间,该存储器空间与通信链路相关联。[0052]在又一变型中,主机处理装置被进一步配置为在访问子系统寄存器之后,唤醒一个子系统。[0053]在又一变型中,一个子系统包括蜂窝子系统,并且主机处理装置被进一步配置为:在不唤醒蜂窝子系统的情况下,查询端点装置内的蜂窝功能件。[0054]在第三实施方案中,计算机化装置包括:主机处理装置,该主机处理装置包括根组件;外围装置,该外围装置包括端点装置,端点装置包括多个功能件,多个功能件中的每个功能件与多个子系统中相应的子系统耦接;以及通信链路,该通信链路在根组件与端点装置之间。主机处理装置被配置为按顺序启动多个子系统中的每个子系统。[0055]在一个变型中,主机处理装置被进一步配置为从启动流程中裁剪掉多个子系统中的一个子系统。[0056]在另一变型中,从启动流程中裁剪掉多个子系统中的一个子系统被配置为相比于启动多个子系统中的每个子系统减少计算机化装置的功率消耗。[0057]在又一变型中,端点装置被配置为不论多个子系统中任一者的运行状态如何,使其通电。[0058]在又一变型中,主机处理装置确定多个子系统启动序列的重要次序,并且计算机化装置被进一步配置为根据所确定的重要次序,按顺序启动多个子系统中的每个子系统。[0059]在又一变型中,主机处理装置被进一步配置为针对多个功能件中的一个功能件发起功能件级复位。[0060]在又一变型中,针对多个功能件中的功能件发起功能件级复位被进一步配置为:复位与此功能件相关联的对应子系统。[0061]在第六方面,公开了用于电子设备中的外围处理装置。在一个实施方案中,外围处理装置包括:端点装置,端点装置包括多个功能件,对于外围处理装置,多个功能件中的每个功能件与多个子系统中的相应子系统耦接。多个子系统中的每个子系统包括独立于多个子系统中其它子系统的电源管理状态机。[0062]在一个变型中,多个子系统中第一子系统的第一独立电源管理状态机被进一步配置为:在处于激活状态时向主机处理装置发送睡眠模式请求;在发送睡眠模式请求之后,进入睡眠等待状态;检测针对外围睡眠控制寄存器的更新,该更新由主机处理装置发起;以及响应于所检测到的针对外围睡眠控制寄存器的更新,从睡眠等待状态进入睡眠状态。[0063]在另一变型中,多个子系统中第一子系统的第一独立电源管理状态机被进一步配置为:检查主机处理装置是否具有任何未决的数据事务;如果存在未决的数据事务,发起唤醒过程以使第一独立电源管理状态机从睡眠状态过渡至激活状态;进入激活等待状态;以及在主机处理装置检测到针对外围睡眠控制寄存器的更新之后,从激活等待状态进入激活状态。[0064]在又一变型中,多个子系统中第一子系统的第一独立电源管理状态机被进一步配置为:从主机处理装置接收主机进入睡眠消息;响应于所接收到的主机进入睡眠消息,挂起多个子系统中第一子系统的第一独立电源管理状态机;以及在挂起第一独立电源管理状态机之后,处理所有未决的传输描述符。[0065]在又一变型中,多个子系统中其它子系统被进一步配置为从主机处理装置接收主机进入睡眠消息。[0066]在又一变型中,第一独立电源管理状态机被进一步配置为在处理所有未决的传输描述符之后,从激活状态过渡至睡眠状态。[0067]在又一变型中,多个子系统中第一子系统的第一独立电源管理状态机被进一步配置为通过发起针对主机处理装置的唤醒请求,重新建立与主机处理装置的通信。[0068]在第七方面,公开了用于电子设备中的主机处理装置。在一个实施方案中,主机处理装置还包括:被配置为建立到端点装置的存储器映射接口的逻辑部件;以及被配置为独立于对应的至少一个子系统的运行状态,通过存储器映射接口访问多个子系统寄存器中至少一个寄存器的逻辑部件。[0069]在一个变型中,被配置为通过存储器映射接口访问多个子系统寄存器中至少一个寄存器的逻辑部件还包括被配置为读取与多个子系统寄存器中的一个寄存器相关联的寄存器的逻辑部件。[0070]在另一变型中,被配置为通过存储器映射接口访问多个子系统寄存器中至少一个寄存器的逻辑部件还包括被配置为对与多个子系统寄存器中的一个寄存器相关联的寄存器进行写入的逻辑部件。[0071]在又一变型中,被配置为访问的逻辑部件还包括被配置为用于以下项的逻辑部件:执行访问外围部件互连高速PCIe功能件内的存储器位置的指令;唤醒PCIe通信链路;以及访问存储器映射接口内的存储器空间,该存储器空间与PCIe通信链路相关联。[0072]在又一变型中,主机处理装置还包括被配置为在访问存储器空间之后,唤醒对应的至少一个子系统的逻辑部件。[0073]在又一变型中,对应的至少一个子系统包括蜂窝子系统,并且主机处理装置还包括被配置为在不唤醒蜂窝子系统的情况下,查询端点装置内的蜂窝功能件的逻辑部件。[0074]在又一变型中,主机处理装置还包括被配置为独立于多个子系统的运行状态,通过存储器映射接口访问多个子系统寄存器中每个寄存器的逻辑部件。[0075]在第八方面,还公开了非暂态计算机可读装置。在一个实施方案中,公开了非暂态计算机可读装置,该装置包括在由处理器装置执行时致使该装置执行各种前述方法的指令。[0076]在一个变型中,指令被配置为在由处理器执行时,致使该装置独立地管理不同电源和或时钟域。比如,在一种实现方式中,指令在被执行时致使该装置选择性地启动各种公开子系统,复位各种公开子系统,以及或者捕获各种公开子系统的错误。[0077]在第九方面,公开了计算机化逻辑部件。在一个实施方案中,计算机化逻辑部件被配置为执行各种前述方法。[0078]在一个变型中,逻辑部件包括该设备上驻留的硬件例如,门逻辑部件)、固件和或软件中的至少一者。[0079]在第十方面,公开了多功能装置的存储器映射总线架构。在一个实施方案中,存储器映射总线架构基于PCIe技术,并且存储器映射总线架构支持主机处理器、蜂窝调制调节器、无线局域网调制调节器和个人局域网调制调节器。[0080]本领域的普通技术人员参考如下所给的附图和对示例性实施方案的详细描述将立即认识到本公开的其它特征和优点。附图说明[0081]图1是存储器映射总线架构的一种现有技术系统的逻辑框图。[0082]图2是根据本文所述原则的存储器映射总线架构的一个示例性系统的逻辑框图,该架构具有独立的电源与时钟域。[0083]图3是根据本文所述原则的一个示例性链路训练和状况状态机LTSSM的逻辑图,该状态机可用于对示例性PCIe存储器映射总线进行电源管理。[0084]图4是根据本文所述原则,示出了两个示例性电源管理状态机的逻辑图,该状态机可用于对示例性子系统域进行电源管理。[0085]图4A是根据本文所述原则,使示例性子系统进入睡眠状态的一个示例性方法的逻辑框图。[0086]图4B是根据本文所述原则,使示例性子系统进入激活状态的一个示例性方法的逻辑框图。[0087]图5是符合本文所述各项原则,用于访问子系统内的寄存器的一个示例性方法的逻辑框图。[0088]图6是符合本文所述各项原则,用于使主机处理器转变至睡眠模式的一个示例性方法的逻辑框图。[0089]图7是符合本文所述各项原则,用于功能件级复位操作的一个示例性方法的逻辑框图。[0090]图8是符合本文所述各项原则,用于外围设备复位操作的一个示例性方法的逻辑框图。[0091]所有图片◎版权所有2〇16_2〇17AppleInc.保留所有权利。具体实施方式[0092]现在参考附图,在所有附图中类似标号指代类似部分。[0093]示例性实施方案的具体实施方式[0094]现详细描述本公开的示例性实施方案。尽管这些实施方案主要的讨论背景是高速移动应用场景中的总线架构,但是普通技术人员将理解,本发明不限于此。实际上,本文所述的原则可用于任何总线架构、部件、设备和或支持多个独立子系统的设备的网络。[0095]此外,尽管以下实施方案描述了例如专用地址空间、通电序列、计时实现方式、启动序列、睡眠序列、错误捕获和或复位处理的特定实现方式,但是相关领域的普通技术人员将易于理解,以下具体实施方式仅仅是本文所述原则在更广意义上的例示。其它实现方式可具有更多或更少数目的功能、不同的功能件组合和或符合本文所提供的具体实施方式的功能性差异。[0096]如本文所用,术语“系统”一般是指但不限于任何独立的逻辑部件和或物理实体,这些逻辑部件和或物理实体可能包括或可能不包括替代的逻辑和或物理处理实体。系统的常见示例包括,例如,智能手机、计算机、笔记本、平板电脑、“智能”电视和其它媒体分发与显示设备、车载娱乐或远程信息处理系统和或其它消费电子设备。[0097]如本文所用,术语“子系统”一般是指但不限于任何处理实体,处理实体在系统实体指导下运行以执行规定的任务组。子系统的常见示例包括例如):蜂窝调制调解器、无线局域网WLAN调制调解器、个人局域网(PAN调制调解器、图形处理器、媒体处理器、全球定位系统GPS和或任何其它通用或专用处理实体。[0098]如本文所用,术语“功能件”一般是指但不限于与子系统存储器映射连接相关联的处理资源和或存储器资源。示例性PCIe功能件可包括例如):子系统专用寄存器、存储器映射输入输出MMIO、配置空间、内部总线结构和或其它专门寄存器或存储器。在一些情况下,配置空间可以是通用化标准化空间、专有空间或定制空间(例如,厂商专用空间、应用专用空间、设备专用空间或根据其它具体方案配置的空间)或它们的组合。[0099]概述-[0100]本公开的多个方面涉及在存在于电子设备内的独立域内隔离子系统资源诸如,时钟、电源和复位)。例如,在一个示例性实施方案中,系统的每个子系统均具有专用时钟域。具体地,外围芯片组硬件可以由多个子系统组成,每个子系统在独立的时钟域中运行。[0101]此外,每个子系统可基于独立的电源域通电。每个电源域可被单独上电断电或进入各种节能模式,并且可具有用于电源管理的不同状态机。不论其它电源域的状态机如何,独立的电源域可以通电。[0102]在另一方面,每个子系统可连接到公共存储器映射总线功能件。在一个示例性实施方案中,公共存储器映射总线功能件和子系统在独立域内运行;因此,功能件和对应的子系统可进入任何电源状态,而不论存储器映射总线的整体电源状态、其它子系统电源状态和或主机系统电源状态如何。[0103]在本文所述的一些变型中,子系统或存储器映射总线可根据操作注意事项来管理子系统资源;例如,如果主机应用要求低延时响应,则对应的子系统将防止存储器映射总线进入低功率模式。在另一个此类示例中,电池消耗可限制可同时通电的子系统的数目;因此,可以使用优先级排序方案来解决冲突以及或者分配资源。[0104]本公开的示例性实现方式包括管理系统所有功率消耗的主机,因此主机处理器可控制各个子系统,诸如使子系统保持唤醒或者迫使子系统进入睡眠。然而,本文所公开的一些变型也向外围设备提供此类能力或者,在另选方案中,外围设备可专门管理例如系统的所有功率消耗)。例如,在一些情况下,外围设备也可被配置为对主机或其部分进行不同程度的控制,诸如,防止主机睡眠。[0105]在本文所述的一个示例性实施方案中,每个子系统的睡眠顺序与其它子系统隔离开来;然而,其它实施方案提供半协作式或全协作式子系统电源管理。[0106]基于PCIe的系统-[0107]消费者的偏好在历史上一直制约着移动设备的过大形状因数。传统设计依赖于端口映射的针脚小很多的接口(诸如通用串行总线USB。这些技术很紧凑,但是使用时也可遭受传输速率较低、数据包处理开销和或功率消耗过大的问题。[0108]简而言之,所谓的“端口映射访问”主机处理器使用自带的指令集来访问其自身的存储器和寄存器,并使用第二指令集来通过“端口”与外部子系统通信。经处理的数据被格式化例如,封包化、序列化),用于以中间通信格式传输。中间通信格式将子系统存储器与主机存储器隔离开来,即每个外围子系统具有单独的地址空间,该地址空间与主机的地址空间隔离开来。例如,数据包协议诸如,USB添加事务开销(例如,USB管道、端点标识符等。[0109]相比之下,所谓的“存储器映射访问”使用相同的地址总线来寻址主机与外围子系统;换句话说,外围子系统的存储器和寄存器直接由主机访问,反之亦然。例如,当某地址由主机访问时,可使用相同的地址格式来访问主机的存储器或外围设备的存储器和或寄存器。每个外围子系统监测地址总线,并且对任何主机访问分配给该子系统的地址作出响应。[0110]PCIe是存储器映射总线技术的一种实现方式;遗憾的是,PCIe需要较大的总线接口(具有将近四十40个针脚),并且在印刷电路板PCB“基板面”上具有不相称的大“占用空间”,尤其是与其它总线技术相比的话。因此,在历史上,PCIe的尺寸曾使其不适合用于移动应用后者从特征上说形状因数相对较小)。[0111]然而,无线技术的最新进展已经增加了无线应用中“数据管道”的无线带宽。在一些情况下,无线网络速度能超过总线技术更慢例如,USB的主机设备。类似地,消费者偏好已经适应了更大的移动设备(在很大程度上因为更大屏幕尺寸的流行)。鉴于这些原因,在移动应用中,对PCIe的兴趣再次燃起。早期设计诸如,本发明受让人所作出的早期设计要求应用处理器与外围芯片组之间基于存储器映射总线接口的通信速度更快。[0112]现参见图1,示出并详述了典型的现有技术系统100。所示系统描绘了主机102,该主机:通过PCIe链路106A与蜂窝子系统104A通信;并通过PCIe链路106B与WLAN子系统104B通信。另外,主机通过通用异步接收器收发器UART链路108控制PAN子系统104C例如,BIuetOOtli'子系统)JCIe链路中的每条PCIe链路由相应的PCIe根组件RC110A,IlOB以及对应的对应端点EP112A,112B管理。[0113]正常运行期间,设备的用户可以拨打电话,访问因特网,或者执行用户发起的对例如蜂窝网络的数据连接的请求。作为响应,蜂窝子系统104A进入已连接模式并发送接收用户语音与数据;否则,蜂窝子系统104A可能大部分时间都处于掉电的空闲模式以节省电能。另外,蜂窝子系统104A可时常重新连接到蜂窝网络,用于进行移动性管理,以检查来电,以及或者执行其它自治网络管理任务。这些自治(非用户发起的)动作一般发生在后台,用户察觉不到。[0114]类似地,WLAN子系统104B持续扫描其附近的网络以识别出(例如尽可能最佳的数据连接,以及或者收发用户数据;当不使用时,WLAN子系统104B可过渡至低功率状态。[0115]PCIe简化存储器映射架构,用于提高性能,以及或者用以优化多个处理器之间的操作;然而空间考虑仍然是重中之重。因此,当多个子系统合并成数目更小的芯片组例如,单个芯片组如果可能的话)且通过单个存储器映射总线接口通信时可存在优势,同时保留了软件栈在应用处理器上运行的独立性。遗憾的是,现有PCIe规范并未规定端点设计要求。因此,不同的制造商采用许多不同的PCIe子系统实现方式,其中许多实现方式并不一致和或不合需要。例如,单个端点可能使其所有子系统进入睡眠,以及或者一起唤醒所有子系统。需要改进型解决方案,所述方案在支持多个独立子系统的系统内(例如为“唤醒”和或“睡眠”功能实现一致的框架。[0116]为此,本公开涉及尤其是将电源管理和时钟功能与PCIe接口隔离开来。使用相同的PCIe接口,本文所述的各个解决方案可支持多个子系统每个子系统的电源与时钟独立),从而使设计占用空间最小。换句话说,所述解决方案可通过如下方式在更大胆的形状因数设计中实现PCIe类操作及其伴随的益处:处理速度与效率提高):根据一致的框架,将存储器映射总线功能与电源和时钟管理功能分开。在一些所公开的配置中,每个PCIe端点可支持多个专用地址空间、通电序列、计时实施方式、启动序列、睡眠序列、错误捕获机制和或复位处理程序。[0117]更一般地,提供了用于独立操作存储器映射架构背景内的电源、时钟和或其它资源域的方法和装置。[0118]示例性装置-[0119]如上所述,为了解决现有技术中PCIe操作的不足,本公开的示例性实施方案有利地详细说明了一种一致性框架,其用PCIe技术来支持子系统的不同电源与时钟域。[0120]现参见图2,示出并详述了一种示例性系统200。所示系统200描绘了主机202,该主机通过PCIe链路206与外围设备204通信。PCIe链路206将主机202例如,主机处理器装置)的根组件RC210连接到外围设备204例如,外围处理器装置)的端点EP212。尽管图2示出了单个RC210,但是在给出本公开内容的情况下,普通技术人员将易于理解,在一些实现方式中可采用多个RC13EP212被进一步细分为耦接到对应子系统的许多功能件。如所示,蜂窝子系统214A通过第一功能件208A进行耦接;WLAN子系统214B通过第二功能件208B进行耦接;PAN子系统214C通过第三功能件208C进行耦接。尽管图2示出了具体拓扑,但是在给出本公开内容的情况下,本领域普通技术人员将理解,系统200内可存在更多或甚至更少的子系统。[0121]应当注意,尽管本公开结合主机和外围设备进行说明,但是鉴于透过下文将变得显而易见的原因,关于主机或外围设备的标示用于简化和或阐明以下说明,并非暗指现有主机或外围设备功能,或者此类角色不能颠倒例如,传统的“主机”在至少一些能力方面可作为外围设备,反之亦然)。此外,本文所述原则可延伸至支持除本文明确所述芯片组以外的附加处理芯片组例如,附加主机和或附加外围设备)。[0122]图2的系统200的主机202在所示实施方案中包括中央处理单元CPU216以及存储器管理单元MMU218,并且连接到外部存储器诸如,动态随机访问存储器DRAM220和或闪存或磁盘存储系统。)所示子系统可包括但不限于:蜂窝调制调解器214A和对应的CPU222A;WLAN调制调解器214B和对应的CPU222B;和PAN调制调解器214C和对应的CPU222C。此外,子系统均可访问一个或多个外部存储器224和或内部紧耦接存储器TCM226。[0123]针对主机处理器216、PCIe链路206包括RC210和EP212和或子系统(214A,214B,214C中的每个子系统,示例性系统200具有隔离的电源与时钟域。如本上下文所用,术语“±或”是指子系统内独立地自给自足并且其自身运行不要求其它子系统的逻辑部件。域的常见示例包括但不限于:例如,电源域、时钟域、复位域、安全域、处理域。尽管每个域是自给自足的,但在给出本公开内容的情况下,相关领域普通技术人员将易于理解,正常运行期间可同时使用多个域,以及或者多个域可以彼此交互;实际上,一些使用场景可能要求同时使能多个域。[0124]正常运行期间,前述域中的每个域可独立于其它域中一个或多个域而运行。例如,移动性管理更新期间,蜂窝子系统214A可以在(例如)主机202、PCIe链路206、RC210、EP212或其它子系统214B,214C未上电的情况下连接到蜂窝网络。类似地,WLAN子系统214B可在不唤醒任何其它域的情况下扫描附近的信标。[0125]简而言之,PCIe链路电源管理基于链路训练和状况状态机(LTSSM。一个此类LTSSM300在图3中示出;如所示,状态机300包括,尤其是,状态LO302、L0s304、L1306和L2308〇[0126]LO302是其中可收发数据和控制数据包的物理总线接口的运行状态。[0127]LOs304是第一省电状态,该状态使物理总线接口可以在不经过恢复状态的情况下快速进入节能状态以及从节能状态恢复过来。[0128]Ll306是第二省电状态,以附加的恢复时延为代价(由于恢复状态),该状态可实现比LOs304附加的省电。在一个示例性实施方案中,Ll306还可细分成例如子状态LI.1和Ll.2。在其一种实现方式中,LI.1可维持端口电路的共模电压,同时对收发电路和相关联的锁相回路PLL断电。除了收发电路和PLL,Ll.2还对共模电压断电。[0129]最后,L2308是第三省电状态,该状态通过关掉大多数功能而最大程度地节能。[0130]PCIe不为所连接的子系统授权特定的电源管理状态机;然而图4是一种此类实现方式的图示。如所示,图4的状态机示出共同进行电源管理的主机处理器与外围处理器内的一对独立的状态机。以下讨论就该对状态机而给出;然而,据理解,具有单个主机和多个子系统的系统可具有主机状态机的一个实例以及针对每个子系统的子系统状态机的一个实例。每个子系统的状态机在与对应的主机状态机隔离的情况下交互。以下讨论描述了单个主机状态机与单个子系统状态机之间的交互,但是应当理解,以下原则将适用于其中存在多个独立子系统状态机的实现方式中,见例如)图2或多个主机状态机),其中为了简明起见,以下讨论仅仅说明了广义上的原则。[0131]此外,在给出本公开的情况下,相关领域普通技术人员可以运用本文所述的原则来适应例如子系统到子系统上电时序、或子系统到主机上电时序。[0132]正常运行期间,外围处理器(例如,指定的对应子系统214A,214B,214C的功能件208A,208B,208C可通过存储器映射地址(例如,外围设备睡眠通知寄存器或其它消息机制例如,GPI0、带外信令、门铃等)以激活状态402发送睡眠模式请求。还参见图4A中的操作422。例如,外围处理器可包括多个子系统,并且可发送针对多个子系统中一个子系统的睡眠模式请求。而后,外围处理器例如,指定的相应子系统214A,214B,214C的功能件208A,208B,208C进入睡眠_等待状态404例如,针对多个子系统中的一个子系统)。还参见图4A中的操作424。当处于睡眠_等待状态404时,外围处理器(例如,指定的相应子系统214A,214B,214C的功能件208A,208B,208C休止,并且不发起或完成任何数据传输或消息。外围处理器例如,指定的相应子系统214A,214B,214C的功能件208A,208B,208C监测针对主机动作的存储器映射地址例如,外围设备睡眠控制寄存器)。还参见图4A中的操作426。在一些实施方案中,唤醒流程可通过使用带外GPIO其触发唤醒发起;唤醒流程可通过专用带内匪IO门铃来触发。[0133]当主机检测到睡眠模式请求时例如,当处于激活模式412时),主机处理器可以将外围设备睡眠控制寄存器更新为针对例如多个子系统中一个子系统的“睡眠模式”。还参见图4A中的操作428和430。主机处理器也可进入睡眠状态416。外围处理器例如,指定的相应子系统214A,214B,214C的功能件208A,208B,208C检测到针对例如)多个子系统中一个子系统的外围设备睡眠控制寄存器的更新,并进入睡眠状态406。还参见图4A中的操作432和434。[0134]当一个或多个子系统处于睡眠状态406的同时,外围处理器检查主机处理器是否具有针对一个或多个子系统的任何未决的传输或发送中的消息。还参见图4B中的操作442。如果是,则外围处理器发起“唤醒”流程,以过渡至激活状态402。类似地,如果外围处理器需要访问通信链路,则外围处理器将醒来。[0135]为了醒来,外围处理器通过例如)外围设备睡眠通知寄存器发送激活模式请求,并进入激活_等待状态408。还参见图4B中的操作444和446。之后,外围处理器可立即访问通信链路,用于数据传输和消息发送,然而为了防止出现状态机竞争的情况外围处理器不能进入睡眠或者发送睡眠模式请求。还参见图4B中的操作448。[0136]响应于激活模式请求,主机将例如)外围睡眠控制寄存器更新为“激活模式”,并进入激活状态412。还参见图4B中的操作450。在外围处理器发现主机对外围睡眠控制寄存器更新之后,其进入激活状态402。还参见图4B中的操作452。[0137]主机发起的睡眠流程是类似的(S卩,主机的电源管理状态机可视为与外围子系统电源管理状态机对称)。当主机准备好进入睡眠时,主机通过主机进入睡眠消息来通知外围处理器并过渡至睡眠_等待状态414。发现主机进入睡眠消息之后,外围处理器挂起其本身的睡眠状态机,并处理所有未决的传输描述符TD。如下文更详细所述,在主机可以过渡至睡眠状态416之前,其可能需要通知多个子系统。[0138]响应于睡眠消息完成,主机可过渡至睡眠模式从睡眠_等待状态414;之后,外围处理器也可独立地进入睡眠模式。如果外围处理器需要重新建立与主机的通信,外围处理器可通过例如触发唤醒序列的带外通用输入输出GPIO来请求主机醒来。主机过渡至激活_等待状态418,以便重新发起操作等。一旦主机成功退出激活_等待状态418并且已经醒来处于激活状态412,主机即通过主机退出睡眠消息来更新外围设备。[0139]重新参见外围处理器,一旦完成对外围处理器传输描述符环TDR的处理,外围处理器响应于睡眠消息发送完成确认消息。之后,外围处理器将不再接受任何TDR,直到外围处理器从主机处理器接收到主机退出睡眠消息通过消息环MR接收)。在恢复数据传输之前,外围设备将确认完成主机退出睡眠消息。[0140]以上描述仅为一个示例性状态机的说明。其它变型描述于2015年10月8日提交的标题为“MethodsandApparatusforManagingPowerwithanInter-ProcessorCommunicationLinkBetweenIndependentlyOperableProcessors”的共同拥有且共同未决的美国专利申请序列号14879,027中,在前文已通过引用方式全文并入本文。[0141]如前所指出,所示实施方案中的每个子系统本身具有其对应的子系统电源管理状态机的独立实例。重新参见图2,蜂窝子系统214A具有电源管理状态机的第一实例;WLAN子系统214B具有电源管理状态机的第二实例;并且PAN子系统214C具有电源管理状态机的第三实例。应当理解,上述子系统电源管理状态机仅为例示性的;技术人员可替换为其它状态机或结合上述状态机一起使用)以适应各种其它设计考虑因素。例如,不同应用和不同部件可具有不同的电源管理状态机,这取决于它们的功能、相对功率消耗或其它因素。[0142]在一个示例性实施方案中,这些域可以与其它域同时运行,而没有限制(例如,一个或多个域可同时通电)。在其它实施方案中,域的独立运行可能经受功率消耗过度、散热、和或干扰限制。例如,某些设计大胆的产品可能无法同时给所有域通电,或者当所有域通电时可能无法满足整体的电池寿命限制条件。仍然有其它的产品可能尺寸超大,使得散热和或不合需要的电磁本底噪声的增加(由于时钟的差异可能成为问题。因此,本文所设想的智能电源管理变型可优选地使能或去使能域,以便满足此类设备限制条件例如,根据域的优先级加权、一个或多个用户偏好、历史使用状况、和或其它选择信息)。[0143]在一个示例性实施方案中,所公开的PCIe接口也可独立操作,而没有限制;例如,PCIe接口具有其自身的不同于主机处理器216以及外围子系统214A,214B,214C的电源与时钟域。与其它子系统一样,本实施方案中的PCIe子系统可独立于其它子系统而进入和或退出省电模式。此类系统可使能“看家”类操作,例如,状态更新、计时器设定重设和或其它自主访问,而不需要主机、外围设备或子系统操作。[0144]运行期间,示例性实施方案的电源管理状态机的每个状态机均独立运行。例如,蜂窝子系统214A可以与蜂窝网络移动性管理实体MME通信,而其它子系统仍处于睡眠状态。当蜂窝子系统需要更新主机处理器时,蜂窝子系统对唤醒PCIe链路的主机处理器216发起中断。作为响应,PCIeLTSSM过渡至其LO状态302以将通信桥接至主机处理器216如果还没激活,其也必须作为响应而过渡至其激活状态)。一旦事务结束,蜂窝子系统可返回至其相应的睡眠状态。[0145]另外,由于PCIe子系统存储每个子系统的功能件信息,主机访问PCIe寄存器应当由EP212或功能件208A,208B,208C来完成,而不要求子系统214A,214B,214C上电和或发起所谓的“背板访问。”所谓的背板访问一般是指需要内部访问机制的访问,诸如外围设备内部互连、总线和或共享和或非共享资源。更直接地,主机可访问每个子系统的PCIe控制空间和MMIO寄存器,而不要求子系统通电进入运行状态来处理存储器访问。例如,主机可对各个功能件进行读取写入,而不用唤醒对应的子系统,例如,RC210可查询EP212的蜂窝功能件208A,而不用唤醒蜂窝子系统214A。类似地,PCIe链路可过渡至较低功率模式例如,诸如L0s、Ll.1和或Ll.2,而不用对子系统下电。[0146]可另外地要求示例性多功能EP212智能管理进出所连接的子系统214A,214B和214C的访问。例如,在一个不例性实施方案中,每个子系统在其自身的运行域例如,电源和时钟域)内可单独寻址。换句话说,通过PCIe基址寄存器BAR而外露的每个存储器映射输入输出MMIO区域直接对应于并且唯一用于单个子系统。每个BAR与子系统对应的BAR涉及或“指向”唯一一组后备存储器地址。另外,每个子系统可“沙箱化”,使得其仅可访问指定空间或区域;例如,仅访问其自身MMIO区域内的匪IO和配置空间。在一些变型中,这可通过硬件保护例如,逻辑地址解码器、多路复用器和或软件保护例如,地址捕获、加窗而被强制执行。[0147]在一些实施方案中,PCIe域针对RC210、PCIe物理链路206和EP212被进一步细分。此类细分使得PCIe链路206能够在不同时使RC210和或EP212掉电的情况下掉电。例如,一些变型可以使EP212能够针对与子系统214A,214B,214C对应的每个功能件208A,208B,208C继续更新控制寄存器空间,同时链路206处于深度睡眠。换句话说,位于PCIeEP212中的PCIe配置寄存器和MMIO寄存器不要求任何背板访问或子系统计时或上电。类似地,主机处理器216可对RC210控制寄存器进行读取写入,而不用使能链路206或EP212。此类功能在以下情况下尤为有用:在一些情况下,为了大大节省电能,整个外围设备204进入未通电模式例如,VDD和全局时钟掉电),但是主机处理器需要访问RC210控制寄存器。激活通信链路206之后,主机和外围设备将能够监测、以及响应、更新对应的寄存器。[0148]在某些情况下,主机经由RC可通过对EP内对应的MMIO区域进行写入来唤醒子系统。例如,如果主机访问特定MMIO区域和或与睡眠子系统相对应的相关联的配置寄存器,则EP将“唤醒”子系统并触发针对子系统的中断。类似地,不论PCIe链路状态如何,每个子系统可读取和写入其自身在对应MMIO与配置区域中的沙箱化寄存器的内容,例如,不要求参考时钟和或干扰PCIe链路电源状态(例如,不要求退出LO302、L0s304、L1306和L2308。[0149]示例性操作-[0150]除了物理上不同于现有技术的PCIe硬件总线实现方式,本公开的示例性实施方案详细说明了使PCIe总线协议满足独立的子系统域操作的运行框架。[0151]根组件和端点操作的示例性改型-[0152]本文所述的一些公开的实施方案已经将RC、PCIe链路、EP和任何附接子系统之间的其电源与时钟域解耦。除了针对各个操作将操作分隔到不同的域,在此情况下,实体中的每个实体可另外访问多个共享数据结构,而不用打扰其它实体的当前电源状态。例如,RC可访问部分功能件寄存器和EP内的存储器,而不一定需要唤醒子系统中的任一个;类似地,每个子系统可访问RC寄存器,而不用唤醒主机处理器。另外,每个子系统也可访问其对应的端点、功能件和或MMIO寄存器,而不用唤醒PCIe链路。尽管据理解,本文所述的多种改进方案允许独立访问,但是普通技术人员将易于理解,可保留现有技术;例如,也可以实现唤醒相关联的子系统的访问,例如,以支持既有功能和或现有使用案例。[0153]图5示出根据本公开用于访问子系统内的寄存器的一个示例性方法。[0154]在方法500的步骤502处,主机处理器执行访问PCIe功能件(例如,图2中的功能件208A,208B和208C内的存储器位置的指令。如前所指出,存储器映射访问本身转化成存储器位置(即,不要求中间端口映射通信格式所必需的开销)。访问的常见示例包括但不限于:读取、突发读取、写入、突发写入、后写入和或设定清除。存储器位置可包括任何带内可寻址存储器位置,这些位置可包括但不限于:寄存器、存储器和或其它数据结构。[0155]在方法500的步骤504处,主机处理器访问映射到RC,该RC在一些实现方式中触发PCIe链路以唤醒LO状态302。在一些实现方式中,PCIe链路可能已经存在于LO状态302中。在目前的现有技术PCIe操作中,根组件RC和端点(EP通过三3种信号来整合链路操作:PERST#PCIe复位)、WAKE#在下文中更详细描述的唤醒功能)和CLKREQ#时钟请求)。PERST#由RC驱动,并且表示(当去断言时)电源是稳定的,并且可以使能链路;CLKREQ#有时由EP驱动,并且表示(当断言时对链路时钟的请求和或请求退出Ll子状态。CLKREQ#有时也由RC驱动,并且表示(当断言时请求退出Ll状态或子状态例如,LI.1、L1.2。一旦主机表示链路可用(通过去断言PERST#,EP可通过断言CLKREQ#唤醒主机和RC;之后,可开始事务。[0156]在方法500的步骤506处,如果还没有激活,则作为响应,PCIeEP退出其低功率状态。在内部,存储器映射访问通过存储器控制器、总线仲裁器或其它访问控制机制路由到EP内合适的存储器位置。如前所述,子系统访问对应于EP内已经分配有特定且专有的存储器区域的功能件。例如,存储器访问可对应于例如功能件内的寄存器的访问。[0157]在方法500的步骤508处,访问PCIeEP存储器空间在功能件处完成包括确认,如果需要的话)。一旦完成,PCIe链路和或RC即可继续下一事务(S卩,当前事务不拖延PCIe链路)。在一些变型中,作为图5所述的寄存器访问中的单独流程,EP可另外地唤醒子系统。例如,PCIeEP可唤醒对应的子系统以(例如传播寄存器访问,或者根据寄存器访问执行另一任务。[0158]在一种此类变型中,CLKREQ#的信令协议将PCIe链路从其低功率状态唤醒,并且不将其它子系统域从低功率状态唤醒。如下文更加详细所述,最初的总线事务为启动EP提供了启动映像;一旦EP已经成功启动,主机和RC可去断言PERST#以表示链路稳定,从而使能EP开始链路训练。由于子系统在单独的域上运行,PERST#可反复重置,而不影响外围设备内任何子系统的状态。一旦链路已经完成初始化,即传输子系统的启动映像。[0159]另外,由于PERST#与子系统和或主机操作解耦,PERST#可以将PCIe块从任何省电状态唤醒,而不用考虑主机和其它子系统。更直接地,PERST#逻辑部件可大大简化,因为其不影响PCIe链路以外的功能。在一些示例性变型中,PERST#和或CLKREQ#逻辑部件可全部在硬件和或简化逻辑部件内实现,以便减少软件事务开销并增强稳健性。[0160]在符合本文所述原则并且适用于各种各样不同的多功能总线操作的基础上,普通技术人员可以对PCIe信令作出其它修改和或添加。例如,更多高级实现方式可添加或移除信令逻辑部件例如,根据通用输入输出(GPIO。还有其它实现方式可为每个所支持的EP子系统专门分配单独的PERST#和或CLKREQ#线路(例如,创建PERST#和CLKREQ#的捆绑数组。[0161]示例性子系统电源控制-[0162]一旦子系统已经正常初始化,子系统为其相应的域实现个体化电源状态。为了在外围设备内支持完全独立的电源和时钟域操作,示例性子系统和EP经过改装,以包括配置寄存器从而控制域操作,包括例如,子系统上电、断电或任何数目的其它中级低功率模式和或它们的梯度)。[0163]如前所指出,睡眠模式一般的特征在于逐步使越来越多的子系统部件掉电。例如,轻度睡眠可能仅仅使刷新率高的存储器掉电;中度睡眠可能将短期易失性存储器存储到非易失存储装置中,并使易失性存储器掉电。深度睡眠可能另外地使锁相环PLL、数字锁环DLL和或其它计时硬件掉电。唤醒通过以相反的序列使掉电的部件上电来实现例如,时钟先于非易失性存储器,非易失性存储器先于易失性存储器)。因此,低功率模式逐步变深,可导致唤醒延迟越久。在给出本公开内容的情况下,相关领域的普通技术人员将易于理解其它电源排序技术。[0164]在一种此类实现方式中,当外围设备初次上电时,每个子系统的配置寄存器初始化至默认状态,而寄存器的内容在复位例如,跨外围设备复位和或功能件级复位期间具有“粘性”(或非易失性)。在另选变型中,配置寄存器在上电时可以不进行初始化,而在复位序列期间可进行初始化。仍有其它实现方式可包含混合复位序列例如,外围设备复位初始化配置寄存器,但是功能件级复位不会)。[0165]尽管上述公开内容主要涉及用于电源与时钟域操作的配置寄存器,但是在给出本公开内容的情况下,相关领域普通技术人员将易于理解,配置寄存器可用于传送或配置中断、捕获的错误、运行模式、版本控制信息、文件结构信息和或几乎任何其它运行参数。[0166]PCIe链路电源控制-[0167]在一些情况下,示例性主机和RC与外围设备隔开诸如,在图2中示出)。内部主机域电源控制可基本上类似于上述外围域操作;实际上,主机甚至可具有多个子系统。然而,由于主机控制PCIe链路何时使能和或禁用,因此需要另外的链路排序以确保当外围设备不可用时,主机不尝试发送信号给外围设备,反之亦然例如,当主机不可用时,外围设备不尝试发送信号给主机)。[0168]在一个示例性实施方案中,主机过渡至非响应性低功率模式(例如,主机处理器诸如通过处于睡眠状态将不可用,无法响应指令之前,主机将针对每个子系统执行握手协议。然后根据其内部考虑因素例如,将当前执行内容和存储器存储到非易失或粘性存储器中),每个子系统可合理地准备过渡至其对应的低功率状态(诸如,上述的设备电源状态)。之后,子系统可进入低功率模式。一旦主机已经完成针对所有子系统的握手协议,则主机可断言表示链路不再可用的PERST#。如前所指出,本公开的示例性子系统不需要在随后的PERST#过渡期间唤醒。另选的实现方式使子系统可以“选择性加入”,用于接收PCIe中断。例如,在进入低功率状态之前,子系统可等待直到PERST#被断言;此类功能对于调试或监测PCIe事务可能有用。[0169]一旦主机已经成功过渡至低功率模式,通过断言至主机的WAKE#信号,任一子系统可通过PCIe接口唤醒主机。在一种此类实现方式中,WAKE#信号在所有子系统之间共享,并且主机驱动器可通过电源管理事件PME来确定始发子系统。其它实现方式可提供表示触发了WAKE#事件的子系统的配置寄存器或MMIO寄存器。在另一实现方式中,每个子系统具有专用WAKE#GPI0通用输入输出GPIO,并且主机驱动器可通过断言的WAKE#GPI0确定始发子系统。[0170]响应于接收到WAKE#信令,主机退出其睡眠状态,并且去断言PERST#以表示其已经被成功唤醒。主机使能PCIe链路通过前述LTSSM并且枚举合适的PCIe功能件。一旦主机已经成功枚举了该链路,一个或多个激活子系统可以与主机交换数据。成功的链路重新建立结束于主机与子系统之间的握手。[0171]现参考图6,公开了一种用于使主机处理器过渡至睡眠模式的示例性方法。[0172]在方法600的步骤602处,主机处理器通知每个子系统主机正在进入深度睡眠模式。然后每个子系统可独立地判断其是否也应该睡眠。例如,子系统可过渡至睡眠模式以节省电能,因为主机在其睡眠时将不访问任何子系统。然而在其它情况下,即使在主机睡眠的时候,子系统也可能需要与其它外部网络实体通信;在此情况下,子系统可仍处于运行模式。在一些变型中,只有主机具有单向电源以防止子系统进入睡眠。在另选变型中,子系统也可具有电源以防止主机进入睡眠(例如,在电源管理是双向的情况下,或者在某些限制条件下是双向的情况下)。一般地,据理解,每个子系统的睡眠序列与其它子系统隔离开来;然而,在给出本公开内容的情况下,相关领域普通技术人员可同样成功地替换相互关联的子系统电源管理。[0173]在方法600的步骤604处,主机处理器可以使PCIe链路进入睡眠。此时,PCIe链路过渡至L2状态308,并且RC断言PERST#以表示该链路未激活。通常EP也将睡眠;然而易于理解的是,EP可保持苏醒,或者由主机睡眠时仍然运行的子系统来单独唤醒。更直接地,尽管PCIe子系统维持在复位状态,各个子系统中每个子系统可保持苏醒或自主苏醒以(例如执行各种网络管理任务。例如,蜂窝子系统可苏醒以查看寻呼消息和或更新网络移动性管理实体。类似地,WLAN子系统可周期性地检查可用的热点访问和或附近的开放网络。[0174]在步骤606处,主机进入其睡眠模式。在一些情况下,主机可将易失性存储器存储到非易失性存储器中,减少至内核和或其它相关部件例如,时钟、电源、存储器、和或附接部件)的功率。在一些情况下,主机可继续例如监测唤醒条件何时发生,或者在低功率模式下执行优先级较低的任务例如,用较慢的时钟、更小的存储器或内核)。例如,处理器可能仅足以使内核通电以追踪唤醒计时器和或检查RC的等待条件。在其它情况下,主机完全休止,依赖于其它逻辑部件来触发唤醒;例如,PCIe链路RC可处于单独的域中,并且能够触发主机唤醒。[0175]随后,由于例如计时器过期、中断业务、外围子系统访问(通过WAKE#、用户操作和或任意数目的其它主机业务,主机可退出睡眠模式步骤608。根据PCIeLTSSM见上述图3的讨论),主机唤醒PCIe链路如果还未激活的话)。[0176]在步骤610处,主机枚举多功能外围设备的至少一个功能件。在一些情况下,主机可枚举所有功能件。在一些情况下,主机仅可枚举激活的功能件。在其它情况下,主机仅可枚举触发唤醒条件的一个或多个功能件。[0177]在一些情况下,主机任选地将与这些功能件对应的所枚举的子系统过渡至步骤612处的运行状态。[0178]示例性启动序列-[0179]现有PCIe实现方式具有简单的启动序列,其中主机最先启动其附接的外围设备。本公开的各个实施方案将启动外围EP,然后单独启动每个子系统。在一个示例性实施方案中,一旦主机已经成功启动外围EP,主机发现并按顺序启动子系统例如,首先启动蜂窝子系统,然后是WLAN子系统,并且最后是PAN子系统)。在一些情况下,某些子系统可从例如应用软件不需要它们的启动流程中裁剪掉。例如,如果用户已经禁用了PAN能力,则从启动序列中裁剪掉PAN子系统。[0180]在更复杂的实施方案中,各个域控制的粒度使主机可以智能地根据运行时间考虑因素使外围设备的子系统通电和或启动,以便例如减少功率消耗和或缩短整体启动时间。例如,目前不需要网络来访问用户应用程序的移动设备可仅仅启动主机处理器和蜂窝子系统,而使WLAN子系统掉电。这样,蜂窝子系统可以在后台以对用户干扰最小的方式执行其移动性管理序列(例如,注册,鉴权等),并且由于WLAN子系统直到需要使用它时才启动,缩短了整体启动时间。[0181]在启动序列的一个示例性实现方式中,当最初给外围设备通电时,仅给PCIeEP通电。其它子系统可以保持掉电直到明确地上电。在初始启动序列期间,EP可枚举PCIe子系统和PCIe功能件中的每一者。例如,在初始启动序列期间,EP可初始化每个子系统的PCIeBAR和对应的配置空间与MMIO区域。如前所述,在一些变型中,不论对应子系统的电源状态如何,主机可访问子系统的BAR、配置寄存器和匪IO。[0182]然后可选择性地针对多个子系统进行PCIe枚举。在对指定子系统的配置空间进行PCIe枚举期间,主机对配置寄存器进行写入,以使该子系统通电。子系统成功初始化之后,主机可设定总线主使能BME位以使能通过PCIe总线访问主机存储器的对应的功能件。一旦主机拥有对PCIe链路的控制权,主机可针对特定子系统发起启动流程,该流程可包括加载和或执行启动映像。每个子系统可单独启动,并且每个子系统的启动流程可独立于并且不阻碍或影响任何其它子系统的启动流程。[0183]附录A提供了表格,这些表格描述了子系统响应于主机发起的睡眠、通电和复位事件的示例性行为。如其中所述,指定事件期间外围设备的启动阶段导致指定的行为。[0184]在给出本公开内容的情况下,相关领域普通技术人员将易于理解其它多功能外围设备启动排序方案。[0185]示例性复位序列-[0186]在示例性实施方案中,每个域均可单独重置。多复位方案在一些变型中可重新初始化配置参数,而在其它变型中,复位不可以重新初始化配置参数。还有其它混合系统既可具有可重置配置参数,也可具有粘性配置参数。在其它情况下,复位可根据例如层级(即,复位层级越高,可复位其较低层级)、功能配件分组、可配置分组和或其它分组法进行耦接。[0187]在一个示例性实施方案中,与单个域对应的每个PCIe功能块位于端点而非子系统内)也可被单独地复位。在一种此类情况下,功能件级复位将复位耦接的子系统,而不仅仅是功能块。另选地,功能件级复位将不复位耦接的子系统。在其它实施方式中,当其对应的子系统复位时,功能块本身也自动复位。[0188]在一个实施方案中,功能块复位可迫使子系统进入其初始启动阶段。在一些变型中,子系统可以在预定时间量内复位。在一些情况下,复位是“硬性”复位即,不论当前执行状态和或电源状态如何,强制复位);在其它情况下,复位是“柔性”复位(即,根据特定序列进行复位,该特定序列可例如允许恢复当前的执行环境)。[0189]当触发功能件级复位时,功能块可自动重置子系统配置空间和MMIO的内容。在一些情况下,某些位或数据结构具有“粘性”,并且其内容在复位后可依然存在。此类粘性数据结构的常见示例可包括但不限于:用于控制到达子系统的电源的配置寄存器。其它方案可以使用非粘性数据结构,或者粘性与非粘性位的混合。[0190]如前所指出,运行期间,主机可发起每项功能件和或子系统的复位,而不影响任何其它功能件和或子系统的运行状态。另外,本公开的各种实施方案另外地支持外围设备整体复位,其复位整个外围芯片组。例如,一旦主机触发了外围设备复位,对外围设备复位时上电的任何子系统进行复位,并对外围设备复位时断电的任何子系统保持断电。外围设备复位之后,主机可枚举PCIe功能件,并如上所述启动子系统见“示例性启动序列”)。[0191]图7示出一种用于功能件级复位FLR操作的示例性方法。在一个示例性实施方案中,每个FLR均为带内复位例如,位于专用寄存器、MMIO地址或其它可寻址存储器位置内)。更一般地,FLR功能可以由主机发起并且可以由位于EP内的特定功能件管理。[0192]在方法700的步骤702处,主机对外围设备的子系统发起功能件级复位。[0193]作为响应,复位外围设备的子系统(步骤704。在示例性实施方案中,不论功能件和或子系统的电源状态如何,均可处理功能件级复位。在给出本公开内容的情况下,相关领域普通技术人员将易于理解,其它实施方案可考虑复位期间当前的电源状态例如,以便合理地存储易失性存储器内容和或退出流程)。[0194]在一些情况下,除了或替代图7的复位序列,子系统可掉电。例如,主机处理器可发起功能件级断电指令,并且作为响应,对应的子系统可掉电。[0195]在一种此类实现方式中,外围设备复位推动了所有功能件级复位,以实现外围设备的复位。因此,功能件级粘性位即使在外围设备复位期间也保留了下来。在其它实现方式中,外围设备复位可以是不同于功能件级复位的专用复位机制。专用外围设备复位机制可用于例如应当清除用于功能件级复位的粘性位的情况。例如,图8示出一种用于外围设备级复位操作的示例性方法。在一个示例性实施方案中,外围设备复位为硬件复位;例如外围设备级复位可以用通用输入输出GPIO或其它专用硬件信令来实现。[0196]简而言之,现有外围设备复位方案并不保留子系统状态后复位。例如,一个此类现有技术复位方案可关闭PCIe链路,复位外围设备,不理睬PCIe链路,以及重新启动每个连接的子系统。相比之下,本公开的各个实施方案保留子系统状态,例如,复位前睡眠或关闭的子系统保持睡眠或关闭,以及复位前激活的子系统保持激活。[0197]在方法800的步骤802处,可使外围PCIe链路掉电,并且或者可断言PERST#。[0198]如图8所示,在方法800的步骤804处,主机可以对外围设备发起外围设备级复位。复位整个外围设备,包括外围EP、功能件和对应的子系统。[0199]复位后,每个子系统可执行其只读存储器(ROM的内容并相应地初始化(步骤806。在一些实施方案中,ROM内容可限于例如)空闲旋回循环。在没有ROM的环境中,子系统的处理器可从易失性存储器其可能不具有有效指令执行;在此情况下,处理器直到由主机触发时才开始运行。[0200]此后,主机可以给PCIe端口通电,并且PCIe链路可过渡至其LTSSM的运行链路状态例如,LO状态)。[0201]在步骤808处,主机枚举外围设备的所有功能件,并且可以使每个子系统过渡至运行状态。如前所述,主机保留子系统状态;换句话说,复位前睡眠或关闭的子系统保持睡眠或关闭,并且复位前激活的子系统保持激活。此后,可根据前述流程继续执行启动程序。[0202]在给出本公开内容的情况下,相关领域普通技术人员将易于理解其它的多功能外围设备复位方案。[0203]相关领域普通技术人员将易于理解,许多软件调试技术依赖于成功的错误捕获。在一些实施方案中,一旦检测出异常的软件错误,处理器终止进一步操作,并执行循环指令“旋回”);这样,主机可检索存储器内容,以用于调试。在另一实施方案中,一旦检测到异常的软件错误,可重新启动子系统。存储器的内容是可访问的,因为这些内容是跨多个复位条件而保留下来的。在其它实施方案中,可针对每个子系统使用单独的硬件看门狗计时器。简而言之,只要软件运行正常,硬件看门狗就由软件周期性地复位;如果看门狗计时器过期,则其推断软件已被例如错误软件访问或其它总线故障损坏,而强制复位。每个硬件看门狗只复位对应的子系统,并且不影响其它子系统。[0204]附录B提供了表格,所述表格描述了执行错误捕获和或优选的处理机制时子系统的示例性行为。[0205]一旦子系统复位即可使用的共同调试指令的其它示例包括:寄存器快照例如,可迫使子系统采集所有子系统寄存器的快照和内核转储例如,可迫使子系统变成中断处理程序,以便采集子系统存储器的快照)。[0206]应当理解,虽然本公开的某些实施方案是按照特定的方法步骤顺序进行描述的,但这些描述仅仅是本文所述的更广泛方法的示例,并且可根据特定应用的需求而修改。在某些情况下,某些步骤可呈现为不必要的或可选的。此外,可将某些步骤或功能添加至所公开的实施方案,或者对两个或更多个步骤的性能的顺序加以排列。所有此类变体均被认为涵盖在本公开和本文的权利要求书内。[0207]尽管上文的详细描述已显示、描述并指出应用到各种实施方案的新特征,但应当理解,在不背离本文所述原理的情况下,本领域中的技术人员可以对所说明的设备或流程的形式和细节进行各种省略、替换和更改。上述说明是当前所考虑到的最佳模式。该描述绝不是为了进行限制,而是应被视为是对本文描述的一般原理的例示。应结合权利要求确定本公开的范围。[0208]附录A[0209][0210]附录B[0211]
权利要求:1.一种为电子设备内的多个子系统提供个体化电源控制的方法,所述电子设备包括主机处理器装置,所述方法包括:建立到所述多个子系统的存储器映射接口,所述多个子系统中的每个子系统的特征在于对应的电源管理状态机;以及对于所述多个子系统中的一个子系统,使所述对应的电源管理状态机独立于所述多个子系统中的其它子系统,从睡眠状态转变至激活状态。2.根据权利要求1所述的方法,其中所述多个子系统中的所述一个子系统从所述睡眠状态转变至所述激活状态能够在所述多个子系统中的其它子系统没有从睡眠状态转变至激活状态的情况下发生。3.根据权利要求1所述的方法,还包括独立于所述多个子系统中的其它子系统,将所述多个子系统中的一个子系统转变到各种节能模式。4.根据权利要求3所述的方法,还包括通过所述主机处理器装置,对所述多个子系统进行独立电源控制。5.根据权利要求4所述的方法,其中对所述多个子系统进行独立电源控制还包括使所述多个子系统中的第一子系统保持在激活状态。6.根据权利要求5所述的方法,其中对所述多个子系统进行独立电源控制还包括使所述多个子系统中的第二子系统转变至睡眠状态,同时使所述多个子系统中的所述第一子系统保持在所述激活状态。7.根据权利要求1所述的方法,还包括独立于所述多个子系统中的其它子系统,为所述多个子系统中的所述一个子系统发起上电时序。8.—种计算机化装置,包括:主机处理装置,所述主机处理装置包括根组件;外围装置,所述外围装置包括端点装置,所述端点装置包括多个功能,所述多个功能中的每个功能与多个子系统中相应的子系统耦合;和通信链路,所述通信链路在所述根组件与所述端点装置之间。9.根据权利要求8所述的计算机化装置,其中所述多个子系统中的每个子系统包括与所述多个子系统中的其它子系统分离的电源管理。10.根据权利要求9所述的计算机化装置,其中所述主机处理装置包括与所述多个子系统分离的主机电源管理;并且所述通信链路包括与所述主机处理装置和所述多个子系统分离的链路电源管理。11.根据权利要求9所述的计算机化装置,其中所述多个子系统中的一个子系统包括无线局域网WLAN子系统,其中所述WLAN子系统能够扫描附近的信标,而不必唤醒所述多个子系统中的其它子系统。12.根据权利要求11所述的计算机化装置,其中所述WLAN子系统能够扫描所述附近的信标,而不必唤醒所述通信链路或所述主机处理装置。13.根据权利要求9所述的计算机化装置,其中所述多个子系统中的一个子系统包括蜂窝子系统,其中所述蜂窝子系统被配置为在移动管理更新期间与蜂窝网络连接,而不使所述子系统中的其它子系统、所述主机处理装置和所述通信链路中的一者或多者上电。14.一种用于电子设备中的外围处理装置,所述外围处理装置包括:端点装置,所述端点装置包括多个功能,所述多个功能中的每个功能与所述外围处理装置的多个子系统中相应的子系统耦合;其中所述多个子系统中的每个子系统包括独立于所述多个子系统中的其它子系统的电源管理状态机。15.根据权利要求14所述的外围处理装置,其中所述多个子系统中的第一子系统的第一独立电源管理状态机被进一步配置为:在处于激活状态时向主机处理装置发送睡眠模式请求;在发送所述睡眠模式请求之后进入睡眠等待状态;检测针对外围睡眠控制寄存器的更新,所述更新由所述主机处理装置发起;以及响应于所检测到的针对所述外围睡眠控制寄存器的更新,从所述睡眠等待状态进入睡眠状态。16.根据权利要求15所述的外围处理装置,其中所述多个子系统中的所述第一子系统的所述第一独立电源管理状态机被进一步配置为:检查所述主机处理装置是否具有任何未决的数据事务;如果存在未决的数据事务,则发起唤醒过程以使所述第一独立电源管理状态机从所述睡眠状态转变至所述激活状态;进入激活等待状态;以及当所述主机处理装置检测到针对所述外围睡眠控制寄存器的更新时,从所述激活等待状态进入所述激活状态。17.根据权利要求14所述的外围处理装置,其中所述多个子系统中的第一子系统的第一独立电源管理状态机被进一步配置为:从主机处理装置接收主机进入睡眠消息;响应于所接收的主机进入睡眠消息,挂起所述多个子系统中的所述第一子系统的所述第一独立电源管理状态机;以及在挂起所述第一独立电源管理状态机之后,处理所有未决的传输描述符。18.根据权利要求17所述的外围处理装置,其中所述多个子系统中的其它子系统被进一步配置为从所述主机处理装置接收所述主机进入睡眠消息。19.根据权利要求17所述的外围处理装置,其中所述第一独立电源管理状态机被进一步配置为在处理所有所述未决的传输描述符之后,从激活状态转变至睡眠状态。20.根据权利要求17所述的外围处理装置,其中所述多个子系统中的所述第一子系统的所述第一独立电源管理状态机被进一步配置为通过发出针对所述主机处理装置的唤醒请求,重新建立与所述主机处理装置的通信。21.—种计算机可读存储介质,其上存储有计算机指令,所述计算机指令当被处理器执行时实现根据权利要求1至7中任一项所述的方法。22.—种系统,包括:一个或多个处理器;和存储器,其上存储有计算机指令,所述计算机指令当被所述一个或多个处理器执行时实现根据权利要求1至7中任一项所述的方法。
百度查询: 苹果公司 为外围子系统提供个体化电源控制的方法和装置
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。