查看原文
其他

性能巅峰:Agilex FPGA架构强化全解读

老石 老石谈芯 2020-12-18

点击蓝字,关注老石谈芯


在今年的FPGA国际研讨会(ISFPGA’20)上,英特尔发表了一篇名为《Architectural Enhancements in Intel Agilex FPGAs》的论文,它在技术层面详细介绍了英特尔的新旗舰FPGA - Agilex系列的若干重大的架构创新。



相比Altera时代的顶级FPGA系列Stratix、特别是2016年推出的Stratix10 FPGA,Agilex在FPGA架构层面做出了诸多根本性的改变。总结起来主要有以下六个方面:

  • 全新的芯片布局

  • ALM微架构的优化设计

  • 重新设计的布线架构

  • 新一代HyperFlex寄存器结构

  • 多样的时序优化方法

  • 更加灵活的DSP微架构


有了这些新型架构的加持,Agilex相比Stratix10 FPGA取得了超过40%的性能提升。同时,它在设计的灵活性和稳定性等方面也取得了可观的提升。在接下来的文章中,老石将分别对这几点架构创新做深入解析。


这篇论文的全文,已上传至知识星球“老石谈芯进阶版”,请于文末扫码进入星球查看。


Agilex FPGA简介


在之前的文章《英特尔10纳米Agilex FPGA核心技术分析》中,老石曾对Agilex FPGA在系统层面的重要创新做过深度梳理。与进化多年的Stratix、Arria、Cyclone、Max等FPGA产品系列相比,Agiliex是英特尔收购Altera后推出的第一个全新的高端FPGA系列。正因如此,Agilex也被英特尔寄予了很高的期望。


Agilex这个名称源于Agile(敏捷)和Flexible(灵活)的合二为一,这两个特点也是现代FPGA技术最为核心的要素。作为新一代旗舰FPGA,Agilex上自然也装备了很多英特尔专属的“黑科技”。在半导体工艺上,Agilex是首个使用英特尔10纳米量产工艺的FPGA产品,它基于第三代FinFET晶体管技术进行制造,并在物理实现时对FPGA架构进行了针对性优化。


在系统层面,Agilex引入了对UPI、CXL以及PCIe Gen4/5的硬核支持。CXL全称是Compute Express Link,它是英特尔发起的一个缓存一致性标准。CXL的主要目的在于明确定义硬件加速器与处理器之间的互联标准。CXL在2019年3月提出,它的主要创始成员见下图。从中可以看出,CXL的主要发起者中除了英特尔之外,还有有四个互联网公司、两个服务器设备制造商,以及两个网络设备制造商。这也清晰的呈现出CXL的目标应用领域:网络数据中心、通信基础设施、云计算与云服务等等。而这些领域也正是当前FPGA大展身手的平台。关于CXL的更多介绍,可以参考之前的文章



接下来,老石就对Agilex FPGA在架构方面的主要升级做详细介绍。


全新的芯片布局


相比Stratix10 FPGA,Agilex在芯片布局和微架构设计上做出了多个重要改变。Agilex的芯片布局如下图所示。与现有的英特尔FPGA相似,Agilex也使用了EMIB(嵌入式多管芯互联桥接)技术,用来提供多个异构硅片之间的高速互联,特别是可编程逻辑部分与不同速度的收发器Tile之间的连接。在下图中可以看到,收发器固定位于芯片的东西两侧,而其他的非可编程逻辑结构,诸如通用IO接口、存储器接口、嵌入式SRAM、4核ARM CPU等等,都将固定位于芯片的南北两侧。



Agilex在芯片布局上的一个重大变化,就是将原本位于芯片中间的很多通用I/O、存储器I/O、硬核处理器等部分移到了芯片两端


在英特尔之前的几代FPGA中,例如Arria10和Stratix10 FPGA中,可编程逻辑阵列、I/O单元、存储器、DSP等逻辑结构都是按列间隔排列,如下图所示。事实上,这也是包括赛灵思在内的其他FPGA厂商所常用的芯片布局方法。


Arria10 FPGA的芯片布局


这种间隔排列的结构最大的优点在于,它能简化FPGA设计过程中的布局规划,特别是与I/O相关的布局。这是因为每个逻辑单元与I/O的距离近似,所以在布局和放置时有着比较高的灵活性。


然而,这种结构最突出的缺点是,它相当于人为的将可编程逻辑阵列分成了很多区域,这就极大的增加了跨区域的布线延时。同时,对于高速且大型的设计而言,这种结构很有可能造成局部的布局拥塞。相信有经验的FPGA工程师在很多实际项目中都遇到过这样的问题,那就是在一个设计中,可能有很多区域的设计拥堵严重,而其他区域却有着大量可用资源。这一问题的根源之一就是由于这种FPGA结构所致。


在Agilex里,这些I/O被移出了可编程逻辑阵列,并挪到了芯片的上下两侧,从而形成了一个更加规整的可编程阵列布局,如下图所示。由于消除了I/O单元对逻辑阵列带来的区隔,系统性能会得到提升,也会极大简化时序计算,并提升布局与放置的灵活性。



ALM微架构的设计优化


在微架构方面,Agilex对其中的ALM(Adaptive Logic Module)进行了设计优化,以进一步降低其传输延时。


ALM是FPGA的基本可编程单元,Stratix10 的ALM结构如下图所示。它主要包含一个6输入LUT,一个加法器进位链,以及4个输出寄存器。多个ALM可以组成更大的可编程阵列,名为LAB(Logic Array Block)。


Stratix 10 FPGA的ALM结构


和Stratix10相比,Agilex对ALM做了不少架构升级,如下图所示。其中,增加了两个LUT的快速输出端口,使得LUT的输出可以直连HyperFlex寄存器,而无需通过ALM内部的寄存器中转。这显然是针对利用HyperFlex对关键路径进行retiming的应用场景。同时,ALM内部的寄存器灵活性得到了极大增强,可以看到在Agilex的ALM里,每个寄存器的输入都增加了一个4输入MUX,同时寄存器可以通过两个独立的时钟进行控制。


Agilex FPGA的ALM结构


除了ALM之外,Agilex还特别增加了片上内存MLAB的逻辑密度。与Stratix10相比,单位面积内Agilex有着双倍的MLAB密度,而且50%的LAB可以配置成存储器模式。这个优化很明显是针对高带宽需求的应用领域,如AI相关的计算加速等。 


重新设计的布线架构


Agilex对FPGA的布线单元进行了重新设计。在下图中可以看到,每个交换节点都只连接一个逻辑功能单元(可以是LAB、RAM、DSP等),但可以连接多个其他的布线单元或者其他的交换节点。


相比之下,在之前的FPGA架构中,通常情况下一个交换节点会和左右两侧的两个逻辑功能单元进行连接。Agilex这样的简化设计使得它的整体布线架构更加简洁,也在很大程度上减少了交换节点MUX的输入,从而在保证布线灵活性的基础上,有效的降低容抗、并提升性能。事实上,在之前的研究中就表明,FPGA的布线节点并不需要保持全连接,这在之前的文章中有过详细解析。而Agilex则更进一步,直接做成了1对1连接,相信这也对FPGA设计工具和布局布线算法提出了更高的要求。



此外,Agilex对延时的同一性做了针对性的优化。在之前的FPGA中,由于存在不可避免的工艺和时序变化(variation),会特意对芯片上的各种硬件资源做差异化处理。也就是说,同样的硬件资源可能有着不同的延时分布。从理论上讲,FPGA设计工具会避免将慢速资源分配到关键路径上。但在实际应用中,这并非总是可行的。例如,在高速设计或深度流水线设计中,可能存在多条near critical path,这就给资源分配造成很大负担和限制。


在Agilex中,使用了基本同化的硬件资源,以及对应的布线方法,从而使得各个硬件资源的延时趋于近似。从下图中可以清楚的看到,相比Stratix10 FPGA,Agilex的延时分布非常平坦。这样就简化了布局布线工具对资源分配的过程,从而提升了开发效率和系统性能。



新一代HyperFlex寄存器结构


Stratix10 FPGA中首次引入了HyperFlex架构。它的主要思想就是在FPGA的布线网络上,加入很多名为Hyper-Register的小型寄存器,这样可以把原本比较长的时序路径分割成多个较短的路径,从而提升FPGA的时钟频率。


但是,理想很丰满,现实很骨感。HyperFlex这样的设计有着很好的初衷,但在实际应用中还是存在着很多的问题。比如,很多情况下并不会用到所有的hyper-register,这就需要每个寄存器都配备一个2:1选择器用来选通。然而这样的架构反而会带来较大的额外延时。此外,每个Hyper-Register并非由边沿驱动的“寄存器”(flip-flop),而是由脉冲驱动的“锁存器”(latch),这就使得它的时序特性较差,并且非常容易受工艺变化(process variation)的影响。


值得注意的是,在赛灵思推出的ACAP中,也采用了类似的设计理念。ACAP引入了名为“Imux寄存器”的新结构,并且对上述问题进行了针对性的改进。有关ACAP的详细技术解读,请参考这篇文章《赛灵思下一代计算平台ACAP技术细节全揭秘》


显然,英特尔也意识到了这些问题,并在Agilex FPGA中采用了“第二代”HyperFlex架构,并对上面的问题进行了大幅改进。新一代Hyper-Register的结构如下图所示,可以看到它把锁存器替换成了寄存器,并对驱动节点进行了重新设计。同时,Agilex在布线网络中移除了近三分之二的Hyper-Register,这无论对于面积、功耗、或是设计工具的优化来说,都是极为有利的。



多样的时序优化方法


Agilex主要采用了三种时序优化方法:retiming、clock skewing和time borrowing。例如,retiming可以在不改变逻辑功能的前提下,重新分配寄存器在延时路径中的位置,从而实现“取长补短”,降低整体的路径延时。这实际上与所谓的“木桶理论”类似,而retiming就是将其他更长的木板拆开,并将短板补齐,如下图所示。由于篇幅所限,有关clock skewing和timing borrowing的具体内容在本文不再详述,老石之后会在知识星球和微博里进一步解读。



更加灵活的DSP微架构


之前的文章曾经多次介绍过,FPGA在人工智能应用中的最大优势之一就是可以采用可变精度的字长表示和数学运算,从而带来巨大的性能提升。相比Stratix10 FPGA,Agilex的DSP单元增加了对FP16、FP19、BFLOAT16的支持,同时也保留了对FP32、INT9等多种数据表达方式的支持,这极大提升了DSP的配置灵活性,使其更加适用于AI相关的应用。


Agilex 的DSP逻辑架构如下图所示,它可以配置成多种结构,同时也可以在水平方向上进行扩展,从而支持向量和矩阵操作。



结语


下图展示了Agilex的工程样片与Stratix10的基准测试比较结果。可以看到,Agilex可以取得平均41%的性能提升。在这些基准测试的设计中,最高时钟频率的平均值是566MHz,其中最小284MHz,最高的时钟频率达到了951MHz!相比于传统FPGA设计的300MHz左右的时钟频率,这组数据也标志着FPGA的时钟频率提升到了一个全新的高度。同时应该注意到,尽管Agilex使用了10纳米工艺,但相比Stratix10而言,Agilex使用了更低的电压以降低功耗。在这个背景下,这些频率的提升大部分都归功于Agilex的架构创新。



这次发表的Agilex论文很好的介绍了英特尔新旗舰FPGA的重要架构创新,让人对Agilex量产并交付后的表现更加的期待。然而,这篇论文并没有过多介绍Quartus工具为了这些架构创新而做的改进。在Agilex发布之初,英特尔就宣布它将成为首款支持oneAPI的FPGA产品。那么,Agilex实际开发的灵活性、编译效率、实际性能、以及如何利用oneAPI对FPGA进行编程和开发,也都值得我们继续关注。


(注:本文仅代表作者个人观点,与任职单位无关。)


往期精选


什么是FPGA工程师的核心竞争力

FPGA在人工智能时代的独特优势

FPGA大佬有哪些

如何让软件和算法专家编程FPGA


关注微博:“老石谈芯的老石”,第一时间获取更多业界热点与动态


更多芯片与FPGA技术解读、知识与资料分享、以及深度互动答疑,欢迎加入知识星球:“老石谈芯-进阶版”,一个关乎技术与观点的互动社区。

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存