目录
4.2 电源域
4.2.1 电源模式
4.2.2 电源域的选择
4.2.3 系统逻辑
4.2.4 Always-On域
4.2.5 处理器Clusters
4.2.6 CoreSight逻辑
4.2.7 图像处理器
4.2.8 显示处理器
4.2.9 其他功能
4.2.10 电源域层次结构要求
4.2.11 SOC域示例
电源域在这里被定义为在电压域中共享共同功率控制的设计元素的集合。电压域可以划分为一个或多个电源域。
具体来说,电源门控域是可以通过片上电源开关去除电源的功率域。然后可以将电压域划分为一个或多个功率门控域以及一个 always-on(非门控)功率域。
将电压域划分为几个电源域的动机是为了促进减少静电泄漏功率的技术。这些模式包括断电模式,失去上下文,以及低泄漏保持模式,保留部分或全部上下文。
以下小节描述:
本节定义电源域在硬件级别可以具有的模式。第5章描述了电源域模式到软件电源状态视图的映射。
ON
电源域始终支持ON模式。这是电源域逻辑的正常功能模式。如果电源域支持DVFS,则在电源域处于此模式时应用此模式。这种模式通常还会使用时钟门控和其他技术来降低动态功耗。
OFF
电源域通常通过包含片上电源开关来支持OFF模式。电源开关用于在不需要电源功能时切断电源。
关闭电源模式会破坏上下文。要使用此模式,必须提供在进入OFF模式之前以及在返回ON模式后恢复执行时或之前管理任何必要上下文的机制。这些上下文管理机制可以在软件或硬件中实现。
这意味着使用OFF模式需要花费大量的时间和精力。但是,有许多组件在开机时的恢复或重新配置需求可以忽略不计。这样的组件就可以在没有这种开销的情况下关闭和打开。
Retention (RET)
保持模式提供泄漏功率减少而不损失状态。
有几种可能的RET模式实现和使用模型。RET模式可按以下标准分类:
对于硬件自主的RET模式(对软件是透明的),在退出该模式时恢复操作所需的所有状态都必须由硬件保留。其他状态可以被丢弃,因此,虽然从功能的角度来看,该模式提供了明显的完全保留,但从实现的角度来看,可能存在部分状态保留。
对于软件可见的RET模式,采用显式的软件决策来选择模式,这意味着软件可能在进入和退出该模式时处理一些上下文管理。这方面的一个例子是,当所有其他硬件状态被丢弃时,只有特定的RAM内容将被保留。从实现的角度来看,这些模式可能只需要部分保留能力。
RET模式可以使用具有低泄漏保持能力的触发器,使用二次非开关电源来实现。逻辑单元的主要电源在使用片上开关的模式下进行电源门控。为了获得最省电的RAM单元,还需要支持节省泄漏的保留模式。在没有这种能力的情况下,当组件在RET模式时,RAM单元必须保持在操作级别。
注意:如前所述,操纵外部电源电平也可以在整个电压域中获得类似的结果。这种方法通常只适用于高级控制,延迟增加,并且需要整个电压域共享一个共同的保持策略。
由于保留了部分甚至全部状态,因此进入和退出RET模式的时间和能量成本低于OFF模式。然而,在此模式下消耗的功率高于关闭模式,因此在进入模式的机会和模式内驻留时间方面存在权衡。
电源模式转换
当在电源模式之间切换电源域时,域内的逻辑必须处于安全状态。组件提供各种机制来实现这一点,这些必须集成到电源控制逻辑中。
本文档在第6章电源控制框架中描述了用于此目的的基础设施组件,并在第7章系统电源控制集成中描述了这些机制的集成。
电源域策略的基本目标是尽量减少每种情况下的power-on面积。
从实际的角度来看,实现和控制开销约束意味着电源门控域通常很大,其内容代表重要功能。
在选择电源域时,重要的是要考虑最终用例,以确保所选域的低功耗模式可以有效地使用。尽管可以有许多详细的用例,但它们通常可以被简化为更广泛的使用类别。通过分析,可以确定关闭长时间不需要的功能的机会。
此外,电源域支持的电源模式需要映射到一组显式的软件功率状态之一,或者组件支持的自治机制。当电源状态控制需要由软件管理时,还应评估使用可用框架或设备驱动程序的可行性。
在SoC睡眠状态之外的所有活动期间都需要许多常见的系统逻辑功能,如互连、存储系统、外设和其他共享基础设施。典型的SoC将这些功能聚集到单个电源门控域中。
在大规模SoC中,这可以代表一个重要的区域。SoC架构可以组织起来,将该区域划分为进一步的电源域。然而,挑战来自于通过互连的通用路径的普遍性,以及许多外围功能对于电源域实现来说太小。此外,尝试将外围功能映射到与广泛使用类一致的更大的组中可能会被证明是棘手的。
但是,如果互连和外设功能特定于具有专用电源域的功能块,则应将其集成到这些电源域中,而不是系统域中。
always-on的电源域范围取决于系统在SoC休眠状态下对泄漏的特定灵敏度。在高灵敏度的情况下,always-on域可能被限制为最小的唤醒逻辑。范围更广SCP核心子系统可以放置在电源门控域中,在最深的SoC睡眠状态下关闭电源。
注意:当考虑到电源开关所消耗的待机电流对常开逻辑区的灵敏度时,建议将I/O环电路和保持供电的模拟功能作为评估的一部分。
最小唤醒逻辑范围包括:
•系统唤醒定时器和系统计数器。
•调试访问端口(DAP)逻辑。
•任何需要的外部唤醒事件检测。
•任何需要的检测唤醒事件从独立的片上子系统。
•上电复位和初始化逻辑。如果SCP位于单独的电源门控域中,则always-on域必须包含对上述所有条件作出响应的SCP域的上电控制。
当对always-on区域和功率的灵敏度较低时,always-on域可以包含整个SCP核心子系统。至少,SCP核心子系统必须支持从系统初始化到AP引导,以及从SoC休眠状态到SoC休眠状态的转换。
always-on的功率域策略受到:
•最小的唤醒逻辑要求。
•系统逻辑电压和电源域策略。
相应的一组选项如图4.2所示:
依次考虑这些选项:
如果没有冲突的约束,建议采用这种安排,因为它简单,并且不依赖于平台级别的额外供应。
Cortex-A和Cortex-R处理器集群通常支持广泛的电源域和这些域内的电源模式。大多数多处理器产品同时支持单核和集群逻辑电源域。一些多处理器产品还支持集群级调试电源域。
表4.1显示了一个使用Cortex-A产品的示例:
Core电源域
即使在用例中,对系统可用的处理器核心的需求也是高度动态的。
OSPM框架具有相应的空闲管理能力,可以在软件可见电源状态之间进行选择。还存在用于从操作系统可用池中删除核心的策略框架,例如,在由于功率或热约束而必须限制计算容量的情况下,可以使用此策略框架。
此外,在处理器的支持下,可以实现自主的软件透明保留模式,从而在内核停止期间机会地减少泄漏。
在能源和功率受限的用例中,特别是在高温下,core泄漏功率可能很大,因此管理这种泄漏的能力是非常需要的。
Arm强烈建议在所有对泄漏功率敏感的应用中实现单核功率域。
Cluster域和共享Cache RAMS
多处理器产品通常还支持top-level cluster逻辑电源域,该电源域与共享Cache RAM一起控制,用于打开和关闭模式转换。此外:
•当集群逻辑开启并保持运行时,可能支持部分缓存RAM断电和自主RAM retention模式。
•当集群逻辑关闭时,可能支持共享缓存和SCU RAM retention模式。
由于集群可用性需求也是动态的,因此强烈建议在对泄漏功率敏感的所有应用程序中支持该区域的功率门控。
集群域将包含任何集成逻辑,例如任何域桥的适当部分,用于功能和CoreSight使用,以及专用于集群的CoreSight基础设施。
Debug域
如果集群支持调试电源域,则其中包含满足通过核心下电进行调试的架构要求所需的逻辑。
如果这是作为一个独立的电源门控域实现的,那么在调试连接期间,当没有内核供电时,只需要为这个域供电。
由于该域较小,通常并入cluster逻辑电源域。
如果调试通过核心断电逻辑是集群电源域的一部分,则在调试连接期间集群必须通电。
在基于DynamIQ的核中,这个调试逻辑被放置在一个名为DebugBlock的单独模块中,该模块可以放置在集群的一个单独的电源域中。
处理器Cluster分区示例
图4.3显示了MP4处理器Cluster的示例逻辑视图,所有内核和Cluster使用单个电压域。支持每核、集群和集群级共享缓存RAM功率门控。
集群和共享缓存RAM电源门控域共享打开和关闭模式转换的公共控制。缓存RAM可以对retention支持进行额外的控制,但必须在集群开机时始终可供访问。每核电源门控域还实现了支持动态retention的选项。
图的结构反映了处理器子系统从电压供应(VAP)开始的分层上电顺序需求,首先是可用的,然后是向下流动的功率域依赖关系。关机顺序是相反的。
为清楚起见,图4.4显示,在物理结构中,所有片上电源开关都是并行实现的,逻辑顺序是通过控制排序。在进一步的示例中,将省略此表示。
图4.5显示了DynamIQ big.LITTlE Cluster的逻辑视图示例。每个大核心组和小核心组都有独立的电压源,集群使用系统逻辑电压电源(VSYS)。
集群和共享缓存RAM电源门控域共享对电源模式转换的公共控制。共享缓存RAM可以对保留和部分断电进行额外控制。但是,在集群上电时,窥探过滤器RAM必须至少可供访问。每核电源门控域还实现了支持动态retention的选项。
图的结构反映了处理器子系统从电压供应开始的分层上电顺序需求,首先是可用的,然后是向下流动的功率域依赖关系。关机顺序是相反的。
共享的CoreSight基础设施,除了Debug Access Ports必须始终打开之外,可以有一个专用的电源门控域。这是预期在系统逻辑电压域内。
如果没有专用电源域,则属于系统逻辑电源域。
本节中的描述一般适用于Arm Mali GPU产品。必须经常查阅特定的产品文档。
Arm Mali GPU产品具有集成电源管理功能。它们包含一个相对always-on的域,在GPU驱动程序软件可以调度任何工作之前,必须为其供电。该域包含对每个GPU内核及其顶级核心组逻辑的电源门控域控制支持。这个功能称为作业管理器(JM, job manager),它在计划工作时动态地启动资源,并在工作完成时关闭资源。
从高级系统电源控制和OSPM的角度来看,只需要考虑作业管理器电源域的可用性。
Job Manager电源域
如果GPU没有专用电压域,作业管理器可以合并到系统电源域中,也可以作为专用电源门控域实现。
如果GPU有专用的电压域,则必须将此逻辑置于该电压域内的电源域中。
当作业管理器被实现为GPU电压域中的电源域时,它可以与任何其他顶级集成逻辑(如DVFS桥的适当电压域部分)或GPU专用互联功能聚合在一起。
该功率域可以实现为电源门控域,也可以实现为非门控电源域,依赖于SoC睡眠状态下GPU电压供应的外部关闭。
Core and Core Group电源域
建议为GPU内核和顶级核心组逻辑实现电源门控域,因为这些是动态使用的重要功能块。可以实现单个核心组和单核电源门控域,也可以实现单个合并电源域。
GPU分区示例
图4.6显示了MP4 GPU的逻辑视图示例。图的结构反映了分层的电源排序需求,而不是物理实现。
本例中提供专用的VGPU (voltage domain)来支持DVFS。作业管理器域是VGPU中的非门控电源域,在电源通电时可用。支持核心组和单核电源门控域。较浅的颜色反映了这些域由作业管理器管理,而不是系统可见的。
图4.7显示了较小MP2 GPU的第二个示例逻辑视图。在这种情况下,不支持DVFS, GPU电源域是系统逻辑电压域(VSYS)的子域。
在本例中,作业管理器已合并到包含共享资源的系统逻辑域中(SYSTOP)。当SYSTOP启动时,作业管理器可用。支持核心组和单核功率门控。浅色阴影再次反映了这些域由作业管理器管理,并且不是系统可见的。
Arm Mali显示处理器支持多个电源门控域。有关详细信息,请参阅具体的产品文档。
在所有情况下,支持的电源门控域都是外部管理的。
对于剩余的SoC功能,实现电源门控域的选择通常如前所述,其中一个功能或一组功能仅在特定场景中使用。应该根据系统动态维度的实用程序和能力,考虑在功能内进一步划分,例如划分为处理核心。
通常,需要很大的函数大小来证明节省额外域的合理性。但是,可能会发现一些特殊情况证明小域是合理的。一个例子是可以独立操作的卸载处理器,例如解码音频,而系统逻辑不可用。
在移动SoC中,媒体功能(如成像处理器)和其他复杂功能(如高速I/O接口)之间可能会出现额外的电源门控域。高速I/O接口就是一个例子,它可能还需要“相对always-on”的唤醒域来支持挂起和局域网唤醒之类的功能。
在基于Arm的SoC中,必须维护关键资源之间的几个基本关系,以提供可以运行标准操作系统的功能系统。本节提供维护这些关系的电源域层次结构的高层考虑。
服务器基础系统架构(SBSA)[1]从以下方面描述了与电源域层次结构相关的需求:
•系统时间配置符合ARM架构参考手册ARMv8[2]和ARM架构参考手册,ARMv7-A[3]中的通用定时器规范。
•两个唤醒方法的语义:
-来自通用中断控制器(GIC)的中断
-Always-on域唤醒事件
•系统内存可用性
SBSA还描述了与这些需求一致的电源状态语义。电源状态在Chapter 5 Power States中介绍。
图4.8显示了与SBSA中显示的类似的符合这些要求的功率域层次结构。其他符合需求的例子,不是简单的子集,是可能的。
在图4.8中,有以下电源域:
•一个始终在线的电源域(AON),包含系统控制处理器,一个通用定时器子系统和唤醒检测逻辑。
•一个系统逻辑域(SYSTOP),包含GIC和共享的系统逻辑功能,包括访问系统内存的路径。
•两个处理器集群与每核和集群电源门控域。
•由操作系统管理的DMA设备。它依赖于开机时GIC和系统内存的可用性。
•具有自我管理功能的I/O设备,具有电源门控域和always-on域。always-on域可以生成唤醒事件来表达对SCP的资源请求。
以下部分描述了与电源域分区相关的SBSA[1]产生的需求。
Timer子系统
SoC必须包括一个通用的定时器子系统,在一个always-on的电源域。这样可以满足以下要求:
•系统计数器需要在SoC上电的整个时间内提供一致的增量视图。
•系统计数器计数值必须作为所有AP核心私有计时器的输入可见,无论这些计时器何时打开。
如果SoC支持睡眠状态,其中GIC断电,则要求能够在始终打开的唤醒定时器事件到期时产生始终打开的电源域唤醒事件。SCP固件必须支持在此事件中唤醒AP核心。在接通电源时,中断也被发送到GIC,等待AP核心的可用性。
始终打开的电源域事件(也是GIC SPI中断)必须是级别敏感的,或者相应地重新生成,以确保在上电后中断被GIC观察到。
Generic Interrupt Controller (GIC)
在GICv2实现中,所有的GIC逻辑都在一个单一的电源域内。
在GICv3实现中,GIC CPU interface必须合并在AP core电源域中,而相关的redistributor、distributor和任何中断转换服务(ITS)支持可以在其他电源域中。
redistributor可以在与其关联的AP核心的相同或相对always-on的电源域中实现。
GIC distributor必须与所有AP核心具有相对always-on的关系。但是,distributor不需要始终打开,并且可以在SoC睡眠状态下关闭电源。在图4.8的例子中,GIC是放置在系统逻辑域(SYSTOP)中的单个电源域实现。当GIC distributor断电时,AP核心只能被always-on域唤醒事件唤醒。
Core Timers
本地AP核计时器是中断的重要来源。然而,核计时器可能会关闭电源,或者随着核被reset。
如果AP核定时器可以下电,则必须有一个唤醒定时器作为中断源提供给GIC,以允许唤醒信号发送到SCP上电核心。
除非所有本地AP核定时器都是always-on,否则SBSA的level 0只需要一个系统特定的定时器来实现此目的。但是,建议系统至少遵守SBSA的第1级,并且,除非所有本地AP核计时器都是始终开启的,否则应为此目的实现在非安全地址空间中映射的内存映射通用计时器。
在大型系统中,可以使用固件表中描述为始终打开的AP核计时器来解决定时器的可伸缩性问题。AP固件根据可用的定时器硬件资源抽象出always-on的功能。根据系统的规模,这些资源的范围可能从单个共享安全内存映射的always-on计时器,到每个核心的内存映射的always-on计时器。
Always-On域唤醒事件
Always-On域唤醒事件是支持SoC睡眠状态的基础,其中只有Always-On的逻辑被供电。
已经声明了一个要求,即系统必须在Always-On的唤醒定时器到期时支持始终打开的电源域唤醒事件。
其他Always-On的域唤醒事件是实现定义的。常见的例子如图4.8所示:
SoC外部事件:来自电缆检测、电源按钮或无线子系统等源的片外事件。
来自具有自我管理功能的设备的片上事件:复杂的子系统,如高速I/O设备或具有自己的Always-On域支持的集成调制解调器。
SCP固件必须唤醒所需的系统资源以响应所支持的事件。
系统内存
每当启动可以启动内存事务的组件时,系统内存必须可用。
但是,还应该注意到,更高的SBSA级别所需的系统mmu和GICv3使用内存中的表。因此,当包含这些组件的系统处于电源状态时,其中至少有一个SMMU或GIC处于开启状态,系统内存必须可用。
在这种情况下,可用性的定义是内存将响应请求,而不需要运行在AP核心上的软件的干预。因此,当需要内存系统可用性的代理处于活动状态时,只要这些请求触发一种允许透明地完成事务的机制,就有可能关闭内存系统。
在图4.8的示例中,到系统内存的路径与GIC位于相同的电源域(SYSTOP)中,因此当任何AP核心上电时,系统内存将可用。
但是,组件(如图4.8示例中的I/O设备)具有生成始终打开的域唤醒事件的能力,可能会在SYSTOP域关闭时启动。如果这样的组件在SYSTOP关闭时生成请求,则需要一个硬件组件为SCP生成唤醒事件并暂停事务,直到系统内存可用为止。该组件的具体要求请参见7.2.8访问控制。
电源序列要求
图4.8所示示例的电源排序要求可以简单概括为:
•无论SoC何时上电,该域都可用。
•对于任何处理器集群,SYSTOP域相对总是处于开启状态。
•每个处理器集群相对来说总是连接到其核心。
•对于操作系统管理的设备来说,SYSTOP域相对总是处于开启状态。这类设备表示为
图4.8由DMA设备组成。
•图4.8中的I/O设备具有自管理功能。其通电的电源门控域仅依赖于其 always-on的域逻辑的先前可用性。
通过在依赖域之前打开层次结构中较低的域的电源,并在依赖域关闭电源之后关闭该域,通常可以保持相对始终在线的关系。例如:在任何处理器集群上电之前必须先上电SYSTOP,下电则相反。
然而,如果重置释放的管理和低功耗接口控制尊重所需的逻辑顺序,则可以同时为相关域供电。
图4.9显示了一个高端移动SoC示例,作为电压和电源域划分的总结。
就所示的功能范围而言,图4.9进行了简化,但就可能做出的选择而言,它具有代表性。
所示的图像处理器和音频电源域不代表Arm组件。这些都是可能具有专用电源门控域的组件示例。
虽然没有显示,但假设视频处理器的核心调度程序逻辑包含在包含GIC、存储系统、系统互连和系统外设的电源域内。