路科验证的个人空间 https://blog.eetop.cn/1561828 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

太难了,功耗分析这道题我不会做!!

已有 2901 次阅读| 2018-6-29 19:26 |个人分类:验证前沿资讯|系统分类:芯片设计

rockeric.com

对于一定量的硬件负荷,如何最大限度地降低功耗是一个很复杂的问题,它涉及到芯片设计过程中的很多方面。我们到底能够多接近这个最优值呢?


随着芯片中晶体管的尺寸越来越精细,功耗已经成为制约芯片晶体管数量的重要因素,并且如何能够最大化电路的性能也已经成为芯片设计的关键问题。说起来简单,做起来难,现在用来解决功耗问题的一些工具和方法仍然处于早期的定义阶段。


功耗问题涉及芯片设计流程中的很多方面,包括软件,架构,设计以及实现。这个问题可以被视为左移(shift left)问题的典型例子。因为如果要完整的解决这个问题,最上层的软件系统需要知道诸如芯片的版图(the layout of the hardware)等硬件最底层的细节。同时我们还必须在足够大的时间范围内来检测和分析运行软件时的热量产生情况。如果不完整考虑软件和硬件之间的联系,有可能会做出一些错误的决定进而引起意想不到的后果。


如今,关于功耗问题某些单方面的解决方案已经逐步产生,未来希望有一套完整的流程来全面解决功耗难题。目前,协调各个方面来解决功耗问题仍寄希望于工作在多个标准领域的个人参与者,虽然已经有一些令人鼓舞的迹象出现,但是想完全变为现实还有很长的路要走


定义功耗问题

不是所有的芯片都会遇到相同的功耗问题。Sonics首席技术官Drew Wingard表示,在大部分的芯片产品中通常都是一些大型的子系统消耗了大部分的功耗,但一个小型的可编程序列器或者微控制器也有可能对整个系统的功耗产生显著的影响。通常这些小系统都控制着硬件的唤醒与休眠,影响着整个硬件的行为。虽然它们自己只消耗很小一部分的功耗,但是其控制的数据路径会消耗很大部分的能量。


如今,越来越多的系统都会包含各种处理器,这意味着软件也会显著影响系统功耗。Mentor的工程总监Abhishek Ranjan解释说,为了节省功耗,会尽量降低处理器的活动频率,充分利用处理器的挂起时间,充分发挥睡眠和低功耗模式的作用,动态地调整系统的电压和时钟频率。芯片设计师们试图从算法层面上来提升整体模型的精确度,从而减少他们在电路底层要完成的工作量


摩尔定律节奏的放缓,使得越来越多的注意力被放在了功耗方面。Moortec首席技术官Oliver King指出,在先进的工艺节点上开发芯片的成本非常高,以至于设计者必须尽可能地提高整体的性能。提高性能就避免不了功率优化,这也意味着在执行一定量的任务下要尽可能地降低功耗。一些传统的功耗设计技术无法很好地应用到现在的便携式产品芯片中,因此一些新的技术例如适应性的电压缩放技术(adaptive voltage scaling)动态电压调整技术(dynamic frequency scaling)正在被业界广泛采用。


这意味着由于芯片的热限制(thermal limits)产生的功耗问题也会影响软件的执行调度。但是这是一个非常复杂的反馈循环,因为软件性能受到芯片上热管理电路的影响需要取决于相当长一段时间内电路总体的活动水平。



(如图所示是与系统级功率优化相关的多个循环回路)


当今的现状

现在,EDA工具所能提供的帮助主要体现在功耗管理单元的基础搭建以及低层次的优化上。在基础的功耗管理单元上例如电源域(power domain),电源岛(power island),高层次的功耗优化可以在这些域内采用更精细的设计方法,来显著改善功耗问题。Ranjan提出,一些独立于电源管理决策的功耗优化策略可以显著减少功耗,比如顺序时钟门控(sequential clock gating),操作数隔离(operand isolation),循环缓冲器(circular buffers),触发器共享(flop sharing),重定时(retiming),重定义流水线(re-pipelining)以及内存门控(memory gating)等技术。


但是Synopsys的架构师Tim Kogel指出,这些方法在SoC实现和软件设计之间还存在着难以跨越的鸿沟,这些精细的调控技术无法进行系统级的功耗分析。EDA工具只能帮助分析一小段时间内的功耗情况,只能帮助优化规模很小的设计模块,比如一个IP模块。在系统层次上我们必须查看执行实际用例的情况。看看在相对较长的一段时间内应用程序都做了什么。要想实现这些要求,需要进行早期的规范定义(early specification),搭建包含架构定义的虚拟原型(virtual prototypes for architecture definition)或者帮助软件开发的虚拟原型(virtual prototype for software development),使得软件开发人员能在早期就能注意到软件设计对功耗的影响。在那儿之后我们可能会使用FPGA进行原型开发,然后再次运行我们真实的软件用例,检测更长时间段内的功耗情况。


Ranjan认为,高层次的建模和模块级的分析都是必要的,如果我们在系统设计上就忘记关闭掉一个处于空闲状态的的模块,那么任何精细的时钟门控技术都无法弥补这个高层次错误所造成的功耗开销。但是从另一方面来说,如果我们已经完成了高层次的功耗规划,但是没有在模块级别设计足够的诸如时钟门控等低功耗技术,我们仍然会有功耗问题。


反馈回路

Cadence系统与验证小组组长Frank Schirrmeister认为测试准确度是一个很大的问题。我们可以把设计综合到门级,然后把库文件里面相关的信息反标到门级网表上,最后可以计算出运行软件所激活的功耗。我们还可以通过RTL功耗估算工具来估算我们电路的功耗。有一些工程师们尝试在虚拟平台上引入功耗信息。通过分析特定模块的不同状态,并计算每个状态下的功耗情况,从而可以从一个更高层次上来分析功耗。我们还可以在模拟器上测量局部模块的电路活动情况,来获得一个相对的数值。有一些常见的使用场景是可以被优化的,例如优化软件对存储单元访问的次数,由于存储单元可能在片外,所以存储器的消耗的功耗非常大。


Ranjan认为,如果没有获得一些硬件底层的相关信息,则无法估算功耗。我们搭建的模型应该包含制造工艺的相关信息,这就意味着我们需要进行大量的预表征和校准工作才能达到一定的合理精度。但是实际情况是,搭建的模型通常隐藏了很多错误,一般也只会比经验方法或者基于经验的估计准确一点。基于不准确的模型而做出的系统级的决策基本都会适得其反,甚至对功耗产生极其不利的影响。据实际情况表明,我们在RTL阶段就可以获得相对准确的功耗(基本上与后端的数据相差在15%以内),但是在系统设计阶段就获得RTL代码是不太现实的事情。


这是否就意味着早期的功耗分析是无用的呢?Schirrmeister说,工程师们会设定功耗预算,并把这个预算标注在虚拟模型中,这个过程构成了我们对功耗的初步分析。当我们获得更多的数据或从以前的项目中继承过来很多数据之后,我们就可以对模型进行优化。为了避免由于忘记关闭芯片中的某些部分而导致过热进而出现的软件错误,我们还会内置一些安全手段,以确保功耗预算和热量规划不会超出设定值。


功耗优化的反馈环路中同时还包含着寻找最大功耗消耗和严重发热的场景。Kogel说,要想找到这些真实的最坏场景,需要我们了解每个组件在每种工作模式下消耗的功耗,并且确定组件实时的工作模式。找到相关的测试场景,确实需要不断的尝试与练习。


Wingard说,芯片底层的微小变化也可能影响整体的功耗。假设我们的芯片刚开始工作在最佳状态,当晶体管的漏电流增加或者芯片的温度升高,模块周围的一个或多个温度传感器就会发出警报。一般我们可能会通过降低性能来保持芯片的温度始终处于散热极限内。在这个功耗和性能的反馈回路中,我们一般将芯片在安全运行的情况下产生最大热量时消耗的功耗定义为最坏的情况。


Kogel解释说,软件设计师或者架构师必须清楚我们使用的是哪种操作系统的电源调节器(OS power governor),以及我们可以增加或者降低的性能阈值。我们通常在芯片性能和功耗散热之间权衡。如果我们牺牲太多的性能,可能连基准测试(benchmark)都无法通过,但是如果我们一味最求性能而导致发热严重,可能对芯片来说也是一种灾难。我们希望架构师和软件设计人员尽早意识到功耗和散热问题,但是可惜的是,我们只有很少的信息可供参考来做出架构设计这些重大的决定。功耗和散热取决于实际的物理实现参数,而对这些参数的建模仍在完善当中。


Schirrmeister对此表示赞同。如果能有一个可以用于软件优化的硅前模型,将会非常有益。但是实际情况是,我们仅仅才刚开始关注芯片的热效应。


对于那些实时系统,缺乏这样一个硅前模型将会是一个很严重的问题。Wingard说,我们一般将一些静态的线程分配到不同的处理器上,然后将一些可以低速运行的动态线程分配到另一些处理器上。很多情况下,处理器都会有一个最高性能模式。




点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 253

    粉丝
  • 25

    好友
  • 33

    获赞
  • 45

    评论
  • 访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-29 19:20 , Processed in 0.015590 second(s), 12 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部