首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

优化FPGA功耗:立竿见影

优化FPGA功耗:立竿见影

本文对新型 7 系列 FPGA 在开发过程中各个环节的低功耗设计技巧进行了概括。
作者:Chandra Sekar Balakrishnan
解决方案开发工程师
赛灵思公司
cbalakr@xilinx.com

为设计寻找“完美”FPGA 的重要性日渐升级,其中功耗已成为主要考虑因素。功耗管理在大部分应用中都非常关键。某些标准已为单卡或者单个系统设定了功耗上限。鉴于此,设计人员必须在设计过程中更早地对功耗问题加以考虑,一般来说应该从选择 FPGA 开始。
减少 FPGA 的功耗可以降低供电电压,简化电源设计和散热管理,降低对电源分配面的要求,从而简化电路板设计。低功耗还可以延长电池寿命,提高系统的可靠性(运行温度较低的系统寿命更长)。
功耗挑战
伴随每一代工艺技术的问世,晶体管的尺寸可依照摩尔定律不断缩小。但这种现象也会带来副作用,即每个晶体管内的漏电流会增大,进而导致静态功耗增大(未工作状态下 FPGA 消耗的总电流增大)。FPGA 性能的提升会提高时钟速率,使动态功耗上升。静态功耗是晶体管漏电流造成的,动态功耗则取决于可编程逻辑和 I/O 的开关频率。由于每一代 FPGA 的容量都在增大,会使两种功耗不断增加。更高的逻辑容量意味着每个器件会有更多漏电流和更多在更高速度下运行的晶体管。

鉴于这些问题的存在,设计人员必须在设计过程中尽早对电源和热管理问题有更加清楚的认识。给器件加上散热器并不足以解决这些问题。因此设计人员必须尽量减少设计中的逻辑用量。
首先来看几点指南,有助于理解在设计过程各个阶段应采取何种措施来降低FPGA的功耗。很明显,在设计过程的初期彻底理解这些问题能带来最大的收益。
图 1 说明了包括 FPGA 选择以及低功耗设计技巧在内的贯穿整个设计过程的不同设计点


7 系列工艺技术
在选择 FPGA 的过程中, 应谨慎考虑工艺技术,它能帮助用户判断器件的漏电流和性能。赛灵思 7 系列FPGA 采用 28 HPL (28nm 高性能低功耗)工艺,在提高性能的同时可显著降低功耗(见第 41 期《赛灵思中国通讯》的封面故事)。选择采用低漏电流的 HPL 工艺制造的器件,可以避免在FPGA 设计中使用复杂且成本高昂的静态功耗管理方案。

尽管 28 HP 工艺 FPGA 的性能并没有超越 7 系列的其它 FPGA,但其静态功耗还不到竞争对手 FPGA 静态功耗的一半,而且不会造成严重的漏电流问题。图 2 显示了 7 系列产品的全面降耗情况,整体功耗仅为上一代40nmFPGA 器件的一半。


设计人员可以在开发阶段选择较大的 FPGA,然后在生产过程中选择较小的 FPGA。选择较小的 FPGA 不仅可以降低成本,还能降低系统功耗。
所有 7 系列 FPGA 均采用统一的架构。这种统一架构便于在赛灵思 7 系列的不同 FPGA 器件之间方便地进行向上或向下迁移。如果需要从 Virtex®-6 或者 Spartan®-6 器件迁移至7 系列器件或者在 7 系列器件之间迁移,请参阅“7系列用户指南”(UG429)。


赛灵思堆叠硅片互联技术
对较大的系统来说,设计人员一般会选择多个 FPGA。这种架构往往需要在各个 FPGA 之间高速传输数据,这是一项复杂、困难的工作。选择采用赛灵思堆叠硅片互联技术制造的大型 7 系列 FPGA,比如 XC7V1500T 和XC7V2000T 器件,就可以避免这个问题。简单地说,堆叠硅片互联技术就是将多片芯片布置在具有成千上万连接关系的插入式结构中,用以制造统一的大型器件。堆叠硅片互联技术的优势之一在于,与采用标准单片电路的类似尺寸的器件相比,可显著降低静态功耗。

堆叠硅片互联技术 (SSI) 还能大幅度降低 I/O 互联功耗。与在电路板上布置多块 FPGA 的方法相比,SSI 技术有很大的优势,其 I/O 互联功耗比采用 I/O 和收发器构建的等效接口低 100 倍(带宽/W)。功耗大幅下降是因为所有连接都构建在芯片上,无需功耗将信号驱动到片外,这样可实现难以置信的高速度和低功耗。
电压扩展增强选项
赛灵思 7 系列 FPGA 提供重要的电压扩展选项。

7 系列 FPGA 为 -3L 和 -2L 器件提供扩展 (E) 温度范围(0-100 摄氏度)。由于 28 HPL 工艺提供的余量,-2LE 器件可在 1v 或 0.9v 下运行。这些器件被分别命名为 -2L (1.0V) 和 -2L(0.9V)。运行在 1.0V 下的 -2L 器件的速度性能与 -2I 和 -2C 器件相当,但静态功耗显著降低。运行在 0.9V 的 -2L 器件性能与 -1I和 -1C 器件相似,但静态和动态功耗都有所下降。
仅仅将这些器件的电压降低到0.9V 就可降低静态功耗约 30%。降低电压也会降低性能,但赛灵思根据速度和更加严格的漏电流规格对这些 -2L(0.9V) 器件进行筛选。这种筛选方法能够使器件在最劣工艺条件下的功耗比标准速度等级器件的功耗降低 55%。
选择 -2L 器件,用户还能进一步降低动态功耗。由于动态功耗与 VCCINT2成正比,VCCINT下降 10% 可带来功耗20% 的降幅。
功耗估算工具
今天的市场上有丰富的工具可供设计人员选择,用以在整个开发过程中评估 FPGA 设计的散热和电源要求。图 3是FPGA 开发过程中每个阶段可供使用的赛灵思工具。


为降低功耗,用户必须尽一切可能减少设计中使用的逻辑数量。首先是使用专用的硬件模块,而不是在 CLB 中实现相同的逻辑。
在设计初期,XPower Estimator(XPE) 电子数据表能够在初步设计和实施之前对功耗进行早期估测。XPE 可用于架构评估和器件选择,帮助确定应用所需的合适的电源和散热管理组件。
PlanAheadTM 软件则用于估测设计电源在 RTL 级的分配情况。设计人员可以使用约束条件或者 GUI 来设定器件的运行环境、I/O 属性和默认活跃度。PlanAhead 软件随即读取 HDL 代码,估算所需的设计资源,并对每种资源的运行状态进行统计分析,得出功耗估算报告。由于能够掌握有关设计意图的更加详细的信息,因此 RTL功耗估计器的准确性优于 XPE 电子数据表,但不及Xpower Analyzer 得出的后期布局布线分析结果准确。
Xpower Analyzer (XPA) 是一种专门用于分析布局布线设计功耗的工具。它采用全面综合的GUI,可以对特定运行条件下的功耗和发热量信息进行详尽的分析。
用户可以在两种不同视图间切换,用以确认各种类型模块(时钟树、逻辑、信号、IO 模块、 BRAM 等硬 IP核或 DSP 模块)的功耗或设计层级功耗。两种视图都能让用户进行详细的功耗分析。并为确定设计中最耗电的模块或部件提供了一种非常有效的方法,从而简化了功耗优化工作。
软件功耗优化
用户可通过尽量减少同时工作的 Block RAM 端口的数量来优化使用Block RAM 的设计的功耗。这种优化方式可对跨多个 Block RAM 的 RAM或 ROM 分解的描述进行修改,可通过XST 中的“-power yes”选项来启用优化功能。该优化通过调整地址线以及端口使能和写使能信号来最大程度地减少每个时钟周期中处于活动状态的 Block RAM 端口的数量,同时能够确保用户的设计满足时序约束条件。

下一步,不考虑性能影响,强制进行最高能效的 Block RAM 映射。选择ram_style 约束的 block_power2 选项,前提是用户已经知道与该存储器相关的时序路径并非关键路径。节能幅度可达15% 至 75%。
另外,还可以使用 XST 中的区域优化模式。该选项可以最大程度地减少设计使用的资源数量。但应注意进行区域优化可能会降低性能。
另一种技巧是进行活动感知优化,或者说智能门控。这些算法能够分析逻辑等式,检测在每个时钟周期中有哪些寄存器源没有参与结果运算。软件随后利用 FPGA 逻辑中可用的多余时钟使能 (CE) 资源生成精细门控信号,用于关闭无用的开关活动。用户可使用 map–power high 选项控制该智能时钟和数据门控功能。总体可降低超过 15% 的内核动态功耗,在大多数情况下插入的额外门控逻辑不会影响性能。
还有一种降低功耗的方法是使用容量感知优化。主要有两种方法:
• 时钟负载分组:该方法对同步元件(比如触发器或者 DSP 模块)的布局进行重组,以最大程度地缩小每个时钟网络的覆盖范围。如果用户将水平或垂直时钟柱的数量降到最低,软件就能关闭时钟域中不用的分支。这样可以同时降低时钟资源和缓冲要求,进而节省内核动态功耗。这个过程可以用 map –power on选项来控制。

• 数据负载分组:这种算法能够在保证用户满足性能要求的情况下最大程度地缩短设计的总体走线长度。数据负载分组可以降低功耗的原因在于,动态功耗取决于扇出能力和用户布线结构的类型和长度。该分组算法同样由 map –power on 选项启用,通过将相关逻辑尽量靠拢的方式降低功耗。
ISE® Design Suite 为综合、映射和布线布局的功耗优化提供了预先设定的目标和策略。对于采用非默认约束条件对综合进行设置的方法来说,该方案是一种很好的替代选择。但是运行该选项可能会增加各个路径的时延。
最后,赛灵思实现工具能够自动关闭未使用的收发器、锁相环、数字时钟管理器和 I/O。在7 系列器件中,赛灵思已经加入了针对未使用 Block RAM 的电源门控功能。只有当用户在设计中使用 Block RAM 时才会产生漏电流,而非器件中所有 Block RAM 都会产生漏电流。在器件中,只对实例化的 Block RAM 供电,对未使用的 Block RAM 不供电。


低功耗设计技巧
设计人员可使用多种技巧和技术来降低 FPGA 设计的功耗。首先是使用专用的硬件模块,而不是在 CLB 中实现相同的逻辑。为降低功耗,用户必须尽一切可能减少设计中使用的逻辑数量。这样用户就能够尽量缩小器件尺寸,降低静态功耗。

使用专用的硬 IP 模块是既能降低静态和动态功耗,又能轻松满足时序要求的最重要途径之一。硬 IP 核能够降低静态功耗的原因在于晶体管的总体数量低于采用 CLB 逻辑的等效组件。
一般情况下,用户应推导出尽可能多的资源。用户可利用代码中或者约束文件中的属性,将推导出的资源单独或分组调入 FPGA 架构或者硅片资源。用户也可使用赛灵思 Core GeneratorTM工具定制专用硬件,用于实例化特定的资源。
另外,用户可以将未使用的硬 IP核巧妙地用于其它并不明显的任务。DSP48 slice 能够用于多种逻辑功能,比如乘法器、加法器/累加器、宽幅逻辑比较器、移位器、模式匹配器和计数器。用户可将 Block RAM 作为状态机、数学函数、ROM 和宽幅逻辑查找表(LUT) 使用。
控制信号的最佳利用
控制信号(用于控制时钟、设置、复位和时钟使能等同步元素的信号)可以影响器件的密度、利用率和性能。以下方法有助于将功耗影响降至最低。

首先应避免在寄存器或者锁存器上同时使用设置和复位。赛灵思 FPGA 中的触发器可同时支持异步和同步复位和设置控制。但是底层触发器每次只能完成一次设置、复位、置位或者清除。在RLT 代码中为一项以上的这些功能进行编码会导致在实现一种状态时使用触发器的 SR 端口,其余的状态在架构逻辑中实现,故占用更多的 FPGA 资源。
如果一个状态是同步的,另一个是异步的,异步状态将成为使用 SR 端口实现的状态,而同步状态将在架构逻辑中实现。总的来说,最好避免一种以上的设置/复位/置位/清除状态。另外,一个 slice 中的4个触发器组中,每个组只有一个属性能够判断触发器的 SR 端口是同步还是异步。
另外,应使用高态有效控制信号。寄存器的控制端口为高态有效。不建议在 FPGA 设计中使用低态有效复位。由于需要在驱动寄存器的控制端口之前对信号进行反转,因此低态有效信号需要使用更多的查找表。这种反转必须使用查找表完成,故会占用查找表输入。
因此,低态有效控制信号可能会导致更长的运行时间,降低器件的利用率,给时序和功耗造成不良影响。
尽量在 HDL 编码或者实例化组件中使用高态有效控制信号。只要能够控制设计中控制信号的极性,用户就应在代码的最顶层反转信号。I/O 逻辑能够容纳推导出的反转器,无需额外的FPGA 逻辑或者走线,故能够改善利用率、性能和功耗。
采用部分重配置,设计人员能够有效地按时间段对 FPGA 进行划分,并单独运行设计的各个组成部分。这种设计需要的器件尺寸要小得多,因为不是设计的每个部分都需要一直运行。
非必要的设置或复位
代码中的非必要设置或复位会导致本来可以推导出的移位寄存器查找表(SRL)、查找表 RAM、Block RAM 和其它逻辑结构不能推导。虽然设计人员可能会觉得别扭,但许多电路都可以设定为自复位或者根本就不需要复位。例如,如果电路被用于实例化寄存器,就不需要复位,因为寄存器的初始化随配置的完成自动进行。

通过减少使用非必要的设置或复位,以及更高的器件利用率,设计人员可实现更好的布局、更高的性能、更低的功耗。
关于复位的详细介绍, 请参阅 http://issuu.com/xcelljournal/docs/xcell_journal_issue_76/44?viewMode=Ma...
如果用户还想进一步降低功耗,另一个值得注意的方面是时钟和Block活动。用户应充分发挥BUFGMUX、BUFGCE 和 BUFHCE 的作用来对整个时钟域进行门控,以达到降低功耗的目的。这些约束条件能够关闭整个时钟域的时钟。类似的,如果应用只需关闭设计中部分区域的时钟,可以使用 FPGA寄存器的时钟使能引脚。
覆盖多个时钟域的设计会消耗更多时钟资源,也会消耗更多功耗。只要可能,应将间歇使用的逻辑布置在单个时钟域(图 5)中。这样有助于降低功耗。虽然工具会自动进行这方面的尝试,但在部分设计中需要手动操作才能完成。


另一项技巧是限制数据的运动(图6)。请勿将操作数在 FPGA 内搬移,仅搬移结果。使用的总线数量越少,长度越短,容量就越低,运算速度就越快,同时功耗也就越低。设计人员还应该在布局规划的过程中注意将设计的引脚与相应逻辑进行合理布置。


部分重配置降低静态功耗
可以使用较小型的器件来降低静态功耗。采用部分重配置,设计人员能够有效地按时间段对 FPGA 进行划分,并单独运行设计的各个组成部分。这种设计需要的器件尺寸要小得多,因为不是设计的每个部分都需要一直运行。

部分重配置既可降低动态功耗,又可降低静态功耗。例如,许多设计必须高速运行,但它们峰值性能的运行时间可能很短。为节省功耗,设计人员可以利用部分重配置技术,为高性能设计添加一个可切换的低功耗版本,而不是一直处于最高性能下运行。在系统需要的时候,可以切换回高性能设计。
这个原则也适用于 I/O 标准,特别是在设计不是随时都需要高能耗接口的时候。LVDS 需要较大的直流电供电,因此不管其活动程度如何,均属于高能耗接口。设计人员可采用部分重配置,在设计不需要最高性能的时候,将 I/O从 LVDS 切换到较低功耗的接口,比如LVCMOS,然后在系统需要进行高速传输的时候切换回 LVDS。
时序约束对低功耗设计来说也具有重要意义。如果用户在温控环境中运行,请注意可以降低器件的速率来满足时序要求。请务必让器件的运行速率不超过设定的时钟最高速率。让时钟的运行速度更快并不会收到更好的设计效果!一般来说,这样做会占用更多的架构资源,因为这会减少资源共享,增加逻辑/寄存器数量,增加布线,减少对FPGA 专用功能的调用。所有这些都会给动态功耗造成显著影响。
I/O 功耗已经成为总功耗的主要组成部分。在部分设计中,有高达 50%的功耗来自 I/O,尤其是在存储密集的系统中。
可编程的转换速率和驱动强度能够降低 I/O 驱动的动态功耗。虽然许多设计人员青睐高速差分I/O 功能,但不是每个接口都需要。像 HSLVDCI 这样的标准能够节约大量 FPGA 间的通信功耗以及低速存储器接口功耗。
所有的赛灵思 7 系列器件都能够提供可编程的转换速率和驱动强度。赛灵思 FPGA 采用数字控制阻抗 (DCI) 技术,可设置为三种状态。DCI 可以避免在FPGA 向存储器写入的过程中产生端接功耗,故器件只在读取的时候才产生端接功耗。
7 系列器件包含针对 HSTL 和SSTL 的用户可编程参考接收器功耗模式。用户可以根据 I/O 的具体情况控制这两种可编程功耗模式,使用户能够在功耗和性能之间求得平衡,从而降低DC 功耗。
收发器功耗
赛灵思 7 系列 FPGA 的收发器已针对高性能和低抖动进行了优化。这些收发器能够提供多种低功耗运行功能,便于设计人员定制灵活的运行模式和尺度,以实现功耗和性能的平衡。

在 7 系列 FPGA 中,共享 LC 锁相环可降低大量功耗。对具有相同线速的四通道设计(比如 XAUI)来说,可使用一个四 PLL(而不是单通道 PLL)来降低功耗。类似的,在某些情况下,由于 PLL 在允许的范围内既能高速运行又能低速运行,最好选择较低的运行范围来降低功耗。
用户还可以选择启用单独的 TX/RXPOWERDOWN 选项。在最低功耗模式下可启动 PLL 功耗降低选项(比如在经常用于 PCIe® 系统的 D3 状态下)。
设计过程的每个阶段
在编码前理解和运用节能设计技巧是降低系统功耗的最重要的方法。在设计过程的适当阶段使用各种赛灵思工具也有助于帮助用户满足功耗规范,同时为板级设计人员提供了关于选择必备电源的数量、类型和规格的信息。赛灵思7 系列 FPGA 通过采用工艺技术和架构设计,实现了前所未有的能耗经济性。

本文中提到的许多技巧在 FPGA 功耗优化培训课程中均有详细介绍。了解赛灵思培训课程的详细内容,请访问:
www.xilinx.com/cn/training
记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表