利用电路和计算机辅助设计技术实现FPGA互连的功耗优化
摘要
我们要将目标定为降低现场可编程门阵列(FPGA)互连中的功耗,并提出了三种利用FPGA独特属性的方法,即存在unused布线导体。第一种技术通过将邻近已使用导体的未使用导体置入高阻态,从而降低已使用导体所感知的有效电容,以减少动态功耗。第二种技术是电荷回收,将未使用的导体重构为电荷储库,用于减少已使用导体在发生正向跃迁时所需的供电电流。第三种方法采用脉冲信号技术,通过在逻辑跃迁后将驱动缓冲器置于高阻态,从而降低互连缓冲器中的漏电流。这三种技术均需要在布线阶段提供计算机辅助设计支持,以促使未使用导体相对于已使用导体进行特定的布局定位。
引言
现场可编程门阵列(FPGA)长期以来被用于通信和工业应用,如今在高性能计算领域也逐渐获得关注,常与传统处理器协同使用,实现可提高计算吞吐量和能效的加速器。英特尔最近以160亿美元收购领先的FPGA供应商阿尔特拉,以及微软在必应搜索加速中使用FPGA[10],都确保了FPGA在未来数据中心中的存在。然而,在计算光谱的另一端,即低功耗/移动/物联网领域,FPGA的发展却相对有限,主要原因是其高功耗问题,近期研究[6]表明其功耗比固定功能专用集成电路高出数倍。本文提出结合架构、电路和用于降低FPGA互连功耗的计算机辅助设计技术,FPGA互连占据了现场可编程门阵列中大部分的动态和泄漏功耗[13, 12]。
我们提出了三种用于降低FPGA互连功耗的技术,这些技术依赖于现场可编程门阵列的一个独特属性——即在FPGA中实现的特定应用电路仅使用其底层互连资源的一部分,而留下大量资源未被使用。所提出的技术以多种不同方式利用了这些未使用的资源。其中两种技术针对动态功耗;第三种技术则针对漏电功耗。这三种技术的共同点在于,它们在流程的布线阶段都需要非常相似的计算机辅助设计支持。具体而言,这三种技术要求尽可能使FPGA互连中已使用的导体在物理上与未使用的导体相邻。
CMOS电路中逻辑信号消耗的动态功耗由以下公式给出:α·C·VDD·Vswing,其中α表示信号的翻转频率,C为电容,VDD和Vswing分别为电源电压和摆幅电压。在第一种方法中,我们通过减少已使用导体对未使用相邻导体的层内耦合电容来优化C项。这通过一种轻量级开关缓冲器设计实现,该设计允许将未使用的相邻导体置于高阻态,从而使耦合电容与其他电容串联,进而降低有效电容。在第二种方法中,我们通过charge recycling至/自相邻的未使用布线导体[3]来针对Vswing。其核心思想是在现场可编程门阵列路由架构中将布线导体成对组合,使得当其中一条导体未使用时,它可以作为已使用导体的电荷存储库。在下降跳变期间通常耗散到地的部分电荷被存储在该存储库中,并在上升跳变时回收给已使用的导体,从而减少Vswing并节省功率。
然后,我们提出了一种新的方法来降低FPGA互连结构中的漏电功耗。我们提出了脉冲信号技术,其中驱动互连缓冲器“脉冲”其预期信号值在短时间内传递给接收缓冲器,随后进入高阻抗(低泄漏状态),而不是像传统CMOS信号那样持续维持该值。在可能的情况下,已使用导体相邻的导体必须保持未使用状态,以减轻噪声并确保接收缓冲器“捕获”的逻辑值不受干扰。同样,该方法依赖于现场可编程门阵列计算机辅助设计流程中布线阶段的噪声减少支持。据作者所知,这是首次在FPGA背景下提出脉冲信号技术。
本文的其余部分组织如下:第2节介绍现场可编程门阵列互连架构的相关背景知识。第3节总结了用于动态功耗降低的电荷回收和电容减少技术。第4节介绍用于泄漏减少的脉冲信号技术。CAD支持在第5节中讨论。实验结果出现在第6节,随后是结论和未来工作。
2. 背景
FPGA互连由金属导线段组成,这些导线段可通过互连开关进行可编程连接,连接至逻辑块引脚以及彼此之间。图1(a)显示了一个由多路复用器(MUX)、缓冲器和SRAM配置单元组成的FPGA布线开关。多路复用器的输入端连接至逻辑块输出引脚和/或其他布线导体。SRAM单元的内容选择某个特定输入,驱动至开关输出端,该输出端连接至逻辑块输入或布线导体。图1(b)中的晶体管级视图表明,多路复用器通常由NMOS晶体管构成,而缓冲器则通过晶体管MP1实现“电平恢复”,即当逻辑1通过基于NMOS的多路复用器时,该晶体管将缓冲器输入拉至电源轨。最先进的赛灵思和阿尔特拉现场可编程门阵列采用此类单向缓冲开关。
两家主要的商用FPGA供应商使用PathFinder协商拥塞路由算法[9]的一种变体。在PathFinder中,器件互连被表示为一个有向图G(V, E),其中每个v ∈ V代表一个导体,每个e ∈ E代表两个导体之间的可编程连接。因此,将信号从其驱动器路由到其负载的过程转化为在G中对应于驱动器/负载引脚的顶点之间进行最低成本搜索。PathFinder算法允许在路由过程的中间阶段存在信号之间的短接。拥塞消除通过基于节点过载情况的成本调整以及拆线重布线来处理。利用信号的时序关键性信息,促使设计中的时序关键互连通过现场可编程门阵列结构选择低延迟路径进行路由。
3. 动态功耗降低技术
3.1 降低有效互连电容
我们最近提出了一种技术,用于降低路由导线[4]的有效电容负载。该方法的灵感来自于对路由缓冲器输出端所见电容的分析:该电容主要是被驱动的金属互连导线的寄生电容。图2a中注释了布线导体总寄生电容的不同组成部分。
该图表明,布线导体的电容是由于同一金属层上相邻金属导体之间的耦合电容(CC),以及因与相邻层上的其他导体重叠而产生的平板电容(CP)(相邻层被描绘为接地)
目前,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(该导体接地)。该电路的输入阻抗在拉普拉斯域具有以下传递函数:
$$
Z_{in}(s) = \frac{R_{eq}(2 \cdot C_C + C_P)s + 1}{C_C s[R_{eq}(C_c + C_p)s + 1]}
$$
其中假设CC1 = CC2 = CC。我们现在注意到,如果Req >> 1/(2·CC + CP)/(CC + CP),则Zin(s) ≈ (CC + CP)/CC。这意味着,如果导体未被使用,并且其驱动器阻抗可以设为较大值,则从导体1朝向导体2看去的有效阻抗即为电容器CC1与电容器CC2和CP的并联组合在series中的阻抗,这表明布线导体1上的有效寄生负载因此可以被reduced。
一个具有合理小的有效输出电阻的驱动器,若可将其置于三态模式,则可使其输出电阻变得大得多。将驱动器置于三态模式需要断开到VDD或GND的所有路径,以确保不存在到任一电源轨的低阻抗路径。
在[4]中,我们提出通过将活动布线导体相邻的未使用导体置于三态模式,以降低活动布线导体中的功耗。仅当活动布线导体与一个或多个未使用的布线导体相邻时,才能观察到寄生电容的减少。由于所提出的技术要求路由缓冲器具备三态功能,因此我们还提出了一种面积开销最小的三态缓冲器结构,专为FPGA互连驱动器量身定制。
3.2 电荷回收
我们提出的另一种利用未使用布线导体的技术是电荷回收[3]。其思想是利用前一次跳变中耗散的能量,从而主动回收“已使用”的电荷。在传统逻辑电路中,当导体发生下降跳变时,导线上存储的能量——等于CV²DD/2,其中C为导线电容——会完全耗散。相比之下,电荷回收技术将部分原本耗散的电荷存储在次级节点(电容器)中。随后,这些电荷可以输送至发生上升跳变的导线,从而复用原本会丢失的部分能量。该技术的整体原理如图3和图4所示。
图中显示了两个电容器,CL为负载电容器,CR为用于存储回收电荷的储能电容器。开关将CL连接到VDD或GND,第三个开关可用于将两个电容器连接在一起。在图3中,我们看到CL最初连接到VDD,且CR中没有存储电荷。在CL处发生下降跳变时,电路首先经历一个电荷恢复阶段,其中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处的电压稳定后,CL和CR被断开,CL连接到VDD,以完成向逻辑1的完整跳变。请注意,在此示例中,实际从VDD电源轨汲取的电荷量为0.75·CL·VDD,而非CL·VDD。也就是说,能量立即减少了25%。
为了降低路由网络中的功耗,我们提出了一种FPGA架构,其中未使用的布线导体被重新用作电荷储库,用于存储与其配对的已使用布线导体上下降晶体管释放的电荷,并允许在上升跳变时回收该电荷。
为了实现期望的功能,我们设计了如图5所示的缓冲电路,该电路包含一个中间级,用于根据缓冲器的工作模式向M1和M2(构成缓冲器输出级)的栅极施加适当的信号。有关完整描述,请参见
电路结构,读者可参考[3]。当工作在电荷回收模式时,该技术可使缓冲器的动态功率降低∼26%,相较于理论最大功率降低33%具有明显优势。
4. 用于漏电功耗降低的脉冲信号
现场可编程门阵列中的布线导体连接到大量的路由多路复用器,这些多路复用器通常具有大量输入以确保足够的路由灵活性。为了优化面积与延迟的权衡,路由多路复用器通常采用两级拓扑结构[1]的传输晶体管构成。然而,这些路由多路复用器包含多个漏电路径,导致现场可编程门阵列互连中耗散了相当大的漏电功耗。面对亚‐10nm时代即将到来的问题(如直接源漏隧穿(DSDT)),在不牺牲路由灵活性的前提下降低现场可编程门阵列互连中的漏电功耗已成为关键任务。
为了降低泄漏,我们首先注意到互连网络中路由缓冲器的输出阻抗在流经/流入路由多路复用器的漏电流中起着关键作用。传统的路由缓冲器提供低阻抗路径(无论是从VDD还是到GND),而漏电流正是通过这些路径流动的。如果我们能够增加这些路径的阻抗,则可能减少漏电流。然而,简单地增加路由缓冲器的输出阻抗并不可行,因为这会导致性能损失。
但需要注意的是,缓冲器的输出阻抗仅在其传输数据过程中(即输出状态切换时)需要保持较低;而在其他所有时间,若能保持高输出阻抗,则可减少漏电功耗。为实现这一期望行为,我们建议将现场可编程门阵列中的传统路由缓冲器(见图1)替换为三态型路由缓冲器,当其不处于发送数据状态时进入三态,而在输入端发生跳变需要发送数据时动态激活。在接下来的章节中,我们将详细说明实现该漏电功耗降低技术所需的电路级修改和计算机辅助设计支持。
4.1 脉冲信号电路
图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(在我们的设计中约为25p秒),下降延迟较慢,为τs(在我们的设计中设置为300p秒);而DL2的上升延迟较慢,为τs,下降延迟较快,为τf。这两条不对称延迟线是为了确保在输入出现毛刺时仍能正常工作,因为可以证明,如果使用单条具有相等上升和下降延迟τD的对称延迟线,则当输入缓冲器处出现脉冲宽度小于τD的毛刺时,可能导致功能异常。尽管此处给出了非常具体的数值,但本文提出的路由缓冲器能够容忍τs和τf的显著变化。唯一的要求是τf必须足够小于VOUT处的输出转换时间,在我们的实验中,当缓冲器负载为长度为4的导线时,该时间约为180p秒,而τs必须足够大。
晶体管M9‐M12实现了弱二极管保持器,用于在缓冲器动态三态时限制VOUT处的直流漂移,因为过大的直流漂移在传输数据时可能导致错误。这是因为下游接收器采用电容耦合,因此接收器所看到的输入跳变与(VDD − GND)和直流漂移之间的差值成正比。过大的直流漂移可能会减小下游接收器所看到的信号跳变幅度,以至于信号跳变无法再被传播。二极管保持器的尺寸设计为可限制最大直流漂移,使得在6σ参数变化条件下,下游接收器看到的最坏情况下的信号跳变仍能被可靠传播。此外,使用弱二极管保持器可确保到任一电源轨的漏电路径仍保持高阻抗。
最后,一个SRAM单元(未示出)输出信号S和S以设置路由缓冲器的状态;当S为逻辑1时,路由缓冲器工作在脉冲信号模式,从而可以降低漏电功耗;而当S的输出为逻辑0时,缓冲器工作在传统模式。该SRAM单元在器件编程时进行配置,每个路由缓冲器的工作模式由编译时对缓冲器输出端最坏情况下的注入噪声分析确定。我们将在下一节讨论噪声的影响。
所有电路均使用意法半导体的商用65nm模型进行设计和仿真,以验证功能并表征功耗和时序。与采用完全填充的威尔顿式开关块构成的路由架构中长度为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,前提是路由多路复用器采用提升的栅极电压,这是商用现场可编程门阵列[1]中的常见特性。对于65nm,最大可靠栅极电压为1.2V。
设C(i, j)表示导体i和j之间的耦合电容,C(i)表示导体i的总电容(包括平板电容和耦合电容),Adj(i)表示在同一金属层内且与i相邻的导体集合。同时,令occ(i)在i为已使用的导体时等于1,若i未使用则为0。因此,导体i要工作在脉冲信号模式,必须满足以下条件:
$$
\sum_{j \in \text{Adj}(i)} \frac{C(i, j)}{C(i)} \cdot \text{occ}(j) \leq \text{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中实现的代价函数为:
$$
\text{Cost}_n = (1 - \text{Crit}_i) \cdot \text{cong_cost}_n + \text{Crit}_i \cdot \text{delay_cost}_n
$$
其中,n是正在考虑添加到部分完成的路由中的布线资源(例如导线段),i是正在布线的驱动器/负载连接,Criti是该连接的时序关键性(对于关键路径上的连接等于1,随着连接的裕量增加而减小至0),cong_costn是布线资源n的拥塞成本,用于表示各网表之间对该布线资源的demand程度,而delay_costn是布线资源n的延迟。有关此代价函数的进一步讨论,请参见[9]。
接下来讨论我们对VPR路由器的修改,对于一个路由段n,我们使用以下代价函数:
$$
\text{Cost}_n = (1 - \text{Crit}_i) \cdot [\text{cong_cost}_n + P_F \cdot \text{power_cost}_n + A_F \cdot \text{power_cost_infringen}] + \text{Crit}_i \cdot \text{delay_cost}_n
$$
其中PF和AF是通过经验确定的标量权重项,power_costn是一项用于引导功耗关键网络使用可能以低功耗模式运行的布线导体的参数,而power_cost_infringen用于引导网络away避开可能以较低功耗模式运行的布线导体的“友好”导体。
为了简洁起见,在本节其余部分中,我们将重点关注这两项与脉冲信号功耗降低技术相关的形式;关于电荷回收和电容优化技术的路由器成本函数的详细描述,读者可分别参考[3]和[4]。对于脉冲信号功耗降低技术,项power_costn由以下公式给出:
$$
\text{power_cost}
n =
\begin{cases}
1 : \sum
{j \in F(n)} \frac{C(n,j)}{C(n)} \cdot \text{occ}(j) - \text{NS} > 0 \
0 : \text{otherwise}
\end{cases}
$$
其中C(n, j)、C(n)、occ(j)和NS的定义见第4.2节。项power_cost_infringen等于:
$$
\sum_{j \in F(n)} C(n, j) \cdot \sum_{k \in F(j)} \frac{C(j, k)}{\sum C(j, k) \cdot \text{occ}(k)} \cdot \text{occ}(j) \cdot \text{power_cost}_j \cdot (1 - \max \text{crit}_j)
$$
其中max_critj是当前争夺j的所有网表中最坏情况下的关键性。
修改代价函数的动机如下:在对电路进行布线时,我们希望最大化可进入脉冲信号模式的活动导体数量,以降低漏电功耗。通常,在布线连接i时,我们需要考虑两种情况:1)连接i具有足够的时序裕量,或2)连接i是时序关键的。对于前一种情况,我们力求针对两种不同情形优化布线。首先,我们尝试引导网表使用具有足够数量未占用的相邻单元的线段;项power_costn旨在优化这一目标,因为它估计导体n上的噪声是否超过NS。任何power_costn等于0的布线导体n均可用于脉冲信号模式。相反,如果power_costn大于0,则不太可能工作在脉冲信号模式,因此我们应尽量避免使用它。
第二个目标是避免向那些原本可能用于脉冲信号模式的走线注入过多噪声。该项优化目标由项power_cost_infringen处理:在评估导体n时,我们检查n的所有已使用的相邻导体j,并评估j工作在脉冲信号模式的可能性。如果j很可能被低关键性网络使用(由1−max_critj项表示),但其power_costj > 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到其状态
- 开始
- states(i) ← unknown 对所有i ∈ W
- / 构建已使用线的集合 /
- WU ← {x | x ∈ W ∧ occ(x) = 1}
- / 构建未使用线的集合 /
- WN ← {x | x ∈ W ∧ occ(x) = 0}
- / 首先确定已使用导体的状态 /
- foreach i ∈ WU in descending order of selects(i) do
- 如果 noise(i) > NS 或 slack(G,i) < tD 那么
- states(i) ← ungated
- else
- states(i) ← gated
- / 更新G以反映i的状态 /
- 更新时序图(G, i, tD)
- / 计算噪声容限 /
- nm ← noise(i) − NS
- foreach j ∈ F(i) ∩ WN in descending order of selects(j) do
- 如果 C(i,j)/C(i) < nm 和 states(j) == unknown then
- / 导体j可以潜在地被已设门控,暂不设置其状态 /
- nm ← nm − C(i, j)/C(i)
- else
- / 使用j作为屏蔽 /
- states(j) ← ungated
- end
- end
- end
- / 现在确定未使用导体的状态 /
- foreach i ∈ WN do
- if states(i) == unknown then
- states(i) ← gated
- end
- end
在脉冲信号模式下工作的导体来自相邻噪声源的注入噪声,以及哪些未使用的导体可以设置为低泄漏的三态模式。在所示伪代码中,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可能被设为三态,从而降低泄漏。我们通过按估计漏电功耗的降序访问未使用的导体j ∈ F(i)(再次使用selects(j)作为估计值),并评估从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输入查找表/触发器。所有基准电路均在基线架构上进行路由,以确定成功路由每个电路所需的每通道最小走线数(Wmin);基线架构中的所有路由缓冲器是传统的。对于每个电路,我们计算了W = 1.3 × Wmin以反映中等压力的布线场景——这是FPGA架构研究中的标准方法。每个电路计算出的W值用于该电路的所有实验运行。我们使用ACE切换活动估计工具[7]来计算每个基准电路中每条信号的切换活动,因为电荷回收和电容优化技术需要这些信息。对于脉冲信号技术,我们考虑了一组额外的实验。
FPGA厂商开发的FPGA families(例如阿尔特拉的Stratix或赛灵思的Virtex)是一系列不同规模的现场可编程门阵列,它们具有相同的路由和逻辑架构,但在CLB数量、硬核模块、I/O功能等方面有所不同。尽管同一系列中的不同型号可能在逻辑容量上存在巨大差异,但其路由架构(以及通道宽度)保持不变;这是一种实用的方法,因为它允许厂商分配设计资源来开发单个单元(例如包含一个CLB及相关路由通道),然后将不同数量的这些单元拼接在一起,形成该系列的不同成员。因此,更现实的情况是假设一个fixed channel width, Wmax,我们将其设置为本研究中考虑的基准电路最大通道宽度的10%更大。因此,对于脉冲信号技术,我们对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(这是因为基准中设计的逻辑单元数量可能相差一个数量级以上,同时布线复杂度也存在不同程度的变化),因此在进行设计布线时
| 电路 | 有效电容优化 | 电荷回收 | 脉冲信号 W=1.3xWmin | 脉冲信号 W=Wmax | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 路由动态功率减少 [%] | 路由静态功率减少 [%] | Area开销 [%] | 路由动态功率减少 [%] | Area开销 [%] | 路由活动泄漏减少 [%] | 路由总计泄漏减少 [%] | Area开销 [%] | 路由活动泄漏减少 [%] | 路由总计泄漏减少 [%] | Area开销 [%] | |
| blob合并 | 10.4 | 13.2 | 4.7 | 13.6 | 24.8 | 26.0 | 31.5 | 20.9 | 61.7 | 37.6 | 20 |
| boundtop | 13.3 | 13.6 | 4.7 | 16.5 | 24.5 | 25.5 | 31.4 | 20.7 | 69.8 | 40.0 | 20 |
| ch内在函数 | 19.2 | 15.5 | 5.1 | 17 | 27 | 24.6 | 31.1 | 22.8 | 64.2 | 36.0 | 20 |
| diffeq1 | 16.4 | 16.7 | 5.1 | 17.4 | 26.8 | 24.7 | 30.3 | 22.6 | 60.5 | 36.3 | 20 |
| diffeq2 | 17.6 | 18 | 4.9 | 13.3 | 25.7 | 23.5 | 28.5 | 21.7 | 60.3 | 38.0 | 20 |
| LU8PEEng | 10.6 | 12.7 | 4.6 | 15.9 | 24 | 23.3 | 31.5 | 20.3 | 51.8 | 35.6 | 20 |
| mkDelayWorker32B | 13.2 | 18.1 | 4.5 | 16.5 | 23.8 | 25.2 | 30.0 | 20.1 | 62.0 | 36.6 | 20 |
| mkPktMerge | 16.5 | 21 | 4.4 | 12.9 | 22.9 | 27.5 | 31.5 | 19.3 | 62.7 | 39.4 | 20 |
| mkSMAdapter4b | 12.4 | 15.2 | 4.7 | 16.5 | 24.7 | 24.8 | 30.6 | 20.9 | 59.6 | 36.0 | 20 |
| or1200 | 12.4 | 16.3 | 4.6 | 18.7 | 24.1 | 26.0 | 30.6 | 20.4 | 61.8 | 36.7 | 20 |
| raygentop | 12.9 | 13.9 | 4.8 | 15.8 | 25.1 | 28.0 | 31.2 | 21.2 | 60.0 | 37.9 | 20 |
| sha | 11 | 13.3 | 4.7 | 15.9 | 24.8 | 25.5 | 31.0 | 20.9 | 67.9 | 40.0 | 20 |
| stereovision0 | 12 | 13.8 | 4.4 | 16.6 | 23.1 | 27.0 | 32.0 | 19.5 | 69.5 | 37.4 | 20 |
| stereovision1 | 11 | 14.3 | 4.6 | 14.2 | 24.2 | 29.0 | 30.8 | 20.4 | 74.0 | 38.0 | 20 |
| stereovision2 | 12.9 | 14.1 | 4.6 | 14.9 | 24.1 | 31.8 | 30.8 | 20.4 | 48.0 | 34.2 | 20 |
| stereovision3 | 19.2 | 15.8 | 6.2 | 15.1 | 32.4 | 25.2 | 30.5 | 27.4 | 53.0 | 34.7 | 20 |
| mean | 13.8 | 15.3 | 4.8 | 15.7 | 25.1 | 26.1 | 30.8 | 21.2 | 61.7 | 37.2 | 20.0 |
Wmax,未使用的布线导体数量增加意味着在进行网表布线时,已使用的布线导体可以更容易地彼此分开。这解释了为何动态漏电减少如此显著。另一方面,更大的通道宽度意味着未使用导体与已使用导体之间的比率增加,从而降低了已使用布线导体对总布线漏电的净影响。这解释了为何尽管动态漏电减少从W=1.3×Wmin到W=Wmax几乎增加了三倍,总布线漏电减少仅增加了约∼21%。
6.2 面积开销
在三种功耗降低技术中,电容优化技术提供的(布线)面积开销最低,平均略低于5%。鉴于商业架构的布线面积约占FPGA核心面积的50%[8],这意味着FPGA核心总面积增长不到2.5%。电荷回收和脉冲信号的布线面积开销分别为25%和∼20%,这使得这两种技术的核心总面积开销均略高于∼10%。
必须考虑这些区域增加对布线功耗的影响。对于电容优化技术,单元面积增加∼2%对应于√1.02 ≈ 1.01×单元尺寸的增加,这意味着由于单元尺寸增大而导致
294

被折叠的 条评论
为什么被折叠?



