提早准确估算智能视觉 SoC 的功耗

Synopsys ARC 处理器工程经理 Derya Eker
Synopsys ARC 处理器研发工程师 Diego Gonzalez Montes

简介

当今的高端片上系统 (SoC) 需要处理日益增长的计算密集型工作负载,但同时必须谨慎权衡功耗与性能。广泛部署人工智能 (AI) 和深度学习的需求激增。人脸识别已成为手机中至关重要的功能,并已扩展到智能可穿戴设备。通过增强现实和虚拟现实耳机识别物体和周围环境进一步突破了技术极限。自动驾驶汽车运用深度学习来解读、预测并响应关于周围环境的数据,以实现更安全、更智能的自动驾驶。

为了同时优化功耗和性能,软硬件开始更加紧密地结合在一起。设计人员必须在产品开发的早期阶段就选好关键架构,例如软硬件工作负载分配和 IP 供应商选择。当今的 SoC 都需要数百万美元的投资,所以准确估算 SoC 的功耗是决定您芯片成败的关键因素。

功耗估算中的变量

深度学习应用的性质,决定了芯片中的大多数处理元件都会长时间进行繁忙的计算。无论是智能手机还是自动驾驶汽车,目标设备的功耗都必须符合其功耗预算。另外,电池寿命,以及影响可靠性、封装和冷却的散热问题都额外施加了限制。掐准预算进行设计成为关键所在,因此尽早做出可以预见的准确功耗估算变得日益重要。

在讨论尽早准确地估算功耗存在的难题之前,让我们简要了解一下设计人员如何计算功耗。一台设备的功耗 (Ptotal) 可分为两种:开关活动引起的动态功耗 (Pdynamic) 和静态功耗 (Pstatic)。图 1 总结了影响这两个组成部分的主要参数。

图 1:视觉 SoC 设计中需考虑的功耗变量

图 2 显示了工艺技术扩展对动态功耗和静态功耗的影响。随着我们的技术节点变得越来越小,动态功耗也随之下降。但是,由于漏电流增加,静态功耗的占比越来越突出(左图)。除此之外,同一技术节点(右)中电池的阈值电压也会影响频率/延迟和漏电功耗。

为了获得更高的频率和性能,设计人员可能希望使用低电压阈值的电池。这会增加漏电流,应当计入静态功耗。在设计过程中,一直都需要权衡取舍,以在功耗和性能之间取得平衡。

图 2:工艺技术扩展对动态和静态功耗的影响

可能降低功耗的技术

设计人员可以应用各种降耗技术来降低功耗:

  • 门控时钟可在不处理运行时减少开关活动。
  • 电源门控会关闭设计的大部分不运行的功能以减少漏电。
  • 在实现物理设计的过程中,会利用具有不同阈值电压的电池进行平衡,以实现优异的时序和功耗。
  • 通过布局优化可减少拥塞并改善时序,从而降低布线电容。
  • 在架构层面,设计人员可以优化内存管理并减少系统中的数据移动。尽管减少 DRAM 带宽并不能完全改善 IP 功耗,但对 SoC 功耗的影响确实很大。

由于在 AI 和视觉领域中性能和功耗紧密关联,因此有关性能和功耗的单个指标无法提供全面的信息。有许多因素影响功耗估算的准确性和正确性。因此,必须明确说明估算功耗的条件。 我们首先来看一下常用的指标:

  • 功耗(瓦特)。动态功耗与性能密切相关。设计人员只需减少单位时间完成的计算量,即可获得几乎任意低的功耗值。对于计算量高的应用而言,系统功耗低并不一定代表能效更高。单独的“功耗”指标并没有任何意义,除非将它和系统级应用的性能相关联,例如已知的工作负载每秒的循环次数或帧数。
  • 能效(每秒运算数/瓦特)。该指标的确结合了性能和功耗,但是每秒运算数 (Ops) 的定义对于特定于应用的 IP 通常都是模棱两可的。MAC/s/Watt 等衍生指标将卷积神经网络 (CNN) 图表简化为乘法计算,而在实践中,AI 中尤为显著的架构挑战之一,则是需要在系统中不断移动大量数据以馈送最佳乘数。每秒运算数/瓦特指标中没有明确考虑这一点。该指标还排除了激活函数和池化等其他运算,而这些运算在处理循环中可能占有一定的百分比。每秒运算数/瓦特指标还假定了理想(或至少恒定)的硬件利用率,这在现实应用中,不太可能在所有层和特征图尺寸中实现。
  • 能量(焦耳/帧)。该指标不仅包含 MAC 运算,还纳入了基准测试图中所有层的类型和特征。它还反映了是否能够高效地将图形映射到硬件,以进行计算和数据移动。

代表性图表中以焦耳/帧为单位的能量是评估 CNN 应用功耗的最准确指标然而,很难计算每帧的平均功耗。很多时候,为了更大化吞吐量,系统会以批处理或流水线模式同时处理多个图像。由于功耗和性能密切相关,因此应以正确的批次数量且/或在流水线处于稳定状态时进行功耗测量。单是处理一帧就可能需要数亿次循环。还需要更多次循环才能达到可以测量的正确稳态,有时需要数十亿次。前沿先进的仿真工具也无法在合理的时间内处理此类工作负载,即使是最小的图形也无法做到。

取而代之的是,设计人员经常测量诸如多层 SegNet 图(图 3)之类的图中单个卷积层的能效。然而,通常遇到的陷阱是将结果外推到整个图形。采取这样的捷径可能出现误导,原因如下:

  • 不同尺寸的卷积层具有不同的硬件利用率,而这种差异会影响总功耗。
  • 一个卷积层可以用在图形的不同位置,而每个位置都施加不同的输入数据分布。
  • 不同的图形架构会影响输入数据的分布和要完成的处理类型。例如,值约为零的特征图和权重每次相乘所需的功耗相对较少。

因此,在不同的位置或图形架构中,同一层可能需要不同的能量。另外,还需要考虑其他层,例如激活函数、元素级别运算和反卷积。

图 3:SegNet 架构实现了多个卷积层。在不同的位置或图形架构中,同一层可能需要不同的能量,因此无法通过外推任何一层来表示整个图形

功耗估算的准确性与所使用的刺激正交,受所采用的功耗估算方法以及所测量设计的抽象级别的影响极大:

  • RTL:功能正确且在 HDL 仿真器中执行起来相对较快,但不包含任何功耗信息。在功耗估算期间,必须在网表中标注开关活动,但开关活动绝不能覆盖 100% 的引脚。
  • 综合级网表:所有逻辑都映射到单元,但是时钟树实现不完整。电容无法准确建模。这会影响功耗估算的准确性。
  • 全版门级网表:完成了所有物理实现细节,并且可以使用所有层的布线模型来提取实际负载电容。这就进一步提高了功耗估算的准确性。

实际实现中捕捉的细节越多,功耗估算就越准确。小型综合基准的 RTL 仿真可能只要几分钟即可完成,但对于网表,则可能需要几小时或几天的时间。仿真非常有深度的 CNN 图(包括所有实现细节)可能需要几周的时间。这种仿真时间带来的难题增加了风险,因为 IP 供应商可能跳过此类详细的功耗分析和准确的功耗估算。结果导致实际功耗可能会超出功耗预算;随后则会在 SoC 功耗签核阶段出现明显的产品风险。

尽早准确地估算智能视觉 SoC 的功耗

为了能够在全版网表上执行数十亿次 CNN 图运算,以尽量准确地执行功耗测量,仅仅使用仿真工具是不够的。Synopsys 的 ZeBu 仿真平台提供了一种解决方案,可以帮助 IP 开发人员和 SoC 设计人员在几分钟或几小时内(无需几周或几个月)为数亿个处理循环准确地计算功耗。ZeBu 服务器还支持高级使用模式,包括能耗管理验证、利用 Synopsys 的验证生态系统进行综合调试和集成、利用虚拟原型进行混合仿真,以及架构探索和优化。因此,使用 ZeBu 仿真器不仅可以轻松地探索各种候选硬件架构中应用软件的功耗/性能权衡,而且还可以有效地实现签核质量的功耗估算,从而有助于在设计周期的各个阶段,调整系统所有元件的功耗。使用 Synopsys 的 DesignWare® ARC® EV7x 视觉处理器的设计人员正在采用 Zebu 基于软件的功耗估算和签核流程,以便在使用 EV7x 处理器处理高性能深度学习应用时获得准确而切实的功耗估算。

结语

估算 SoC 中 AI 应用的 IP 模块的功耗非常困难。设计人员需要周密考虑功耗估算过程的方方面面,才能确保在过程初期做出的决策,使得回来的硅片,功耗不超出预算。相较于在各个卷积层分别获取估算值,在 ZeBu 服务器等仿真系统上实现设计,则是一种更加准确地估算和调整功耗的方法。