功率管理方法和装置 技术领域 本发明涉及功率管理方法和装置, 并且更具体地涉及在特定设备中有多个低功率 模式可用的功率管理方法和装置。
背景技术 设备, 尤其是诸如移动电话等的移动设备以及诸如计算机、 媒体播放器、 PDA 等等 其他设备, 支持一个或多个低功率模式是已知的。这些设备的操作系统通常会试图在没有 活动的时候使设备进入低功率模式。通常, OS 提供空闲回调钩子, 其在没有进程或线程要 调度时被调用。此钩子继而可以由基本端口或硬件抽象层用来使设备进入低功率模式。
设备通常支持一个或多个低功率模式。在这些模式中, CPU 停止处理, 直到出现形 式上通常为中断的唤醒事件, 才重新开始处理。 对于每个低功率模式, 在中断条件的断言与 CPU 恢复执行指令之间, 通常存在相当长的唤醒周期。在支持多个低功率模式时, 此延迟通 常与模式所提供的功率节省水平成比例。节省的功率越多, 唤醒周期越长。低功率模式通
常导致对时钟和电源进行选通, 即, 停止时钟和电源的运行。在支持多个低功率模式时, 被 选通的时钟或电源的量还会随着给定模式所提供的功率节省水平而增加。
图 1 示出了示例性设备 10, 其例如可以是移动电话、 智能电话、 PDA、 媒体播放器、 计算机或某些其他类似设备。仅作为示例, 设备 10 在此例子中包括与 RAM108 相关联的 CPU110。提供 RAM 控制器 118 以控制 RAM108, 该 RAM 控制器 118 是基本端口子系统, 即, 是 操作系统中直接控制设备硬件的部分。CPU、 RAM 控制器和 RAM 形成内核域, 其由作为该内 核电源的内核功率域 124 来供电。
示例性设备 10 中还提供有 LCD 屏幕 106、 键盘 104 以及用于在并行接口和串行接 口之间转译数据的通用异步接收机 / 发射机 (UART)。 与这些硬件元件相关联的是相应的基 本端口子系统, 其代表设备操作系统的硬件抽象层。具体而言, 向 LCD 屏幕 106 提供 LCD 控 制器 116, 以控制该 LCD 屏幕 106。类似地, 提供键盘控制器 114 以控制键盘 104, 以及提供 UART 控制器 112 以控制 UART102。LCD 控制器 116、 键盘控制器 114 和 UART 控制器 112 代 表基本端口子系统 ( 即, 操作系统中代表设备硬件的部分 ), 以允许操作系统与硬件对接。
LCD、 UART 和键盘以及其各自的控制器一起形成了设备的外设域的部分, 并且由来 自外设功率域电源 PER_PD 122 的功率来供电。这是与为内核中的 CPU 和 RAM 供电的内核 功率域 CORE_PD 124 分离的功率域。
除了被提供以控制各种设备元件的电源之外, 设备元件还依赖于被提供以适当的 时钟信号。图 1 示出了向各种控制器提供的时钟, 并且更具体地示出了这些时钟如何彼此 依赖。在针对图 2 的 “时钟树” 示意图进行描述时, 时钟的依赖性将会变得更加明显。
结合起来考虑图 1 和图 2, 向设备 10 提供主 PLL 130, 其提供了主时钟信号, 所有 其他时钟都从其导出。提供 RAM 时钟 140, 其从来自主 PLL 130 的时钟信号导出 RAM_CLK 信 号; 并向 RAM 控制器 118 供应 RAM_CLK 信号。类似地, CPU 时钟 142 产生提供给 CPU110 的 信号 CPU_CLK。对于外设, 外设时钟 132 直接从主 PLL 时钟导出, 以提供外设时钟信号 PER_CLK。 其继而由用于每个外设的相应时钟用来导出个体相应时钟信号。由此, 例如, 向 LCD 控制 器 116 馈送由 LCD 时钟 134 产生的、 依赖于 PER_CLK 的时钟信号 LCD_CLK。类似地, 向键盘 控制器 114 提供来自键盘时钟 138 的时钟信号 KB_CLK。KB_CLK 从 PER_CLK 导出。同样, 向 UART 控制器 112 提供由 UART 时钟 136 产生的、 依赖于 PER_CLK 的时钟信号 UART_CLK。由 此, 应当理解, 在本领域的典型设备中, 各种设备元件使用各种时钟, 不过如所描述的, 这些 时钟通常在层级布置中彼此依赖。
如所述, 通常可以向设备 10 提供一个或多个低功率模式, 设备的操作系统可以在 没有进程或线程要调度时使设备进入这些低功率模式。图 3 示出了一个表, 其给出了可以 进入的示例性低功率或功率节省模式、 对功率域和时钟的影响以及每个功率节省提供的设 备的唤醒时间。例如, 在行 302 中, 功率节省模式 “WAIT( 等待 )” 是最不激进的功率节省模 式, 并且通常是设备的缺省模式, 其意思是时钟和任何功率域都不关闭。 设备的唤醒时间非 常短, 在此示例中是 1 纳秒。
下一个最激进的功率节省模式是 “DOZE( 打盹 )” , 其在行 304 示出。此处, 在此示 例中, KB_CLK 信号 ( 即, 键盘时钟 ) 被关闭, 不过没有关闭功率域。CPU 的唤醒时间约为 300 纳秒。
下一最激进的功率节省模式是 “LIGHT SLEEP( 轻度休眠 )” , 其特性在行 306 中示 出。此处, PER_CLK 时钟信号被关闭, 不过没有关闭功率域, 唤醒时间约为 2000 纳秒。关闭 PER_CLK 信号的效果在于所有外设时钟 LCD_CLK、 KB_CLK 和 UART_CLK 也都被禁用 ( 回顾 图 2 的层级布置 )。由此, 如果相应外设控制器需要其各自的时钟以用于操作, 则在 “LIGHT SLEEP” 示例性功率节省模式中, 这将是不可能的。
在此示例中, 倒数第二个功率节省模式是 “DEEP SLEEP( 深度休眠 )” , 其在行 308 中示出。此处, PER_CLK 信号时钟被关闭, 并且在分支与上述相同的情况下, 向 RAM 控制器 提供的 RAM_CLK 信号也被关闭。另外, 向外设控制器提供功率的功率域 PER_PD 也被关闭。 其结果是, 设备的唤醒时间会很长, 在此示例中为 500,000 纳秒。
最后, 在此示例中最激进的功率节省模式是 “COMA( 昏迷 )” , 其特性在行 310 中示 出。此处, 主 PLL 130 被关闭, 这意味着此示例性设备中的所有时钟都被禁用。另外, 功率 域 PER_PD 也被关闭。因此, 唤醒时间相对较长, 在此示例中为 2 百万纳秒。请注意, 上述功 率节省模式特性仅仅是用于本描述目的的示例而已。在本发明的实施方式中, 可以提供不 同数量的功率节省模式, 每一个都具有不同的特性。
然而, 尽管在一般情况下使用功率节省模式能够提供节省功率 ( 这是电池供电设 备的重要要求 ) 这样的优点, 但是功率节省所利用的机制 ( 即, 通过对时钟或电源进行选 通 ) 和提供的唤醒时间较长对于硬件设备控制器或其他基本端口子系统而言可能产生负 面影响。具体而言, 需要避免下述两个问题 :
1. 如果基本端口子系统正在活跃地使用时钟或电源, 则该空闲回调不应当进入对 此时钟或电源进行选通的低功率模式。
2. 另外, 如果子系统不能容忍较长的唤醒时间, 则空闲回调应当将其自身限制为 唤醒时间比该子系统所要求的限制短的模式。
例如, 以 UART 控制器 112 为例。在 UART 中, 通常的情况是 : 即使在时钟被关闭时,检测数据线改变 ( 即, 检测进入数据 ) 的能力仍然工作。 通常, 此线的下降沿可以触发中断, 该中断继而可以唤醒休眠的 CPU。UART 的时钟继而必须启动, 以便能够对数据线进行采样 从而读取字符。因此, 当 CPU 进入低功率状态时, 其可以被数据传输开始到达 UART 唤醒, 因 为该数据传输会切换 (toggle) 该数据线。然而, 如果 UART 时钟并未足够快速地重新启用, 则即使 CPU 已经醒来, 也可能不能够读取向该 UART 发送的字符。因此, UART 控制器 112 可 能需要在该控制器预期可能接收数据的时间内一直提供其时钟信号 UART_CLK。另外, 取决 于在 UART 处接收的数据传输的速度, UART 控制器可能针对从数据线被选中到 CPU 完全活 动的 CPU 唤醒时间具有最大要求。
在针对时钟可用性和唤醒时间的这些要求的情况下, 在将包括设备控制元件 ( 诸 如, UART 控制器 112、 LCD 控制器 116、 键盘控制器 114 等 ) 的操作系统被移植 (port) 到提 供低功率模式的新设备 10 时, 或者如传统上那样忽略低功率模式对设备控制的影响, 或者 在某些情况下针对将被移植到的特定设备专门调整这些设备控制器, 以便能够感知该设备 提供的低功率模式。 显而易见, 此情况不够理想, 因为其要求设备控制器设计者和创作者对 该设备的部分进行更多的附加设计, 以便允许控制器能够理解设备平台 10 提供了什么样 的低功率模式。这增加了产品开发时间和成本。所以, 如果不需要针对特定设备 10 对设备 驱动器的定制调整将是有益的, 这将继而允许在不涉及这些定制调整步骤的情况下向任何 新设备 10 移植操作系统。理想情况下, 外围设备控制器 ( 例如, 诸如 UART 控制器 112、 LCD 控制器 116 和键盘控制器 114) 不需要了解有关设备平台 10 所提供的低功率模式的任何知 识, 并且仍能正确操作, 而不会受到不正确的低功率模式的影响。 本发明的实施方式旨在提 供这样的功能。 发明内容 本发明的实施方式提供了一种功率管理子系统, 其提供一种接口, 该接口允许基 本端口子系统 ( 诸如设备驱动器等 ) 登记关于系统资源 ( 诸如电源、 时钟等 ) 的操作约束, 以及指定确保正确操作的最大允许唤醒时间。一旦被登记, 这些操作约束继而通常被排序 以确定最严格的约束, 而这些最严格的约束继而被映射为特定设备平台提供的各种低功率 模式的特性, 以确定在仍满足所登记约束的前提下可以进入的最适当的低功率模式。以此 方式, 在需要时, 具有该功率管理子系统的设备仍然可以在适当的时候利用低功率模式, 而 不会影响基本端口子系统 ( 诸如, 设备驱动器、 控制器等 ) 的操作。另外, 该功率管理子系 统将基本端口子系统与设备提供的低功率模式隔离开, 使得已有基本端口子系统组件可以 在不需要针对设备进行定制的情况下与该设备结合使用。
鉴于上述, 本发明的第一方面提供一种具有多个系统资源的装置, 所述系统资源 由所述装置的其他系统组件使用, 所述装置进一步提供一个或多个低功率模式, 所述系统 资源在所述低功率模式中被至少部分禁用以节省功率, 所述装置进一步包括功率管理子系 统, 其被布置为根据由使用所述系统资源的所述其他系统组件所设置的系统资源操作约束 来选择和实现低功率模式。 功率管理子系统的提供带来了上文所述的优势, 即, 可以选择最 适当的低功率模式, 而不会影响系统组件操作, 并且可以使用现成的系统组件, 而不用针对 特定装置所提供的低功率模式的特定特性来进行定制调整。
本发明的第二方面还提供一种用于对多个系统资源进行管理的功率管理方法, 所
述系统资源由其他系统组件使用, 所述系统资源经历一个或多个低功率模式, 所述系统资 源在所述低功率模式中被至少部分禁用以节省功率, 所述方法包括 : 根据由使用所述系统 资源的所述其他系统组件所设置的系统资源操作约束来选择低功率模式, 并实现所述选择 的低功率模式。在上述第二方面中能获得与第一方面相同的优势。
通过所附权利要求书和以下描述, 本发明的进一步方面、 特征和优势将变得明显。 附图说明 通过以示例方式呈现本发明实施方式的以下描述并参考附图, 本发明的进一步特 征和优势将变得明显, 在附图中相同的附图标记表示相同部分, 其中 :
图 1 是作为本发明实施方式的背景进行描述的设备平台 10 的框图 ;
图 2 是在设备平台 10 中使用的时钟树示意图 ;
图 3 是示出了在设备平台 10 中使用的功率节省模式的特性的表 ;
图 4 是根据本发明第一实施方式的设备的框图 ;
图 5 是在根据本发明实施方式的设备中提供的功率管理子系统的元件的框图 ;
图 6 是示出本发明一个实施方式的功率管理子系统中的元件执行的步骤的流程 图;
图 7 是本发明实施方式的功率管理子系统的另一元件的框图 ; 图 8 是示出了本发明实施方式的功率管理子系统的该另一元件执行的步骤的流程图 ; 图 9 是本发明实施方式的功率管理子系统的又一元件的框图 ;
图 10 是示出了本发明实施方式中的功率管理子系统的该又一元件执行的步骤的 流程图 ;
图 11 是在本发明实施方式的功率管理子系统中使用的功率模式控制器的框图 ; 以及
图 12 是示出了图 11 的功率控制器执行的步骤的流程图。
具体实施方式
将基于以上作为背景进行描述的示例性设备平台 10 来在下文给出本发明实施方 式的描述。然而, 在进行此详细描述之前, 接下来先提供本发明实施方式操作的简要概述。
本发明的实施方式在向其移植操作系统的设备上提供功率管理子系统, 该子系统 允许设备驱动器和控制器 ( 诸如, UART 控制器 412) 登记其在该设备可能进入的任何低功率 模式中继续操作所需的硬件或其他系统资源。例如, 设备驱动器或控制器的每一个可以单 独地向该功率管理子系统登记与以下内容有关的约束, 例如, 其操作需要哪些时钟、 需要哪 些电源以及其可有效地容忍的最大唤醒时间可以是多少。 每个设备驱动器或控制器可以仅 在一个特定约束类别中登记约束, 即, 需要哪些时钟, 或者可以在若干类别中登记约束。该 功率管理子系统提供控制器和驱动器可以用来登记这些约束的接口。
在登记了这些约束的情况下, 针对例如用于功率域或用于时钟的每个约束类型, 提供约束处理机单元, 其追踪基本端口系统 ( 诸如, 设备驱动器和控制器 ) 所登记的约束, 并将登记的约束中提出的要求与设备平台提供的各种低功率模式的特性进行比较。 处理机单元继而选择满足所有已登记约束的、 最激进的低功率模式。 对于每个不同的约束类型, 可 能存在的情况是, 取决于登记的精确约束, 用于该约束类型的相应处理机能够选择与用于 另一约束类型的处理机所选的低功率模式不同的低功率模式。
继而在该功率管理子系统中提供总体功率模式控制器, 其从操作系统调度器接收 指令以使设备进入低功率模式。该功率模式控制器继而轮询各约束处理机, 以基于向其登 记的约束来确定这些约束处理机目前能够提供哪个低功率模式。 在各约束处理机返回的功 率模式中, 功率模式控制器继而选择最不激进的功率模式, 其继而根据所选功率模式来控 制设备平台的硬件, 例如时钟和功率域。选择最不激进的功率模式是为了满足设备驱动器 和控制器所登记的全部约束。
以此方式, 设备平台仍然能够在可能的时候使用低功率模式, 从而例如提供延长 的电池寿命, 同时仍然满足目前活跃的基本端口子系统 ( 诸如, 设备驱动器和控制器 ) 的要 求, 并因此能够保证设备的正确操作。 而且, 由于功率管理子系统进行操作以匹配设备驱动 器和控制器针对该设备所提供的功率模式的约束要求, 所以各个基本端口子系统不需要知 道设备平台所提供的功率模式的任何知识。相反, 它们仅需要知道与功率管理子系统的接 口, 以允许基本端口子系统向其登记约束。 这是尤为有益的, 因为通过去除基本端口子系统 了解设备平台所提供的功率管理模式的任何知识这一需要, 向任何设备平台移植操作系统 变得更加容易, 不需要为了使这些组件适于特定设备平台提供的特定功率模式而对操作系 统的控制器和设备驱动器或任何其他基本端口子系统进行定制调整。由此, 将已有操作系 统与新设备平台集成会变得易于执行。 在了解了以上概述的情况下, 现在将参照图 4 到图 12 来通过示例的方式给出优选 实施方式的具体描述。
图 4 示出了根据本发明一个实施方式的设备 40。设备 40 例如可以是移动电话、 PDA、 媒体播放器、 计算机等。该设备包括具有 CPU410 和 RAM408 的内核。RAM 控制器 418 被 提供以控制 RAM408 中的数据读写。 RAM 控制器 418 形成用于设备的操作系统的硬件抽象层 的部分 ( 未示出 )。还提供了 LCD 屏幕 406 和相应的 LCD 控制器 416, 其是允许设备 40 的 操作系统控制 LCD 屏幕 406 的适当设备驱动器。类似地, 提供了通用异步接收器 / 发射器 402 和相关联的 UART 控制器 412, 它们也形成操作系统的硬件抽象层的一部分。最后, 提供 了键盘 404 和相关联的键盘控制器 414, 其也形成硬件抽象层的一部分。 除了描述的硬件元 件和与其相关联的控制器之外, 还提供了各种电源和时钟以对硬件元件及其控制器供电, 以及向其提供时钟信号。在根据本发明的示例性设备 40 中, 功率域和时钟与之前针对图 1 的示例性平台设备 10 进行描述的那些相同。由此, 图 4 中未示出电源和时钟。
在本实施方式中还提供了功率管理子系统 42, 以使本实施方式按照本发明进行操 作。功率管理子系统 42 包括功率模式控制器 426, 其提供可以与基本端口子系统 ( 诸如, 设备驱动器和控制器 ) 通信的接口, 以便登记约束, 稍后进行描述。功率模式控制器 426 还 与处理机寄存器 430 通信, 该处理机寄存器 430 追踪可以针对其登记约束值的不同约束类 型。还提供了各约束处理机, 在此示例中是时钟处理机 428, 其追踪与基本端口子系统为了 在任何低功率模式中继续操作需要哪些时钟有关的已登记约束。 还提供了最大唤醒时间处 理机 422, 其追踪与基本端口组件所设置的设备最大允许唤醒时间有关的已登记约束。类 似地, 还提供功率域处理机 424, 其追踪与需要哪些功率域以便在任何低功率模式中继续操
作有关的已登记约束。每个处理机与功率模式控制器 426 单独通信。另外, 功率模式控制 器 426 由设备的操作系统调度器 ( 未示出 ) 来控制, 以便从调度器接收即将进入低功率模 式的指令。功率模式控制器 426 还与各时钟和功率域通信, 以便能够对时钟和域进行选通, 从而进入低功率模式。
图 5 更详细地示出了最大唤醒时间处理机 422 的内部组件。具体而言, 最大唤醒 时间处理机 422 包括最大唤醒值列表 450, 如图 5 所示。此处, 可以看到, 该列表包括一个 表, 其在第一列中包括客户端 ID, 这些客户端 ID 是已经登记约束的基本端口子系统的 ID。 该表中的第二列代表已经登记的实际约束。由此, 例如, 在图 5 中可见, 由客户端 ID UART_ C 代表的 UART 控制器 412 已向最大唤醒时间处理机 422 登记了其可以容忍的最大允许唤醒 值为 350 纳秒这一约束。类似地, 由客户端 ID LCD_C 标识的 LCD 控制器已登记了其最大唤 醒值为 180 万纳秒这一约束。在经由功率模式控制器向客户端基本端口子系统提供的端口 从客户端基本端口子系统接收到与最大唤醒时间有关的约束时, 将其存储在最大唤醒值列 表 450 中。当接收到字节组形式 ( 客户端 ID、 最大唤醒时间值 ) 的新约束值时, 在该客户端 ID 尚未存在于该列表中的情况下, 则向该列表添加该客户端 ID 和唤醒值。在该客户端 ID 已经存在于该列表中的情况下, 则存储该新的唤醒值以替代之前存储的值。 由此, 在任何时 候, 针对任何客户端 ID, 仅存储一个最大唤醒时间约束值。
还提供了列表排序器 452, 其在操作时用于 : 只要最大唤醒值列表 450 出现变化, 便对其进行排序。低功率模式计算器 454 接收已排序的列表, 并进一步向该低功率模式计 算器 454 提供功率模式数据 456, 其提供了设备所提供的各种功率模式的特性。 功率模式数 据 456 因此代表了前述例如在图 3 中展示的数据, 其给出了设备平台 40 所提供的每个功率 节省模式的特性。低功率模式计算器 454 能够根据该功率模式数据和所存储的列表来确定 与向处理机 422 登记的最大唤醒约束值相符的、 最适当的低功率模式, 并且能够将此信息 提供给功率模式控制器。
图 6 是示出了最大唤醒时间处理机 422 的各种组件的操作的流程图。
更具体地, 在步骤 6.2, 最大唤醒时间处理机 422 从功率模式控制器 426 接收如下 指令, 即, 在最大唤醒值列表中登记字节组 ( 客户端 _ID, 值 ) 形式的约束, 或者将其从列表 中删除。在此方面, 如前所述, 功率模式控制器 426 提供与基本端口子系统的接口, 以允许 基本端口子系统向功率管理子系统指示何时登记约束或者何时删除约束。通常, 基本端口 子系统 ( 诸如设备驱动器或控制器 ) 将在该驱动器或控制器第一次被激活 ( 例如, 第一次 加载至存储器 ) 时登记约束。当该驱动器或控制器被去激活 ( 例如, 从存储器卸载 ) 时, 其 使用与功率管理子系统的该接口来指示其登记的约束可以被删除。
在步骤 6.4, 已经从功率模式控制器接收了登记或删除指令, 则最大唤醒时间处理 机继而对最大唤醒值列表 450 执行修改, 即, 在该客户端 ID 目前未包含在该列表中的情况 下, 向该列表添加该客户端 ID 和所指示的唤醒值。在该客户端 ID 已经存在于该列表中的 情况下, 利用该新接收的值来更新该列表中的唤醒值。 在约束将被删除的情况下, 简单地从 该列表中删除与该客户端 ID 有关的约束。
只要最大唤醒值列表 450 发生任何变化, 列表排序器 452 便需要对该列表重新排 序, 以使其按照已登记最大唤醒值排序。这在步骤 6.6 中由列表排序器 452 执行。
此后, 在每次列表排序后, 低功率模式计算器 454 查看该列表, 并在步骤 6.8 处确定最小的最大唤醒值。在图 5 所示的示例性列表中, 这将是 350 纳秒的最大唤醒值, 其是针 对 UART 控制器 412 登记的。
在已经确定最小的最大唤醒值的情况下, 在步骤 6.10 处, 低功率模式计算器将最 小的最大唤醒值映射为低功率模式数据 456, 以便在步骤 6.12 确定满足该最小的最大唤醒 值的约束的最小功率模式。由此, 例如, 在功率模式的特性如图 3 的表格所示的情况下, 在 最小的最大唤醒值是 350 纳秒的本示例中, 可以看出, 仅 “WAIT” 和 “DOZE” 的低功率模式满 足此要求。在此情况下, “DOZE” 功率节省模式是最激进的功率节省模式, 即, 其提供的功率 节省最大, 因此其作为最小功率模式在步骤 6.14 被返回。低功率模式计算器 454 通常在被 轮询时向功率模式控制器返回该确定的最小功率模式。
由此, 最大唤醒处理机 422 提供了这样的机制, 利用该机制, 可以向功率管理子系 统登记与最大唤醒时间有关的约束, 并将其与功率模式数据相比较, 以便确定满足最大唤 醒时间约束的最激进的低功率模式。
转到图 7, 图 7 示出了时钟处理机 428 的内部组件。时钟处理机 428 提供与上述最 大唤醒时间处理机 422 类似的功能, 只不过在此情况中, 进行登记的是与基本端口子系统 所需时钟有关的约束。为此, 时钟处理机 428 包括客户端时钟列表 460, 其中包含有由客户 端 ID 进行索引的客户端基本端口子系统的时钟列表。基本端口子系统 ( 诸如, 设备驱动器 或控制器 ) 使用功率模式控制器提供的接口来登记与其所需时钟有关的约束。向功率模式 控制器传递形式为 ( 客户端 _ID, CLK 列表 ) 的字节组, 其中 “CLK 列表” 是驱动器或控制器 所需时钟的列表。 功率模式控制器 426 将接收到的约束数据传递给时钟处理机 428, 其将约 束登记在客户端时钟列表 460 中。 只要客户端列表 460 被更新 ( 登记新的约束、 修改已有约束或是删除已有约束 ), 便对第二个列表即 “所需时钟列表” 466 进行更新。所需时钟列表是从客户端时钟列表 460 导出的, 并且是在客户端时钟列表 460 中登记的所有个体时钟的简单列表 ( 只在该所需时 钟列表中出现一次 )。因此, 例如, 键盘控制器和 LCD 控制器都需要 master_PLL 和 PER_CLK 时钟信号来进行操作, 但是这些时钟标识符仅在所需时钟列表 466 中被包括一次。
还在时钟处理机 428 中提供了低功率模式计算器 462 和功率模式数据 464, 该功率 模式数据 464 同样代表了设备平台 40 所提供各种功率模式的特性。 低功率模式计算器 462 继而将所需时钟列表 466 中展示的时钟与功率模式数据 464 进行比较, 以确定满足已登记 时钟约束的最激进的低功率模式。 该确定的低功率模式继而被传递给功率模式控制器 426。
图 8 更详细地示出了时钟处理机 428 的操作。此处, 当时钟处理机 428 在步骤 8.2 接收到字节组形式 ( 客户端 _ID, 时钟列表 ) 的数据时, 其继而在步骤 8.4 向客户端时钟列 表 460 登记该接收的约束或将其从该列表中删除。如上文针对最大唤醒时间处理机 422 所 述, 基本端口子系统 ( 诸如设备驱动器和控制器 ) 通常将在其首次激活时登记时钟约束, 并 继而在其被去激活时请求删除约束。 以此方式, 约束的影响得以最小化, 并且一直能够获得 最适当的低功率模式。
当已经改变了客户端时钟列表 460 时, 在步骤 8.6, 对所需时钟列表 466 进行更新, 以包含该约束列表指示需要其活跃的个体时钟的 ID。 在步骤 8.8 处, 低功率模式计算器 462 继而将所需时钟列表 466 映射为低功率模式数据 464, 以便在步骤 8.10 确定最小功率模式。 由此, 例如在图 7 的示例中, 在需要所有时钟活跃的情况下, 从图 3 来看, 满足所以时钟都是
活跃的这一要求的低功率模式只有 “WAIT” 模式。在步骤 8.12, 向功率模式控制器 426 返回 已经确定的最小功率模式。
时钟处理机 428 由此提供了这样的机制, 利用该机制, 可以登记与基本端口子系 统需要哪些时钟有关的约束, 并且这些约束被用来确定可以使用由设备 40 提供的哪些可 用低功率模式。
图 9 和图 10 示出了功率域处理机 424 的操作。在此方面, 功率域处理机 424 的操 作与时钟处理机 428 的操作非常类似。 在其中存储有客户端功率域列表 470, 其包含设备基 本端口子系统登记的、 由客户端 ID 进行索引的各个约束。由此, 例如, 可以看到, RAM 控制 器已经登记 : 内核功率域必须保持活跃 ; 而 LCD 控制器已经登记 : PER_PD 必须保持活跃。
根据客户端 PD 列表 470 导出所需 PD 列表 476, 其仅包含那些唯一的功率域 ID。 在此情况下, 功率域 PER_PD 和 CORE_PD 二者被包括进来。低功率模式计算器 472 使用所需 PD 列表 476 并将其与存储的功率模式数据 474 进行比较, 以据此确定最小功率模式。该确 定的最小功率模式继而被返回给功率模式控制器 426。图 10 示出了此操作的细节。然而, 可以看到, 该操作与上述图 8 的操作几乎相同, 因此将不再重复该操作的描述。
功率域处理机 44 由此还提供了这样的机制, 利用该机制, 基本端口子系统可以针 对哪些功率域必须保持运转这一方面来登记约束, 并且继而这些约束可被映射为设备 40 提供的各个低功率模式, 以确定可以使用的最适当模式。在图 9 所示的示例中, 其中 PER_ PD 和 CORE_PD 功率域二者都是需要的, 参照图 3 可见, 支持此需求的最激进的低功率模式是 “LIGHT SLEEP” 模式, 因为其是这两个功率域都被关闭的最激进的功率节省模式。 由此, 如上所述, 各个约束处理机的每一个都可以向功率模式控制器返回如下信 息, 该信息指示设备平台 40 提供的哪个低功率模式满足基本端口子系统向每个处理机登 记的约束。功率模式控制器 426 继而将每个处理机返回的最小功率模式信息存储在最小功 率模式列表 498 中, 并且根据该列表来确定在操作系统调度器请求设备进入低功率模式的 任何特定时间应当使用哪个功率模式。在此方面, 为了满足所有不同类型的不同已登记约 束, 可以从不同约束处理机返回的不同最小功率模式中选择最不激进的模式。选择 “最不 激进” 的意思是节省最小功率的功率模式。在图 11 所示的示例中, 其中最小功率模式列表 498 指示最小功率模式 “DOZE” 、 “WAIT” 和 “LIGHT SLEEP” , 则将选择模式 “WAIT” , 因为它是 最不激进的模式。在本示例中, 只有该模式满足向所有约束处理机登记的所有不同约束。
参见图 11, 功率模式控制器 426 包括时钟和功率域控制器 496、 功率模式特性数据 494 和约束接口 492。 约束接口 492 允许功率模式控制器 426 与约束处理机通信。 还提供了 处理机寄存器接口 490, 其允许控制器 426 与处理机寄存器 430 对接。 时钟和功率域控制器 496 还向时钟和功率域发送控制信号, 具体而言是启用信号或禁用信号, 以便在需要的时候 对时钟和功率域进行选通。另外, 控制器 496 从 OS 调度器接收进入低功率模式的指令, 并 相应地对其进行动作。
图 12 示出了功率模式处理机 426 的操作。此处, 功率管理子系统 42 进行操作, 使设备 40 在从设备操作系统调度器 ( 未示出 ) 接收到指示期待低功率模式的信号时 ( 例 如, 由于没有要处理的进一步进程或线程 ) 进入低功率模式。 在步骤 12.2, 功率模式控制器 426 在时钟和功率域控制器 496 内部接收这种信号。在步骤 12.4, 响应于从 OS 调度器接收 到这种信号, 时钟和功率域控制器 496 控制处理机寄存器接口 490 查询处理机寄存器 430。
处理机寄存器 430 继而在步骤 12.6 返回约束处理机 ID 的列表, 并且时钟和功率域控制器 496 将这些约束处理机 ID 传递给约束接口 492。
在步骤 12.8, 约束接口 492 查询约束处理机, 以从每个处理机获得每个约束处理 机所登记的约束将会允许的最小功率模式的指示。由此, 例如, 约束接口 492 查询最大唤醒 时间处理机 422、 功率域处理机 424 和时钟处理机 428 中的每一个, 使得每个处理机都向功 率模式控制器 426 返回其目前基于当前向功率模式控制器 426 登记的约束而计算出的最小 功率模式。在步骤 12.10 处, 从每个约束处理机返回的最小功率模式信息被存储在最小功 率模式列表 498 中。接下来, 在步骤 12.12, 时钟和功率域控制器 496 查看最小功率模式列 表 498, 并从可用最小功率模式的列表中选择最不激进的最小功率模式。如前所述, 通过选 择最不激进的功率模式, 则可以保证能够满足所有不同类型的约束。在已经选择了要实现 的适当低功率模式之后, 时钟和功率域控制器 496 继而在步骤 12.14 处通过控制时钟和功 率域来实现所选的最小功率模式。具体而言, 时钟和功率域控制器 496 向根据所选功率模 式的简档将被选通的特定时钟和功率域发送禁用信号。
由此, 如上所述, 本发明的实施方式通过允许基本端口子系统经由功率管理子系 统提供的接口来登记与任何基本端口子系统正确操作所需的硬件资源有关的约束, 允许为 了节省功率而选择最适当的低功率模式 ( 这是电池驱动设备 ( 诸如, 移动电话 ) 的重要要 求 ), 并且可以保证各种基本端口子系统的正确操作。而且, 提供该功率管理子系统将基本 端口子系统与任何特定设备平台 40 所支持的不同功率模式有效地隔离开, 因为每个基本 端口子系统 ( 驱动器或控制器 ) 例如不需要了解该设备平台所提供的各低功率模式的任 何知识。相反, 每个基本端口子系统只需要具有允许其使用功率管理子系统接口来登记约 束的功能。因此, 在向新的设备平台移植操作系统时 ( 假设该设备平台具有功率管理子系 统 ), 则已有基本端口子系统组件 ( 诸如, 设备驱动器和控制器 ) 可以在该新的设备平台上 使用, 而无需进行调整以将该设备平台所提供低功率模式纳入考虑。 这显著地节约了成本, 并允许将新的设备平台与已有操作系统集成, 以比以往的方式要容易得多的方式提供完整 产品。
另外, 功率管理子系统提供的、 用于根据登记的约束来确定要进入的最低功率模 式这一机制是有益的, 因为其基本上是非迭代的过程。各个约束处理机根据目前向其登记 的约束来不断地更新其最小功率模式。这意味着, 当操作系统调度器指示功率管理子系统 进入低功率模式时, 功率模式控制器 426 可以立即从约束处理机获得满足其各自约束的最 适当低功率模式, 并且继而可以据此非常直接地确定总体上应当选择的最小功率模式。由 此, 在调度器请求进入低功率模式与选择和进入适当低功率模式之间的延迟非常小。
而且, 该功率管理子系统是自适应的, 其借助于处理机的操作来管理目前向其登 记的约束列表, 并且根据列表的改变来更新从其返回的最小功率模式, 只要基本端口子系 统被去激活 ( 诸如, 例如, 从存储器卸载 ), 则优选地将向用于该基本端口子系统的约束处 理机进行登记的任何约束从其保有的约束列表中删除 ( 或者以其他方式将其忽略 ), 并相 应地更新最小功率模式。一个示例将使此方面更加清楚。
在以上针对附图描述的示例性操作中, 由于附图中所示的列表中所登记的约束, 基于低功率模式的激活而被选择的最小功率模式是 “WAIT” 模式。这是因为时钟处理机 428 已经指示这是其约束可以支持的最小功率模式 ( 参见图 11)。 其原因在于 : 是键盘控制器已经向时钟处理机登记了约束, 其要求 KB_CLK 时钟是活跃的。然而, 如果键盘控制器 414 被 去激活 ( 例如由于键盘未使用而从存储器卸载 ), 则键盘控制器在客户端时钟列表 460 中登 记的约束将从该列表中被删除。这将引起所需时钟列表 466 被更新, 以从所需时钟列表删 除 KB_CLK 时钟信号。 继而, 并参照指示低功率模式特性的图 3, 可见, 在不再需要 KB_CLK 时 钟的情况下, 仍然满足所需时钟列表的最激进的低功率模式变成 “DOZE” 模式。由此, 时钟 处理机 428 将在被查询时向功率模式控制器返回 “DOZE” 功率模式作为最小功率模式。假 设最大唤醒时间处理机 422 和功率域处理机 424 如前所述返回相同的最小功率模式, 则从 时钟处理机 428 返回的最小功率模式的改变将在操作系统请求进入低功率模式时允许功 率模式控制器 426 选择 “DOZE” 功率节省模式。由此, 通过使约束处理机根据向其登记的约 束来更新最小功率模式, 具体而言是通过在登记约束的基本端口子系统不再活跃时删除或 以其他方式忽略约束, 可以迭代地且自适应地选择最适当的低功率模式。
可以对上述实施方式做出各种改变和修改以提供本发明的进一步实施方式。例 如, 尽管在实施方式中, 在 LCD 控制器、 UART 控制器、 键盘控制器和 RAM 控制器方面描述了 基本端口子系统, 但是对于有意向的读者而言, 可以使用各种其他基本端口子系统。 主要的 要求在于, 每个基本端口子系统 ( 例如, 设备驱动器或控制器 ) 适用于允许其在被激活时经 由功率管理子系统提供的接口来登记约束。
另外, 已经在以上实施方式中描述了三种约束, 即, 最大唤醒时间、 可用时钟和可 用电源。其他类型的约束也是可以的。例如, 可以对可用的不同类型存储器施加约束。对 于有意向的读者而言, 进一步的约束类型也是易见的。
另外, 在上述示例中, 在图 3 中展示了不同功率表模式的特定特性。当然, 在本发 明的其他实施方式中, 可以提供不同数量的、 具有不同特性的低功率模式。事实上, 本发明 的实施方式提供的主要优势之一在于, 允许形成操作系统硬件抽象层的相同基本端口子系 统 ( 即, 设备驱动器、 控制器等 ) 与提供多个不同类型低功率模式的不同设备平台 ( 每一个 具有不同的特性 ) 一起使用。本发明的实施方式所提供的功率管理子系统有效地将操作系 统硬件抽象层与任何特定硬件平台提供的低功率模式隔离。
对于作为本领域技术人员的有意向的读者而言, 各种进一步的修改都是显而易见 的, 以提供本发明的进一步实施方式, 而这些实施方式的任何一个和所有都由所述权利要 求书包括。