概述
芯片架构和功耗
芯片设计除了要满足功能和规格需求外,功耗也是必不可少的一项重要指标。芯片架构设计由一系列设计决策构成,包括软硬件划分,IP选型,核型配置,核数确定,时钟频率确定,内存规划等,每一项设计决策都会对功耗产生影响,本篇主要分析上述几个对功耗影响较大的决策项,并由此得出相应的降低功耗的方法。
1 时钟频率
图1 显示了在intel的一款CPU(Core i7-950)上所作的功耗测试结果[1]。从图中可以看出,功耗和时钟频率的变化并不是线性关系,随着时钟频率的上升,功耗的增加速度越来越快。以3.2GHZ 和 4.2GHZ 两个频率点为例,频率增加了31%,而功耗则上升了56%,也就是说多出来的功耗并未对处理能力有所贡献;如果保持频率不变而只增加核数,那么处理能力和功耗的上升速率是基本匹配的。换言之,在其他参数不变的情况下,多个低频核的功耗少于单个高频核,这也是越来越多的芯片采用多核架构的原因之一。需要注意的是,图1中的曲线只在一定频率范围内成立,在芯片设计阶段能够模拟出该曲线(或者根据经验数据估计)并找到最合适的频点,对于功耗和规格优化都具有重要意义。
图1
2 同构核与异构核
各核按功能划分可以分为同构核和异构核。对于异构核,不同的核负责业务的不同部分,需要多核同时运行才能实现完成的业务处理流程;而同构核则是单个核完成所有业务功能,所有核承担的业务功能是一样的。
相对于异构核,采用同构核模式更易于实现功能在多核上的灵活部署,这样就可以根据实际的处理量来动态调整所需的核数,而让多余的核进入休眠模式,即可以达到有效降低功耗的目的。
3 软硬件交互机制
在基带芯片中软硬件交互相当频繁,最常见的应用场景是:软件配置HAC进行任务处理,HAC完成处理后将结果上报给软件。上报方式分为两种:1.上报中断至软件,软件响应并处理;2. 软件周期(或空闲时)查询HAC结果。对于中断方式,软件在HAC输出结果前可进行其他处理或进入IDLE低功耗模式,HAC完成任务后软件才需要进行处理;但对于第二种方式,软件需要不断地进行查询操作,即使是周期查询,也需要在IDLE和正常模式间来回切换,相比中断方式,功耗增加的概率更大。
4 内存设计
在多核芯片中,经常采用分层的内存架构以提高数据访问效率,越接近处理单元的内存访问效率越高,因此常用的做法是将经常访问的数据备份到高速缓存(cache)中。但高速缓存的功耗往往是系统功耗的热点,cache的功耗比例可高达50%[2]。Cache功耗如果能够有效优化,那么整体系统的功耗也将显著下降。Cache低功耗设计可以从tag检查,write模式选择,way管理,store/push buffer设计等方面入手,以write模式为例,write through 模式比write back模式功耗更大,而write back模式下的cache功耗比例更大[3]。
此外,也可以将cache设计成支持动态使能,在核负载较低时关闭部分cache line,将cache功耗降至最低,同时也不会对业务能力造成影响。
5 资源虚拟化
目前的基带芯片对外以资源的方式呈现,对于用户而言,重点关注的是有多少可用资源,或者说有多少处理能力,而不是特别关心芯片是如何设计和实现的。这意味着芯片在一定程度上已经虚拟化了,虚拟化的好处是资源可以得到最大程度的利用。对于芯片内部资源,同样可以通过虚拟化的方式来有效利用,这包含两点:1.资源能够充分利用而不浪费,2.资源能够集中使用,而不使用的资源可以关闭。第2点即体现了资源虚拟化在降低功耗方面的作用。
多核芯片内的资源主要包含核,内存,HAC和其他外设。就目前的基带芯片而言,不同功能固定部署在不同核上,少量HAC在多模间共享,而通用外设如SRIO可以多业务共用。利用率从高到低依次为公共外设,核,HAC。
考虑以下芯片运行模式为UMTSonly的场景:L/G的专用HAC无法利用,多核的负载可能是不均匀的,如主控核负载可能在信令下发时出现尖峰,而其他时刻处于低负载状态,每个DSP上都有用户,所有核负载都很低但功耗并没相应降低。在该场景下,大部分核的能力都有大量剩余,但功耗却一直在产生。通过资源虚拟化,使得不同功能能够在各核灵活部署,从而提高核的利用率。
就芯片架构而言,支持虚拟化主要可以从这几个方面考虑:
1. 多核采用同构模式,减少核间差异,或者支持CPU核间或DSP核间功能迁移,这样就改变了目前多个核同时工作,消耗多产出少的状况,而代之以 少数核全速运行,而其他核休息的策略。
2. HAC功能分层设计,支持 复杂的HAC功能 通过 配置 基础HAC单元之间的连接路径实现,这样不同的业务可以完全复用基础HAC单元,不同的功能只需要通过配置不同的连接路径而实现,未连接的HAC单元可暂时关闭以降低功耗。
3. 规划内存结构,使得所有核/HAC看到的内存视图是一样或是接近的,这样可以避免业务部署在不同的处理节点时负载差异太大。
参考文献
[1]http://www.xbitlabs.com/articles/cpu/display/power-consumption-overclocking.html。
[2] 采用路选择技术实现的低功耗高速缓存设计。
[3] A Low Power Unified Cache ArchitectureProviding Power and Performance Flexibility。
最后
以上就是忧虑钢笔为你收集整理的嵌入式系统功耗极限优化芯片架构和功耗的全部内容,希望文章能够帮你解决嵌入式系统功耗极限优化芯片架构和功耗所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复