FPGA互连功耗优化技术

通过电路和计算机辅助设计技术实现现场可编程门阵列互连的功率优化

摘要

我们要的目标是降低现场可编程门阵列(FPGA)互连中的功耗,并提出三种利用FPGA独特特性的方法,即存在 unused 布线导体。第一种技术通过将邻近已使用导体的未使用导体置入高阻态,从而降低已使用导体所承受的有效电容,以减少动态功耗。第二种技术为电荷回收,将未使用导体重新用作电荷存储器,以减少在已使用导体上发生正向转换时所需的供电电流。第三种方法采用脉冲信号技术,减少互连缓冲器中的泄漏电流,使驱动缓冲器在逻辑转换后可进入高阻态阶段。这三种技术均需要在路由阶段提供计算机辅助设计支持,以促进未使用导体相对于已使用导体的特定布局。

CCS概念

  • 硬件→可重构逻辑和现场可编程门阵列;可编程互连;

关键词

现场可编程门阵列,物理设计,低功耗,路由

1. 引言

现场可编程门阵列(FPGA)长期以来被用于通信和工业应用,如今在高性能计算领域也逐渐获得关注,常与传统处理器协同使用,实现可提升计算吞吐量和能效的加速器。英特尔近期以160亿美元收购领先的FPGA供应商阿尔特拉,以及微软在必应搜索加速中使用FPGA [10],都确保了FPGA在未来数据中心中的存在。然而,在计算光谱的另一端,即低功耗/移动/物联网领域,FPGA的发展却相对有限,主要原因是其功耗较高,最近的研究 [6] 表明其功耗比专用集成电路高出数倍。本文提出了一种结合架构、电路和用于降低FPGA互连功耗的计算机辅助设计技术,FPGA互连占据了现场可编程门阵列中大部分的动态和泄漏功耗 [13, 12]。

我们提出了三种用于降低FPGA互连功耗的技术,这些技术依赖于现场可编程门阵列的一个独特特性——在FPGA中实现的特定应用电路仅使用其底层互连资源的一部分,而许多资源处于未使用状态。所提出的技术以多种不同方式利用了这些未使用的资源。其中两种技术针对动态功耗;第三种技术则针对漏电功耗。这三种技术的共同点在于,它们在流程的路由阶段需要非常相似的计算机辅助设计支持。具体而言,这三种技术要求尽可能使FPGA互连中的已使用导体在物理上与未使用导体相邻。

互补金属氧化物半导体电路中逻辑信号消耗的动态功耗由以下公式给出:α·C·VDD·Vswing,其中α表示信号的翻转频率,C为电容,VDD和Vswing分别为电源电压和摆幅电压。在第一种方法中,[4],我们通过降低已使用导体对未使用相邻导体的层内耦合电容来优化C项。这是通过一种轻量级开关缓冲器设计实现的,该设计允许将未使用的相邻导体置于高阻态,从而使耦合电容与其他电容串联,进而降低有效电容。在第二种方法中,我们通过charge recycling至/自相邻的未使用布线导体[3]来针对Vswing。其核心思想是在现场可编程门阵列路由结构中将布线导体成对组合,使得当其中一条导体未使用时,它可以作为已使用导体的电荷储存器。在下降转换期间通常耗散到地的一部分电荷反而被储存在该储存器中,并在上升转换期间回收给已使用导体,从而减少Vswing并节省功率。

然后,我们提出了一种降低FPGA互连结构漏电功耗的新方法。我们提出了脉冲信号技术,其中驱动互连的缓冲器“脉冲”在短时间内将其预期信号值传递给接收缓冲器,之后进入高阻抗(低泄漏状态),而不是像传统的CMOS信号那样持续保持该值。尽可能使已使用导体相邻的导体保持未使用状态,以减轻噪声并确保接收缓冲器“捕获”的逻辑值不受干扰。同样,这种方法依赖于FPGA计算机辅助设计流程的路由阶段中的噪声减少支持。据作者所知,这是首次在FPGA背景下提出脉冲信号技术。

本文的其余部分组织如下:第2节介绍FPGA互连架构的相关背景知识。第3节总结了用于动态功耗降低的电荷回收和电容减少技术。第4节介绍了用于泄漏减少的脉冲信号技术。CAD支持在第5节中讨论。实验结果出现在第6节,随后是结论和未来工作。

示意图0

2. 背景

FPGA互连由金属线段组成,这些线段可通过互连开关可编程地连接到逻辑块引脚以及彼此之间。图1(a)显示了一个由多路复用器(MUX)、缓冲器和SRAM配置单元组成的FPGA路由开关。MUX的数据输入连接到逻辑块输出引脚和/或其他布线导体。SRAM单元的内容选择某个特定输入以驱动至开关输出,该输出连接到逻辑块输入或布线导体。图1(b)中的晶体管级视图说明,MUX通常由NMOS晶体管构成,而缓冲器则通过晶体管MP1实现“电平恢复”,其作用是在逻辑1通过基于NMOS的MUX时将缓冲器输入拉至电源轨。最先进的Xilinx和阿尔特拉FPGA使用此类单向缓冲开关。

两家主要的商业FPGA供应商使用PathFinder协商拥塞路由算法[9]的一种变体。在PathFinder中,器件互连被表示为一个有向图G(V, E),其中每个v ∈ V代表一个导体,每个e ∈ E代表两个导体之间的可编程连接。因此,将信号从其驱动器路由到其负载的问题转化为在G中对应于驱动器/负载引脚的顶点之间进行最低成本搜索的问题。PathFinder算法允许在路由过程的中间阶段出现信号之间的短接。拥塞消除通过基于节点过订用的成本调整以及拆线重布线来处理。信号时序关键性信息被用来鼓励将设计中时序关键的连接通过FPGA结构中的低延迟路径进行路由。

3. 动态功耗降低技术

3.1 降低有效互连电容

我们最近提出了一种技术,用于减小加载在路由线上的有效电容 [4]。该方法的灵感来源于对路由缓冲器输出端所见电容的分析:该电容主要是被驱动的金属互连线的寄生电容。图2a中注释了路由导体总寄生电容的不同组成部分。

该图表明,布线导体的电容是由于同一金属层上相邻金属导体之间的耦合电容(CC),以及与相邻层上其他导体重叠产生的平板电容(CP)所致(相邻层被表示为地)

示意图1

目前,CC占总互连电容的主导地位:ITRS预测表明,CC大约是CP的两倍(并且预计这一比例将继续增加)[5]。这一事实被用来降低互连导体的有效电容,因为总电容等于Ctot ≈ 2CC+2CP,如果CC减少,则将显著降低Ctot。我们减少CC的技术基于对路由导体在同一金属层上朝向相邻路由导体时所“看到”的电容的分析。

图2a显示了三条布线导体及其相应的驱动电路。布线导体1通过耦合电容器CC1与导体2耦合,类似地,导体2通过CC2与导体3耦合。从导体1的角度来看,导体2以及耦合电容器CC1和CC2共同构成了如图2b所示的等效近似电路。在该图中,Req是驱动导体2的驱动器的有效输出电阻,并假设驱动导体3的缓冲器的有效驱动电阻接近于0(该导体接地)。该电路的输入阻抗在拉普拉斯(s)域中具有以下传递函数:

$$
Z_{in}(s) = \frac{Req(2 \cdot CC + CP)s + 1}{CCs[Req(Cc + Cp)s + 1]}
$$

其中假设CC1 = CC2 = CC。现在我们注意到,如果Req >> 1/(2·CC + CP)/(CC + CP),则Zin(s) ≈ (CC + CP)/CC。这意味着,如果导体未被使用,并且其驱动器阻抗可以设置得较大,则从导体1朝向导体2看去的等效阻抗即为电容器CC1与series中电容器CC2和CP的并联组合的阻抗,这表明路由导体1上的有效寄生负载因此可以reduced。一个具有合理小的等效输出电阻的缓冲器,若能将其置于三态模式,则可使其输出电阻变得大得多。将缓冲器置于三态模式需要断开到VDD或GND的所有路径,以确保到任一电源轨都没有低阻抗路径。

在[4]中,我们提出通过将活动布线导体相邻的未使用导体置于三态模式,以降低活动布线导体中的功耗。只有当一个活动布线导体与一个或多个未使用的布线导体相邻时,才能观察到寄生电容减小。由于所提出的技术要求路由缓冲器具备可置于三态的能力,因此我们还提出了一种面积间接费用最小化的三态缓冲器结构,专门针对FPGA互连驱动器设计。

3.2 电荷回收

我们提出的另一种利用未使用布线导体的技术是电荷回收 [3]。其思想是利用在先前转换中耗散的能量,从而主动回收“已使用”的电荷。在传统逻辑电路中,当导体发生下降转换时,导线上的存储能量——等于CV²DD/2,其中C是导线电容——会完全耗散。相反,电荷回收技术将部分通常耗散的电荷存储在次级节点(电容器)中。这些电荷随后可以输送至发生上升转换的导线,从而复用原本会丢失的部分能量。该技术的整体原理如图3和图4所示。

示意图2

图中显示了两个电容器,CL为负载电容,CR为用于存储回收电荷的储能电容。开关将CL连接到VDD或GND,另一个开关可用于将两个电容器连接在一起。在图3中,我们看到CL初始时连接到VDD,且CR中没有存储电荷。在CL处发生下降转换时,电路首先经历一个charge recovery phase阶段,其中CR和CL相连(VDD和GND均与CR断开)。由于这两个电容器的电容相等,通过电荷共享,最初存储在CL中的一半电荷将转移到CR,因此这些电容器的电压将稳定在VDD/2。在电荷恢复阶段结束后,两个电容器断开连接,CL连接到GND,从而完全放电。

在图4中,CL最初连接到GND,由于先前的下降逻辑转换的电荷恢复阶段,CR处的电压等于VDD/2。在上升转换期间,电路最初经历一个chargerecycling phase阶段,其中CR和CL相互连接,而VDD和GND电源轨均断开。通过电荷共享,CL处的电压将上升(同时CR处的电压将下降)至VDD/4。在CL处的电压稳定后,CR和CL相互断开,CL连接到VDD以完成向逻辑1的完整转换。注意,在此示例中,实际从VDD电源轨汲取的电荷量为0.75·CL·VDD,而非CL·VDD。也就是说,能量立即减少了25%。

为了降低布线网络的功耗,我们提出了一种FPGA架构,其中未使用的布线导体被重新用作电荷存储器,它们从配对的已使用布线导体上的下降转换中存储电荷,并允许在上升转换时回收该电荷。

为了实现期望的行为,我们设计了图5所示的缓冲电路,该电路包含一个中间级,根据缓冲器的工作模式向M1和M2(构成缓冲器输出级)的栅极施加适当的信号。有关详细描述,请参见

电路结构,读者可参考[3]。在电荷回收模式下工作时,该技术可使缓冲器的动态功率降低∼26%,与理论最大功率降低33%相比具有明显优势。

4. 用于漏电功耗降低的脉冲信号

现场可编程门阵列中的布线导体连接到大量路由多路复用器,这些多路复用器通常具有大量输入以确保足够的路由灵活性。为了优化面积‐延迟权衡,路由多路复用器通常采用传输晶体管构成的两级拓扑 [1]。然而,这些路由多路复用器包含多个漏电路径,导致FPGA互连中耗散显著的漏电功耗。面对亚10nm时代即将到来的问题(如直接源‐漏隧穿(DSDT)),在不牺牲路由灵活性的前提下降低FPGA互连中的漏电功耗已成为关键。

为了降低泄漏,我们首先注意到互连网络中路由缓冲器的输出阻抗在流经/流入路由多路复用器的漏电流中起着关键作用。传统的路由缓冲器提供低阻抗路径(无论是从VDD还是到GND),而漏电流正是通过这些路径流动的。如果我们能够增加这些路径的阻抗,则可能减少漏电流。然而,简单地增加路由缓冲器的输出阻抗并不是可接受的解决方案,因为这将导致性能损失。但需要注意的是,缓冲器的输出阻抗仅在其传输数据过程中(即其输出发生转换时)需要保持较低;而在其他所有时间,若能保持高输出阻抗,则可减少漏电功耗。为实现这一期望行为,我们提出将现场可编程门阵列中的传统路由缓冲器(见图1)替换为在未进行数据发送时处于三态、并在其输入端发生转换时动态激活的路由缓冲器。在接下来的章节中,我们将详细说明实现该漏电功耗降低技术所需的电路级修改和计算机辅助设计支持。

4.1 脉冲信号电路

Fig图.6展示了所提出的路由缓冲器,如图所示,该缓冲器大致可分为四个阶段:接收级、门控级、输出级和低漏电保持级。从接收级开始,我们注意到,与传统FPGA路由缓冲器的第一个阶段由一个反相器和反馈连接的电平恢复PMOS晶体管组成不同,本缓冲器的第一级由一种异步全再生接收器。由于路由缓冲器上游的布线导体在数据跳变传输完成后会处于低泄漏模式,且如本节后续将阐明的,布线导体的电压倾向于偏离VDD或GND,因此必须使用再生接收器(实质上是一个锁存器)。在这种情况下,保持状态的责任落在接收器上,因而需要其具备完全再生能力。为了消除漏电路径,我们提出使用耦合电容CC将路由多路复用器的输出与接收器的输入进行电容耦合;这种方法与先前提出的交流耦合片上互连[2]有一定相似之处,尽管之前的技术是将耦合电容放置在路由驱动器的输出端,以期提高性能并减小信号摆幅(从而降低功率)。虽然CC的实现方式有多种选择,但我们建议采用金属‐绝缘体‐金属(MIM)电容器,因为它具有高电容密度(∼1‐10 fF/µm²)、低串联电阻,并且通常不需要额外有源区。在65nm工艺中,我们认为一个5fF的MIM电容能够容纳在每个路由多路复用器的占位面积内,因此无需额外面积,并且对整体布局和成本的影响较小。

虽然5fF的电容足够大,可以在驱动节点VA处的寄生电容时提供足够的信号摆幅,但我们必须确保再生接收器反馈路径的输出阻抗非常高,否则由CC注入到VA的电荷将立即被耗散。另一方面,接收器的再生时间(即延迟)与反馈路径的输出阻抗成反比关系。为了平衡这两个要求,采用了一种具有迟滞特性的再生接收器;我们对该拓扑结构的晶体管尺寸设计进行了优化,以确保在晶体管参数(特别是VT)存在6σ变化以及CC的电容存在±10%变化的情况下,仍能实现可靠的数据传输。

在VINB处发生上升(或下降)转换后,输出级立即被激活,M8(M7)导通,而M7(M8)保持关闭,从而使输出VOUT下降(上升)。注意,在转换刚发生后,(非反相)延迟线DL1和DL2的输出保持VINB的先前值。一旦上升(下降)转换通过DL1和DL2传播,M8(M7)被关闭,使得VOUT处于三态。因此,在输入转换发生后的持续时间内,当DL1/DL2的输出仍保持其先前值时,输出级处于激活状态,输入转换得以传播到缓冲器的输出。然而,一旦两条延迟线的输出都已转换到新状态,输出级便进入三态。这样就确保了在缓冲器传输数据时,能提供到任一电源轨的低阻抗路径,而在缓冲器处于静态时,则呈现高的有效输出阻抗。一个微妙之处需要注意的是,DL1和DL2具有不对称延迟:DL1的上升延迟较快,为τf(在我们的设计中约为25ps),下降延迟较慢,为τs(在我们的设计中设置为300 ps);而DL2的上升延迟较慢,为τs,下降延迟较快,为τf。这两个不对称延迟线是为了确保在输入出现毛刺时仍能正常工作,因为可以证明,如果使用单一对称延迟线,其上升和下降延迟相等(τD),当输入缓冲器处出现脉冲宽度小于τD的毛刺时,可能导致功能异常。尽管此处给出了非常具体的数值,但本文提出的路由缓冲器能够容忍τs和τf的显著变化。唯一的要求是τf必须足够小于VOUT处的输出转换时间,在我们的实验中,当缓冲器负载为长度为4的导线时,该转换时间约为180 ps,而τs则必须足够大。

晶体管M9‐M12实现了弱二极管保持器,当缓冲器处于动态三态时,这些保持器用于限制VOUT处的直流漂移,因为过大的直流漂移在传输数据时可能导致错误。这是因为下游接收器采用电容耦合方式,因此接收器所看到的输入跳变与(VDD − GND)和直流漂移之间的差值成正比。过大的直流漂移可能会减小下游接收器所看到的信号跳变幅度,以至于信号跳变无法再被传播。二极管保持器的尺寸设计为能够限制最大直流漂移,使得在6σ参数变化的情况下,下游接收器所看到的最坏情况下的信号跳变仍能被可靠地传播。此外,使用弱二极管保持器可确保到任一电源轨的漏电路径仍然保持高阻抗。

最后,一个SRAM单元(未示出)输出信号S和S以设置路由缓冲器的状态;当S为逻辑1时,路由缓冲器工作在脉冲信号模式,从而允许我们降低漏电功耗,而当S的输出为逻辑0时,缓冲器工作在传统模式。该SRAM单元在器件编程时进行配置,每个路由缓冲器的工作模式由编译时对缓冲器输出端最坏情况下的注入噪声分析确定。我们将在下一节讨论噪声的影响。

所有电路均采用商用65nm STMicroelectronics模型进行设计和仿真,以验证功能以及进行功耗和时序表征。与采用完全填充的Wilton结构开关块[14]构成的路由架构中长度为4的路由线及其路由多路复用器扇出所耗散的漏电和动态功耗相比,脉冲信号所需电路带来的动态和漏电功率开销可忽略不计。另一方面,当缓冲器工作在脉冲信号模式时会带来较小的延迟惩罚,因为缓冲器输出端固有的直流漂移会降低下游路由缓冲器所感知到的信号摆幅。在最坏情况下(晶体管变化导致接收器灵敏度下降与最坏情况下的直流漂移共同作用),由于信号摆幅减小引起的延迟惩罚约为80ps。当缓冲器不工作在脉冲信号模式时,其延迟惩罚可忽略不计。因此,除了下文讨论的噪声因素外,只有在具有足够时序裕量路径上的导体才可采用脉冲信号模式。

4.2 噪声考虑

所提出的路由缓冲器可能存在一个令人担忧的来源,即由于输出为三态,该缓冲器对串扰敏感。当VOUT处于三态时,来自相邻布线导体的电容耦合噪声可能导致错误。如果噪声超过某一阈值

旧信号可能被下游路由缓冲器解释为实际的信号转换,因为它们也是电容耦合的,可能难以区分噪声和实际数据。即使注入到VOUT中的噪声未导致下游路由缓冲器上出现错误的数据转换,该噪声仍会部分保留residual,因为在设计上不存在通往任一电源轨的低阻抗路径,因此注入的噪声将以较慢的速度衰减。这是一个问题,因为它可能导致在下游接收器处观察到的有效数据转换幅度降低。在最坏情况下,此类转换的幅度与(VDD−GND)−(|N(max)INJ|+|DCW(max)|)成正比,其中N(max)INJ是注入到VOUT上的最坏情况噪声,DCWMAX是最坏情况下的直流漂移。因此,对于给定的设计,这种功耗降低技术通常不能应用于电路中的所有布线导体,而只能应用于那些注入噪声可以限制在某个最大阈值以下的布线导体,本文中我们将此阈值称为NS(为简化起见,归一化至VDD)。

令fMUX(V)表示一个路由多路复用器输出端的电压,其选择输入为V伏特。令VRT表示在组成晶体管参数变化6σ存在的情况下,所提出的迟滞再生接收器能够可靠检测的最小可检测电压幅度,并令VRR表示接收器在晶体管变化条件下仍能可靠拒绝的最大可拒绝电压幅度。因此我们需要满足fMUX(NS) < VRR且fMUX(VDD − GND − NS − DCW(max)) ≥ VRT。通过晶体管尺寸优化,我们发现NS ≈ 1/4,前提是路由多路复用器采用升压栅极电压,这是商用FPGA[1]中的常见特性。对于65nm,最大可靠栅极电压为1.2 V。

设C(i, j)表示导体i和j之间的耦合电容,C(i)表示导体i的总电容(平板和耦合),Adj(i)表示在同一金属层内且与i相邻的集合导体。同时,令occ(i)在i为已使用导体时等于1,若i未使用则为0。因此,对于导体i要工作在脉冲信号模式,必须满足以下条件:

$$
\sum_{j \in Adj(i)} \frac{C(i, j)}{C(i)} occ(j) \leq NS
$$

在接下来的章节中,我们将讨论如何修改传统的现场可编程门阵列计算机辅助设计流程,以通过最大化工作在脉冲信号模式下的已使用导体数量来优化漏电功耗,同时满足本节中描述的约束条件。

5. 计算机辅助设计支持

如前所述,本文考虑的三种功耗降低技术均利用了现场可编程门阵列通常具有大量未使用的布线导体这一特点,通过确保特定的布线导体未被使用,每种功耗降低技术均可获得不同的功耗降低机会。在本文其余部分,我们定义F(n)为n的一组“友好”导体:这些布线导体的占用情况决定了导体n的功耗降低机会。对于电荷回收技术,F(n)始终包含一个元素,即导体n的配对路由导体。对于电容优化和脉冲信号技术,F(n)是与n位于同一金属层内的相邻导体集合。上述每种技术的功耗降低机会可表示如下:导体n的有效电容与使用的导体数量j ∈ F(n)(及其与导体n各自的耦合电容),因此我们力求最小化该值,以在使用第3.1节所述的电容优化技术时降低导体n的动态功耗。对于第3.2节所述的电荷回收技术,如果n是一条正在使用的路由导体,我们需要确保F(n)中唯一的成员未被使用,以便其可用作电荷存储器。最后,为了利用第4节所述技术最小化路由导体的有源漏电流功耗,我们需要确保一定数量sufficient的导体j ∈ F(n)未被使用,从而可将其用作屏蔽导体,使n能够安全地工作在脉冲信号模式下,如第4.2节所述。

因此,对于每种技术,在电路的物理实现过程中必须特别注意,确保在信号从源端引脚到接收端引脚进行布线时,路径上的特定布线导体保持未使用状态,以最小化功耗。我们提出的计算机辅助设计流程基于VTR(一种传统的现场可编程门阵列计算机辅助设计流程)[11],其中我们对布线器进行了修改,并在布线与时序分析之后增加了一个布线导体模式选择阶段。这些修改将在以下章节中讨论。

5.1 功耗感知布线器

VPR布线器采用了在第2节中讨论的PathFinder算法[9]。该成本函数结合了时序性能和routability(即在电路中合法布设所有连接的能力)的度量,以获得具有良好结果质量的布线电路。VPR中实现的成本函数为:

$$
Cost_n = (1 - Crit_i) \cdot cong_cost_n + Crit_i \cdot delay_cost_n
$$

其中,n是正在考虑添加到部分完成的路由中的布线资源(例如导线段),i是正在布线的驱动器/负载连接,Crit_i是连接的时序关键性(对于关键路径上的连接等于1,随着连接的裕量增加而减小至0),cong_cost_n是布线资源n的拥塞成本,用于表示各网络之间对该布线资源的demand情况,而delay_cost_n是布线资源n的延迟。有关该代价函数的进一步讨论,请参见[9]。

接下来讨论我们对VPR布线器的修改,对于一个布线段n,我们使用以下代价函数:

$$
Cost_n = (1 - Crit_i) \cdot [cong_cost_n + PF \cdot power_cost_n + AF \cdot power_cost_infringen] + Crit_i \cdot delay_cost_n
$$

其中PF和AF是通过经验确定的标量权重项,power_cost_n是一项用于引导功耗关键网络使用可能以低功耗模式运行的布线导体的项,而power_cost_infringen用于引导网络away避开可能以低功耗模式运行的布线导体的“友”导体。为了简洁起见,在本节其余部分中,我们将重点关注与脉冲信号功耗降低技术相关的这两项形式;关于电荷回收和电容优化技术的布线器代价函数的详细描述,读者可分别参考[3]和[4]。对于脉冲信号功耗降低技术,项power_cost_n由以下给出:

$$
power_cost_n =
\begin{cases}
1 : \sum_{j \in F(n)} \frac{C(n,j)}{C(n)} occ(j) - NS > 0 \
0 : otherwise
\end{cases}
$$

其中C(n, j)、C(n)、occ(j)和NS的定义见第4.2节。项power_cost_infringen等于:

$$
\sum_{j \in F(n)} \frac{C(n, j)}{\sum_{k \in F(j)} C(j, k)occ(k)} \cdot occ(j) \cdot power_cost_j \cdot (1 - max_crit_j)
$$

其中max_crit_j是当前争夺j的所有网络中最坏情况下的关键性。

修改代价函数的动机如下:在对电路进行路由时,我们希望最大化能够进入脉冲信号模式的活动导体数量,以降低漏电功耗。通常,在路由连接i时,我们需要考虑两种情况:1) 连接i具有足够的时序裕量,或2) 连接i是时序关键的。对于前一种情况,我们力求在两种不同情形下优化路由。首先,我们尝试引导网络使用具有足够多未占用相邻导体的线段;power_cost_n项旨在优化这一目标,因为它估计导体n上的噪声是否超过NS。任何其power_cost_n等于0的路由导体n均可工作在脉冲信号模式。相反,如果power_cost_n大于0,则不太可能工作在脉冲信号模式,因此我们应尽量避免使用它。第二个目标是避免向那些原本可能用于脉冲信号模式的走线注入过度噪声。这一优化目标由power_cost_infringen项处理:在评估导体n时,我们检查n的所有已使用相邻导体j,并评估j工作在脉冲信号模式的可能性。如果j很可能被低关键性网络使用(由1−max_crit_j项表示),但其power_cost_j > 0(即本有机会使j工作在脉冲信号模式,但由于过度噪声而无法实现),则我们应为使用n赋予一定的成本。该成本通过C(n, j)/∑C(j, k)occ(k)进行缩放,因为j不工作在脉冲信号模式下的成本应分配给其相邻网络,并根据j的每个邻居注入的噪声进行加权。最后,如果当前网络具有较高的关键性,则由于脉冲信号模式固有的延迟惩罚,i不太可能采用脉冲信号模式,因此我们选择专注于优化i的延迟。

5.2 布线模式选择

在完成布线与时序分析后,我们可以确定芯片中布线导体的工作模式。对于电容优化技术,模式选择是显而易见的,因为所有未使用导体都会自动进入三态。对于电荷回收功耗降低技术,我们已将模式选择问题建模为混合整数线性规划(MILP),其中在满足时序约束的前提下对功率进行优化。更多细节请参见[3]。对于本文提出的脉冲信号技术,我们再次寻求在满足时序和最大注入噪声约束的前提下优化(漏电)功率。算法1给出了本研究中用于解决此问题的贪心方法的伪代码。以最小化漏电功耗为核心目标,该算法的目标是确定哪些已使用的布线导体将在脉冲信号模式下工作,以及哪些未使用的布线导体将充当shields以帮助隔离已使用导体

算法1:布线线模式选择

输入:一组布线导体W,一个时序图G(V, E)
输出:一种数据结构states(i)映射路由导体i到其状态

1 开始
2 states(i) ← unknown 对所有i ∈ W
3 / 构建已使用线的集合 /
4 WU ← {x | x ∈ W ∧ occ(x) = 1}
5 / 构建未使用线的集合 /
6 WN ← {x | x ∈ W ∧ occ(x) = 0}
7 / 首先确定已使用导体的状态 /
8 遍历i ∈ WU in descending order of selects(i) do
9 如果noise(i) > NS或slack(G,i) < tD则
10 states(i) ← ungated
11 else
12 states(i) ← gated
13 / 更新G以反映i的状态 /
14 更新时序图(G, i, tD)
15 / 计算噪声裕量 /
16 nm ← noise(i) − NS
17 foreach j ∈ F(i) ∩ WN in descending order of selects(j) do
18 if C(i,j)/C(i) < nm和states(j) == unknown then
19 / 导体j有可能会门控,暂不设置其状态 /
20 nm ← nm − C(i, j)/C(i)
21 else
22 / 使用j作为屏蔽 /
23 states(j) ← ungated
24 end
25 end
26 end
27 / 现在确定未使用导体的状态 /
28 foreach i ∈ WN do
29 if states(i) == unknown then
30 states(i) ← gated
31 end
32 结束

在脉冲信号模式下运行的导体来自相邻噪声源的注入噪声,以及哪些未使用的导体可以设置为低泄漏的三态模式。在所示伪代码中,noise(i)是导体i上最坏情况下的总注入噪声,等于∑j∈F(i)occ(j)·C(i, j)/C(i),selects(i)是i扇出路径中路由多路复用器的数量,其中i连接到选定的输入引脚,slack(G, i)返回与路由导体i相关连接在给定时序图G下的时序裕量,update_timing_graph(G,i, t)是一个例程(为简洁起见未显示),当与路由导体i相关连接的延迟增加t秒时,该例程incrementally更新时序图G(即该例程仅更新受影响的边,避免完整的时序分析)。请注意,tD是工作在脉冲信号模式下的延迟惩罚(如前所述,此值为80ps),其他术语如前所述。应当指出,可以证明通常路由多路复用器中泄漏电流最大的输入引脚是所选输入引脚(即传输门晶体管)连接到这些引脚的器件处于“开启”状态,因此这些引脚具有低阻抗,布线导体的最坏情况漏电功耗大约与selects(i)成正比。因此,在算法中适当的情况下,我们使用该值作为漏电功耗的估算值。

该算法以待优化电路的时序图以及电路中所有已使用和未使用的路由线的集合W作为输入。算法的输出是每个路由导体i的state,其值等于gated或ungated。如果一个已使用的路由导体的状态为gated,则其工作在脉冲信号模式;如果其状态为ungated,则其工作在传统模式。如果一个未使用的路由导体的状态为gated,则其处于三态;如果其状态为ungated,则其充当屏蔽。虽然我们希望最大化工作在脉冲信号模式的已使用导体数量,但同时也希望最大化处于三态模式的未使用导体数量,因为这可以降低泄漏。

该算法的第一部分确定电路中所有已使用布线导体的状态。我们按照这些导体的估计漏电功耗降序访问它们(使用selects(i)作为估计值)。对于每个布线导体i,我们评估注入到i上的噪声是否大于NS,或者是否存在足够的时序裕量不可用;如果任一条件成立,则i无法工作在脉冲信号模式下,因此其状态被设置为ungated。否则,i可以工作在脉冲信号模式下,并将其状态设置为gated,随后通过将与导体i相关联的连接延迟增加tD秒来更新G。接下来,我们计算导体i的noise margin,在伪代码中记为nm,即注入到i上的总噪声与NS之间的差值。如果该值非零,则i的未使用相邻导体中的some可能被设为三态,从而降低泄漏。我们通过按漏电功耗估计值的降序(同样使用selects(j)作为估计值)访问这些未使用的导体j ∈ F(i),并评估从j注入到i的噪声是否小于当前的nm值,来确定哪些未使用导体可能被潜在地设为三态。如果该数值小于nm,则j可能被潜在地设为三态,但我们暂时将其状态保持为ungated,并在所有已使用导体都被访问后重新检查该导体。相反,如果从j注入到i的噪声大于nm,则将j的状态设置为ungated,从而使j充当屏蔽导体。

在确定所有已使用导体的状态后,我们遍历每个状态仍设置为unknown的未使用导体i。这些导体要么不与任何已使用导体相邻,要么其状态的确定被推迟到算法的这一阶段。这种情况仅会在未使用导体与非门控已使用导体和/或具有足够噪声裕量的门控已使用导体相邻时发生。因此,所有这些导体都可以设为三态,即states(i) = gated。

尽管上述方法是贪心的,但正如下一节将讨论的那样,我们的结果似乎表明该方法效果良好。尽管如此,采用不那么贪心的方法可能会进一步提高结果质量,但对此类方法的研究留待未来工作完成。

6. 实验研究

为了评估所提出的功率降低技术的优势,我们使用了与VTR[11]配套提供的基准电路集。我们的基准架构包含跨越4个CLB瓦片的单向走线,采用威尔顿开关模块[14],并具有每个CLB包含十个6输入查找表(LUT)和触发器(FF)的逻辑块。所有基准电路均在该基准架构上进行路由,以确定成功路由每个电路所需的每通道最小走线数(Wmin);基准架构中的所有路由缓冲器ture是传统的。对于每个电路,我们计算了W = 1.3 × Wmin以反映中等压力的路由场景——这是FPGA架构研究中的标准方法。每个电路计算出的W值用于该电路的所有实验运行。我们使用ACE开关活动估计工具[7]来计算每个基准电路中各信号的开关活动,因为电荷回收和电容优化技术需要这些信息。对于脉冲信号技术,我们考虑了一组额外的实验。FPGA厂商开发FPGA families(例如阿尔特拉的Stratix或Xilinx的Virtex),这是一系列具有相同基本路由和逻辑架构但包含不同数量CLB、硬核模块、I/O能力等的现场可编程门阵列。尽管同一系列中的不同型号可能在逻辑容量上有很大差异,但其路由架构(以及通道宽度)保持不变;这是一种实用的方法,因为它允许厂商分配设计资源来开发单个单元(例如包含一个CLB及相关路由通道),然后将不同数量的这些单元拼接在一起,形成该系列的不同型号。因此,更现实的情况是假设一个fixed channel width, Wmax,我们将其设置为本研究中考虑的基准测试最大通道宽度的1.1倍。因此,对于脉冲信号技术,我们对W = 1.3 × Wmin和W = Wmax进行了实验。

在我们的实验中,评估了互连的动态功耗降低、静态功耗降低以及面积开销。对于每种技术,相关的布线器代价函数包含可优化的标量项,但为了简洁起见,我们省略了这些项的细节和优化过程(读者可参考[3]和[4]获取更多细节)。因此,此处呈现的结果反映了使用优化后的代价函数所获得的功耗降低;表1提供了结果的逐电路分解。所有三种功耗降低技术的关键路径退化均可忽略不计,因此在本节其余部分,我们仅关注功耗降低和面积开销的结果。

6.1 功耗降低

对于电容优化技术,动态功耗降低范围为10%至19%,几何平均数为13.5%;这假设耦合电容(CC)与“平板”电容(CP)的比值为2;随着该比值的增加,可实现更大的功耗降低(详见[4]的进一步讨论)。此外,互连静态功耗也减少了约15.2%(基准测试的几何平均数)。电荷回收技术提供了类似的动态功耗降低,范围为13%至19%,几何平均数略低于16%。

现在来看所提出的脉冲信号技术所带来的减少效果,我们发现当电路面向通道宽度为1.3×Wmin的现场可编程门阵列时,活动泄漏(即已使用布线导体中的泄漏)平均可减少26%,而布线网络中的总泄漏(包括未使用导体的泄漏)可减少约31%。在固定通道宽度实验中(电路针对通道宽度为Wmax的架构),活动泄漏减少率平均显著提高至∼62%,但总布线泄漏减少率的提升则相对较小,此时平均为∼37%。这些结果的理由如下:由于在我们的基准测试集中,大多数电路的1.3 × Wmin比Wmax少significantly(这是因为在基准中的设计逻辑单元数量可能相差一个数量级以上,同时布线复杂度也各不相同),因此在进行设计布线时

6.2 面积开销

在三种功耗降低技术中,电容优化技术提供的(布线)面积开销最低,平均略低于5%。考虑到商业架构中布线面积约占FPGA核心面积的50%[8],这意味着FPGA总核心面积增长不到2.5%。电荷回收和脉冲信号的布线面积开销分别为25%和∼20%,这意味着这两种技术的核心总面积开销均略高于∼10%。

必须考虑这些面积增加对布线功耗的影响。对于电容优化技术,瓦片面积增加∼2%对应于瓦片尺寸增加√1.02 ≈ 1.01×,这意味着由于瓦片尺寸增大而导致的动态功耗增加不到1%。类似地,电荷回收和脉冲信号技术将导致瓦片尺寸增加√1.1 ≈ 1.05×。对于电荷回收技术,这种有效功率开销小于所节省的功率,尽管仍需对电路和/或技术进行进一步优化,以使节电效果更加显著。另一方面,考虑到脉冲信号技术带来的显著功耗降低,布线动态功耗增加∼5%,而布线漏电功耗减少30‐40%,这是一种有利的权衡。假设静态功耗为动态功耗的1/3,这些数据表明总布线功耗仍可减少∼10%。对于许多工作在较低时钟频率下的设计,动态功耗开销将降低,而漏电功耗的减少保持不变,这意味着总布线节能效果将会增加。

7. 结论和未来工作

本文提出了三种新颖的技术来降低FPGA互连中的功耗。这些技术显示,互连的动态功耗可降低10‐20%,而漏电功耗几乎可降低40%。由于所有这些技术从根本上都需要相同的条件来降低功耗,即对那些消耗大量功率的布线导体(例如被具有高开关活动的网络使用,或连接到下游路由多路复用器的许多已选输入引脚)进行优化,并且这些技术所需的电路彼此相似,因此这些技术有可能结合使用,从而显著降低FPGA互连中的动态功耗和漏电功耗。将这些技术组合起来所产生的综合效益评估,是未来研究的一个有趣方向。此外,未来工作还将致力于改进电子设计自动化工具,以提高结果质量和减少工具运行时间。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值