在日前召开的 FPGA 领域的学术顶会 --2019 年“FPGA 国际研讨会”上,赛灵思发表了两篇长论文,详细介绍了赛灵思“自适应计算加速平台”ACAP 的系统架构和技术细节。本文将对 ACAP 的主要架构创新进行深入解读,让各位先睹为快。

 

 

ACAP 概述

ACAP 是赛灵思在 2018 年推出的新一代计算平台。在发布伊始,赛灵思新任掌门人 Victor Peng 就再三强调,ACAP 并不是 FPGA,而是整合了硬件可编程逻辑单元、软件可编程处理器、以及软件可编程加速引擎的计算平台产品,是赛灵思“发明 FPGA 以来最卓越的工程成就”,足可见这个产品系列的重要性。

 


与其说 ACAP 是某种具体的芯片产品,不如说它像 FPGA 一样,代指一种芯片架构。而赛灵思这次发表的论文,主要介绍的是基于 ACAP 架构的首款产品,名为 Versal,并将基于台积电的 7 纳米工艺制造。相比传统的 FPGA 架构,Versal ACAP 在系统架构、电路结构、互联方式等很多方面进行了大胆革新,这也是本文将要讨论的重点。

 

芯片架构

Versal ACAP 的芯片布局如下图所示。总体来看,它与传统 FPGA 结构非常类似,主要包含可编程逻辑部分、高速 I/O 与收发器、嵌入式处理器、存储器控制等 FPGA 的常见硬件资源与模块。

 


值得注意的是,ACAP 架构与传统 FPGA 有两点主要区别:

芯片顶端(北侧)包含了 AI 加速引擎阵列,它们主要用来加速机器学习和无线网络等应用中常见的数学计算。然而,关于 AI 引擎的具体结构,在这篇论文中并未提及。

 

在传统 FPGA 片上互联技术的基础上,ACAP 采用了固化的片上网络(NoC),这主要是针对高带宽、高吞吐量的应用场景,如存储器控制和 AI 应用等,在上图中也可以清晰的看到 NoC 与这些应用模块的紧密互联。

 

关于 NoC 的具体技术细节,在本次会议有另外一篇论文进行详细阐述,见下图。本文将对其进行简单概述,并会在下篇文章中深入解析。

 


除 NoC 以外,ACAP 选择将很多常用的 IP 固化在芯片上,以提高性能、稳定性,并减少额外的可编程逻辑资源的使用。除了常见的 PCIe、DDR 控制器、以太网 MAC 之外,ACAP 还选择将嵌入式处理器和芯片管理单元进行固化,这令人有些意外。

 

在论文中介绍,在亚马逊 AWS F1 实例中使用的片上管理单元占据了芯片面积的很大部分,如下图所示,而这也是赛灵思选择在 ACAP 上对这类逻辑进行固化的主要原因。

 


在可编程芯片上固化逻辑其实是一把双刃剑,在提升性能和降低逻辑单元使用率的同时,牺牲的是被固化单元的灵活性。因此,往往只会选择固化已经由成熟标准的逻辑单元,比如上文提到的通信接口与内存控制器等。对于芯片管理单元,固化后是否仍能适用于不同的应用场景?是否比集成 ARM 等硬核处理器更有效?这些问题就需要通过实际使用得到答案。

 

Versal ACAP 架构的一个主要的创新之处,就是采用了非常规整的可编程逻辑阵列和时钟域分布。老石之前曾介绍过一种名为“Overlay”的 FPGA 虚拟化技术,它的本质就是在 FPGA 的硬件层之上,抽象出一层虚拟的 Overlay 结构,如下图所示。Overlay 层基于 CGRA 等规整的逻辑结构,对应用层非常友好,但对不规整的 FPGA 底层架构而言,实现起来势必会造成资源的浪费和性能的损失。

 


ACAP 架构采用了更加规整的可编程逻辑阵列,以及分布均匀的时钟域,理论上这是极其有用的创新,特别是对于布局布线后的设计而言。通过这种方式,使得 IP 接口可以复用,即把一个 IP 从一个位置挪到另一个位置时,不需要对整个设计重新编译,只需要单独处理修改的部分即可。

 

更重要的是,这使得用户可以重复使用已经完成布局布线的“半成品”或“模板”,只需要在事先保留的区域内加入新设计即可,这样可以极大的减少编译时间。这个创新与目前 FPGA 已有的划分可编程区域等技术类似,但更进一步。只可惜,在这篇论文中没有给出这个创新的任何实例或数据,因此很难确定这项技术是否已经实现,还是仅仅停留在理论层面。

 

CLB 微结构

CLB 是可编程逻辑块的缩写,它包含了多个可编程逻辑单元及其互联。与传统 FPGA 相比,Versal ACAP 对它的 CLB 微结构进行了重大革新,用“翻天覆地”来形容也不为过。其中,最主要的架构变化有以下四点。

 

首先,CLB 的容量相较 UltraScale FPGA 架构扩大了四倍,包含 32 个 LUT 和 64 个寄存器,见下图。

 


这样做的主要目的,是为了减少全局布线资源的使用。ACAP 为每个 CLB 设置了单独的内部高速互联,与全局布线相比,这些内部互联更加快速,布线逻辑也更简单,从而减轻了全局布线的压力与拥挤。如下图所示,采用了大 CLB 后,有 18%的布线可以通过内部互联完成。而对于传统 FPGA,只有 7%的布线能在 CLB 内完成,其他都需要占用全局布线资源。

 


第二,每个查找表结构(LUT)增加了一个额外的输出,这是一个重要的架构变化。传统 FPGA 的 LUT 结构为 6 输入、2 输出,如下图所示,可以实现任意的 6 输入逻辑,或者两个 5 输入逻辑。当添加了一个新的输出 O5_2 之后,就可以实现两个独立的 6 输入逻辑功能。

 

这种结构的另外一个好处,是允许更多的逻辑功能进行合并,以减少 LUT 的使用量。FPGA 设计工具会根据两个 LUT 的距离,判断这两个 LUT 里的逻辑能否进行合并。例如,与 UltraScale 架构相比,当两个 LUT 之间的距离小于 5 个 Slice 网格距离时,Versal ACAP 架构能多合并 21.5%的逻辑功能,从而减少相应的硬件资源使用。

 


作为代价,在 UltraScale 架构中存在的 Wide Function 功能被移走。因此如果需要实现诸如 32:1 的选择器时,就可能会扩展到多个 Slice,对时序造成负面影响,并且需要额外的硬件资源支持。

 

第三,每个 Slice 的进位链逻辑结构进行了彻底修改,如下图所示。事实上,一直是现代 FPGA 标配的固化进位链被完全移除,取而代之的是使用 LUT 中新增加的 cascade_in 和 LUT 逻辑完成加法结构。

 


论文中对这部分的讨论过于简单,对这个重要的架构改变没有给出详细原因,对上图中 Versal 进位链的具体实现结构也含糊不清。老石猜测,这个改变的主要原因还是由于新增加的第二个 LUT 输出,如果继续保留进位链逻辑,会导致 LUT 间延时过大,从而影响时序。但是,这种新的进位链结构是否会对算术运算的性能产生负面影响,赛灵思并未在论文中给出数据佐证。

 

第四,引入了名为“Imux 寄存器”的新结构。这种新寄存器架构很明显是用来对标英特尔的 HyperFlex 架构。Imux 寄存器共有四种模式,如下图所示。

 


这种架构只在 CLB 之前引入了用于优化时序、增加流水线的寄存器。同时,这些寄存器包含了复位、初始化、时钟使能等常见寄存器功能。这与 HyperFlex 的海量寄存器架构有着明显不同,如下图。Imux 没有在全部布线资源上都设置寄存器,因此引入的额外延时会更小。但在深度流水线设计中,这种结构的绝对性能应该不如 HyperFlex 架构。

 


上面的四种 Imux 使用模式在本文中不再赘述,例如下图展示了其中的 Time Borrowing、Pipelining、以及二者结合的模式。但这几种方式与传统的流水线和 Retiming 方式并没有本质区别。

 


关于 Imux 寄存器架构,这篇论文最严重的问题在于实测数据和对比很少。这样的实验和论述,使得这部分内容更像一篇白皮书,而非高端学术论文。严谨的学术方法是需要兼顾可重复性和标准性,例如,选取一些标准的参考设计和 Benchmark,分别使用英特尔的 HyperFlex 架构、赛灵思的 UltraScale 架构,以及这里提出的 Imux 架构,进行实现,并测量这些在这些架构上分别能得到多快的运行频率。很显然,这篇论文在很多地方都存在这样的问题。

 

3D 芯片制造技术 SSIT

ACAP 采用了赛灵思的第四代硅片堆叠技术 SSIT。关于这个技术的细节,老石在之前的文章中详细介绍过。这个技术本质上是将多个小型硅片,放置在一个大的无源硅中介层上,然后通过硅通孔和芯片连线进行互联,从而组成一个大芯片。

 


这种技术非常适合在每代半导体工艺的发展早期,特别是制造大型硅片的良率较低的情况。另外,SSIT 的灵活性比较高,技术思路比较直接,发展至今已有四代,已经比较成熟。

 

不过,这种技术的主要问题非常明显,主要有以下几点:

当工艺成熟后,这种方式带来的良率提升就不甚明显,综合成本反而会上升。

 

将多枚硅片通过硅中间层组合,可能会带来明显的性能降低。这主要受制于硅片间的互联资源,以及互联导线的巨大延迟。

 

该技术会限制 FPGA 配置的灵活性,因为它相当于人为的增加了多个设计区域和边界。这也对设计工具的优化能力造成了很大的挑战。

 

在这篇论文中,Versal ACAP 主要针对上面的第二和第三点进行了优化和改进。例如,在 Versal 架构中,采用了更多的硅片间的互联通道(SLL channel),如下图所示。同时,这些互联通道的传输延时也得到了进一步优化,相比传统连线的延时下降了 30%。

 


片上网络 NoC

片上网络是 ACAP 的主要技术革新之一。对于诸如 DDR、高速网络、PCIe 等高速接口与应用来说,通常有着很高的带宽要求。这一方面需要采用高位宽的总线,另一方面需要高速时钟。因此,传统的 FPGA 设计方法都是通过对总线进行深度流水线来实现。但对于一个大型设计而言,这种方法会很快造成片上布线资源的拥挤。这就需要寻找有效的方法,同时解决高速数据传输和低拥堵布线两个问题。

 

ACAP 采用了片上网络(Network-on-Chip,NoC)技术应对上述问题。在传统的 FPGA 布线资源之外,引入了 NoC 网络,将需要进行高速数据传输的内容转化成基于数据包的形式,通过 NoC 的交换机逻辑实现数据交换,如下图所示。与网络应用类似,这种片上网络也能对各类的传输进行服务质量控制(QoS)。

 

 

这种方法最大的优点是在系统层面,将数据传输与数据计算进行了分离,从而在保证带宽的基础上,缓解了系统的布局布线压力。例如,数据计算可以在 AI 引擎或片上其他部分实现,而不需紧靠 DDR 控制器等高速接口。

 

不过,这种方法的主要问题是引入了额外的传输延时,这对于需要固定延时或者低延时的应用可能会有影响。在这篇论文中,并没有提及延时的数据。此外,片上网络的位宽是固定的,无法对应用进行优化,这也有可能对不同应用的系统性能造成负面影响。

 

结语

ACAP 作为赛灵思重磅推出的下一代计算平台,从发布之初就备受瞩目。究竟 ACAP 是不是 FPGA,这个问题其实并不重要,重要的是 ACAP 的本质仍然是基于可编程逻辑阵列的异构计算芯片。与传统 FPGA 架构相比,ACAP 带来了诸多系统和微结构的换代和革新,这也让人们看到了业界为了延续摩尔定律的发展所做的不懈努力。

 

就这篇论文而言,虽然很多地方的学术严谨性有待提高,但瑕不掩瑜。作为第一篇完整的介绍 Versal ACAP 架构细节的论文,它还是为我们带来了很多对 ACAP 新结构、新技术的详细阐述和讨论,也让我们得以一窥 ACAP 的技术细节。