加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
    • Agilex FPGA 简介
    • 全新的芯片布局
    • ALM 微架构的设计优化
    • 重新设计的布线架构
    • 结语
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

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

2020/04/04
150
阅读需 17 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

在今年的 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、高性能与可重构计算等技术在学术界顶级会议和期刊上发表过多篇研究论文。