多核嵌入式系统的节能机遇与策略
扫描二维码
随时随地手机看文章
本文列举了多核嵌入式系统存在的一些主要局限,并对解决这些局限的可行方案进行了探讨。将以一些嵌入式系统为例,指出利用现有架构改进系统节能效果的机遇。多核处理器与新兴的嵌入式平台的结合能够满足现代嵌入式应用所需的高计算能力。但是,此类嵌入式应用需要进行高频切换,这将导致功耗较大、芯片温度过高,以及电源接地噪声。开发人员可以通过本文找出改进现代嵌入式系统节能效果的机会,并了解实现电源效率最大化的可行方案。
多核处理器的自主节能
本文以甲骨文(Oracle)/SunMicrosystem公司的UltraSPARC T1处理器为例展开论述。图1所示为一款UltraSPARC T1多核嵌入式处理器中的一个硬件线程的流水线微架构。选择UltraSPARC T1的原因是,其设计源代码、仿真工具及设计验证套件均为开源,而且可以从Oracle公司网站上下载。本文将利用此案例讨论从哪方面以及通过何种方式实现节能。
图1:Ultra-SPARC T1嵌入式处理器的流水线微架构。
图2显示了与处理器每个内核相关的陷阱逻辑单元。陷阱实现了软件从低级到高级特权模式(例如从用户模式到管理或监督模式)的控制矢量传递。就UltraSPARC T1处理器而言,Tcc指令以及因指令引起的异常、复位、异步错误或中断请求均会导致陷阱的发生。
图2:陷阱逻辑单元。
通常,陷阱会导致SPARC流水线被冲刷(Flush)。处理器状态将被存储在陷阱寄存器堆栈中,而陷阱处理程序代码则将被执行。控制的实际传递是通过含有每个陷阱处理程序前八个指令的陷阱表来实现的。用于将陷阱传递到特权模式中的表格的虚拟基址在陷阱基址(TBA)寄存器中被指定。表格中的位移则取决于陷阱的类型和当前的陷阱级别。当遇到DONE(完成)或RETRY(重试)指令时,陷阱处理程序代码执行完毕。陷阱可能与SPARC内核流水线同步或异步。图2显示了与SPARC内核其他硬件模块相关的TLU中的陷阱控制和数据流。从IFU、EXU、LSU及TLU传入的陷阱的优先级最先被解析,解析的陷阱类型被确定。根据陷阱类型,以及在队列中没有其他更高优先级的中断或异步陷阱待处理的情况下,系统将向LSU发送冲刷信号,以提交之前未完成的所有命令。此外,陷阱类型也决定了什么样的处理器状态寄存器需要被存储到陷阱寄存器堆栈中。之后,将选择陷阱基址并将其发往流水线做进一步执行。
图3:芯片框图。
图3显示了多核嵌入式处理器的芯片布局。该处理器有可变数量的内核、L2缓存体(bank)、内核外浮点单元(FPU)及输入输出逻辑,而且它们通过芯片上的网络互连。在CASPER仿真环境中,设计师可以对各种架构参数进行修改。
节能机遇
对于上述多核嵌入式处理器,已确定了以下内核级和芯片级节能候选元素(PSC):
1.寄存器文件,即线程专用单元。每个线程都有一个160双字(64位)的寄存器文件,而且当线程的某个任务被阻塞或空转时可以节省大量功耗。
2.数据缓存未命中时,用以排列数据的加载未命中队列(LMQ)。线程之间可以共享加载未命中队列,但通过这种方法节省的功耗较少。
3.分支预测器。分支历史表可以是线程专用的,因此可以节省大量功耗。
4.当内核中所有线程的所有任务发生阻塞或空闲时,或没有任务被调度到内核中的任何线程时,整个内核可以节省大量功耗。
5.内核中用于硬件和软件中断的陷阱单元。研究结果显示,在UltraSPARC T1处理器中,用于典型SPECJBB网络处理应用的陷阱指令在所有指令中所占的百分比还不到1%。这表明,陷阱单元是非常好的潜在节能元素。请注意,虽然在大部分时间内其余的陷阱逻辑可能处在节能模式下,接收陷阱的输入接收队列需一直保持在活跃状态,但队列的功耗可以忽略不计。
6.在缓存体和输入输出缓冲器之间控制数据流的用于L2缓存的DMA控制器。
7.内核和L2缓存体之间的命令和数据队列。
8.当需要访问片外缓存或主存储器时,只有在片上L2缓存有缓存未命中时才会被激活的缓存未命中路径逻辑。
节能策略
基于上述PSC制定出的自主硬件节能方案包括电源门控(数据不被保留)、时钟门控(数据在正常操作时被保留)和DVFS(同步电压及频率调整)。DVFS仅用于整个内核,或类似于DMS控制器、互连网络、缓存体、输入输出缓冲器或FPU的片上计算单元这样的一个芯片级组件(图3)。但是,对于内核中的组件和芯片级组件而言,电源和时钟门控均适用。图4显示了推荐的核内(局部电源管理)级和全局芯片级分层节能架构。在图4中的虚线上方,局部电源管理单元在内核中运行,对电源状态寄存器(PSR,与不同的PSC相关)中的内容进行监控,执行节能算法,以及对相应电源控制寄存器(PCR)当中的数值进行修改以激活或关闭节能模式。片上模拟电压调节器和时钟调节器将读取PCR中的内容,并通过读取的数据对PSC上的DVFS、电源门控、时钟门控进行控制。请注意,LPMU并不直接控制整个内核中的节能单元(如DVFS)。反之,LPMU将通过内核控制状态寄存器(CSR)向全局电源管理单元(GPMU)发送信号,CSR转而通过内核控制寄存器(CCR)实现内核级节能。内核中的电源状态寄存器通过陷阱逻辑和解码器进行更新,当需要进行特定中断服务或要对特定指令进行解码时,陷阱逻辑和解码器将会发出PSC即将激活的信号。同样,PSC也可以对自身的PSR进行更新,从而在系统长时间不工作(空闲或阻塞状态,最好在内核中对其进行局部监控)时发出即将节能的信号。
图4:自主硬件节能逻辑的架构。
图5:全局电源管理单元。
在图4中的虚线下方及内核外部是芯片级GPMU,它将会读取片上传感器上热点和电源接地噪声(它们是全局可观测现象)的数据,并为内核及其他芯片级组件做出相应的智能节能决定。GPMU通过内核状态寄存器(CSR)和内核控制寄存器(CCR)与内核及其他组件进行交互。整个内核的电源门控、时钟门控以及DVFS通过GPMU进行控制。图5展示了GPMU的交互(CR和SR分别表示控制寄存器和状态寄存器)。请注意,本文在逻辑上将所有芯片级组件都视为内核。
案例研究:英特尔迅驰中的节能
英特尔迅驰双核处理器(Core Duo)局部采用了自主电源管理方案,它是英特尔公司针对移动市场开发的首款通用芯片多处理(CMP)商用嵌入式处理器。这种内核可实现两个主要目标:首先,在平台所能承受的最高温度下实现性能的最大化;其次,电池的续航能力比前几代处理器更强。
操作系统将英特尔双核处理器视为两个独立的执行单元,但在与电源管理相关的所有操作中,平台则将整个处理器视为单一实体。英特尔选择将内核电源管理与整个CPU和平台的电源管理分开。为了实现这个目标,必须让电源及温度控制单元成为内核逻辑单元的一部分,而不是像以往那样作为芯片组的一部分。将电源及温度管理数据流迁移至处理器后,就可以采用一种允许所有内核根据自身需求请求节能状态的硬件协调机制,从而最大化单个内核的节能效果。CPU将按照两个内核请求中的最低标准确定并进入相应的节能状态,例如芯片组电源管理硬件和数据流的单一CPU实体。由此,软件可以按照ACPI协议对每个内核单独进行管理,而实际的电源管理则遵守平台和CPU的共享资源限制条件。多核处理器内核之间的相关性较复杂,内核对系统级参数的作用还不确定,而且ACPI电源管理协议也不是针对如此复杂的多核处理器而开发的。因此,需要开发一种新型的电源管理方案,这样的方案必须能在新兴的多核嵌入式处理器中将硬件节能逻辑和由操作系统控制的调度更好地整合到一起。
英特尔推出的双核处理器被分割成三个域。内核、各内核的一级缓存以及局部温度管理逻辑单元作为电源管理域独立运行。此外,包括二级缓存、总线接口及中断控制器在内的共享资源形成另一个电源管理域。所有域将共享同一个电源平面和同一个单核PLL,因此均在相同的频率和电平下运行。与细粒度节能方案相比,这是一个基本限制。但是,每个域都有独立的时钟分配(主干(spine))。内核的时钟分布主线单独进行门控,从而实现最基本的内核级节能方案。只有在两个内核都处在空闲状态且没有共享操作(总线操作和缓存访问)的情况下,才能对资源共享主干进行门控。若需要,即使在两个内核的时钟都停止的情况下,也可以将资源共享时钟保持在活跃状态,以便进行L2侦听和中断控制器信息分析。英特尔Core Duo技术还引入了包括L2动态调整在内的增强型电源管理特性。为了实现节能,系统必须进入更低电压的空闲状态,而为了达到这一目的,必须动态地调整/关闭L2缓存,从而为DeepC4状态做准备。