登录注册   忘记密码

想要节省芯片开发成本?这个方法得知道

当今的高端片上系统(SoC)在处理日益增长的密集型计算工作时,需要考虑并权衡其功耗与性能。随着人工智能 (AI) 和深度学习的需求激增,人脸识别成为了手机中至关重要的功能之一,并扩展到智能可穿戴设备,通过增强现实和虚拟现实来进行物体和周围环境的识别。与此同时,自动驾驶应用端也使用深度学习来解读并预测周围环境的数据,以实现更安全、更智能的自动驾驶。


为了同时优化功耗和性能,软硬件需要更加紧密地结合在一起。并在研发的早期阶段选好关键架构,软硬件工作负载分配和IP方案。当今的SoC需要数百万美元的投资,所以准确估算SoC的功耗是决定芯片成败的关键因素。


准确估算功耗的重要性

芯片中的大多数处理元件都会长时间进行繁忙的计算,所以无论是智能手机还是自动驾驶汽车,目标设备的功耗都必须符合其功耗预算。


在讨论如何尽早并准确地估算功耗之前,让我们先简要了解一下设计人员是怎么对功耗进行计算的。


—台设备的功耗(Ptotal)可分为两种:开关活动引起的动态功耗(Pdynamic)和静态功耗(Pstatic)。图1总结了影响这两个组成部分的主要参数。

 image1.jpeg

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

图2显示了工艺技术扩展对动态功耗和静态功耗的影响。随着我们的技术节点变得越来越小,动态功耗也随之下降。由于漏电流增加,静态功耗的占比越来越突出(左图)。同一技术节点

(右)中电池的阈值电压也会影响频率/延迟和漏电功耗。


为了获得更高的频率和性能,设计人员可能倾向于使用低电压阈值的电池。这会增加漏电流,也应当计入静态功耗。在设计过程中,我们需要不断地权衡、取舍,从而在功耗和性能之间取得平衡。

image2.jpeg

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


如何降低功耗

设计人员可以应用各种降耗技术来降低功耗,例如以下这些方法:

    门控时钟可在不处理运行时减少开关活动。

    电源门控会关闭大部分不运行的功能以减少漏电。

    在实现物理设计的过程中,可利用具有不同阈值电压的电池进行平衡,以实现最佳时序和功耗。

    通过布局优化可减少拥塞并改善时序,从而降低布线电容。

    在架构层面,设计人员可以优化内存管理并减少系统中的数据移动。尽管减少DRAM带宽并不能完全改善IP功耗,但对SoC功耗的影响确实很大。


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


1、功耗(瓦特)

动态功耗与性能密切相关。设计人员只需减少单位时间完成的计算量,即可获得几乎任意低的功耗值。对于计算量高的应用而言,系统功耗低并不一定代表能效更高。单独的“功耗”指标没有任何意义,除非将它和系统级应用的性能相关联,例如已知的工作负载下,每秒的循环次数或帧数。


2、能效(每秒运算数/瓦特)

该指标虽然结合了性能和功耗,但是每秒运算数(Ops)的定义对于特定应用的IP通常都是模棱两可的。MAC/s/Watt等衍生指标将卷积神经网络(CNN)图表简化为乘法计算,而在实践中,AI最大的架构挑战之一则是需要在系统中不断移动大量数据以得到最佳乘数。每秒运算数/瓦特指标中没有明确考虑这一点,该指标还排除了激活函数和池化等其他运算,而这些运算在处理循环中可能也会有一定的影响。每秒运算数/瓦特指标还假定了理想(或至少恒定)的硬件利用率,这在现实应用中是不太可能在所有层和特征图尺寸中实现的。

 

3、能量(焦耳/帧)

该指标不仅包含MAC运算,还纳入了基准测试图中所有层的类型和特征。它还反映了是否能够高效地将图形映射到硬件,以进行计算和数据移动。以焦耳/帧为单位的能量是评估CNN应用功耗的最准确指标。


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


设计人员经常测量诸如多层SegNet图(图3)之类的图中单个卷积层的能效。采取这样的捷径可能也会导致结果出现误差,可能的原因有三种:

    不同尺寸的卷积层具有不同的硬件利用率,而这种差异会影响总功耗。

    一个卷积层可以用在图形的不同位置,而每个位置都施加不同的输入数据分布。

    不同的图形架构会影响输入数据的分布和要完成的处理类型。例如,值约为零的特征图和权重每次相乘所需的功耗相对较少。


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

image3.jpeg

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


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

    RTL:功能正确且在HDL仿真器中执行起来相对较快,但不包含任何功耗信息。在功耗估算期间,必须在网表中标注开关活动,但开关活动绝不能覆盖100%的引脚。

    综合级网表:所有逻辑都映射到单元,但是时钟树实现不完整,电容无法准确建模,这会影响功耗估算的准确性。

    全版门级网表:完成了所有物理实现细节,并且可以使用所有层的布线模型来提取实际负载电容,这就进一步提高了功耗估算的准确性。


实际实现过程中捕捉的细节越多,功耗估算就越准确。小型综合基准的RTL仿真可能只要几分钟即可完成,但对于网表,则可能需要几小时甚至几天的时间。


仿真非常有深度的CNN图(包括所有实现细节)可能需要几周的时间。如此长的仿真时间又增加了风险,因为IP供应商可能会跳过此类详细的功耗分析和准确的功耗估算,结果导致实际功耗可能会超出预算,继而在SoC功耗签核阶段出现明显的产品风险问题。


准确计算功耗的利器

为了能够在全版网表上执行数十亿次CNN图运算,以尽量准确地执行功耗测量,仅仅使用仿真工具是不够的。


新思科技的ZeBu仿真平台提供了一种解决方案,可以帮助IP开发人员和SoC设计人员在几分钟或几小时内(无需几周或几个月)为数亿个处理循环准确地计算功耗。ZeBu服务器还支持高级使用模式,包括能耗管理验证、利用新思的验证生态系统进行综合调试和集成、利用虚拟原型进行混合仿真,以及架构探索和优化。


因此,使用ZeBu仿真器不仅可以轻松地探索各种备选硬件架构中应用软件的功耗及其性能,还可以有效地实现签核质量的功耗估算,从而有助于在设计周期的各个阶段调整系统所有元件的功耗。

使用新思科技的DesignWare®ARC®EV7x视觉处理器的设计人员已采用Zebu对软件的功耗在签核流程中进行估算,以便在使用EV7x处理器处理高性能深度学习应用时获得最准确、最切实的功耗估算效果。

 

结语

估算SoC中AI应用的IP模块的功耗是非常困难的。设计人员需要周密的考虑功耗估算过程的方方面面,才能确保在产品开发初期做出最正确的决策,最终使得芯片功耗不超出预算。相较于在各个卷积层分别获取的估算值来说,在ZeBu服务器等仿真系统上实现设计是可以更加准确地估算以及调整功耗的优选方式。

您的评论:

0

用户评价

  • 暂无评论