我知道FPGAFPGA 具有以下四大特点。
可编程灵活性高,适用于需求多元的专业应用领域。与 ASIC 全定制化 电路不同,FPGA 属于半定制电路。理论上,如果 FPGA 提供的逻辑单 元数足够高、逻辑容量规模足够大,通过编程可以实现任意 ASIC 的逻 辑功能。一方面,FPGA 编程可以后续反复修改,以适应不同应用场景 持续迭代的性能需求,而 ASIC 一旦流片完成后则固化无法更改。另一 方面,开发人员可以通过软件升级包在片上运行程序来修改芯片,甚至 可以实现远程升级,而无需替换芯片。因此,FPGA 的灵活性更高。

尽管 FPGA 灵活性更高,但相应的其单位成本也较高,在小批量应用中 更具性价比。实现相同逻辑的 ASIC 芯片,在流片量足够大的情况下,成本远低于 FPGA 芯片,而在小批量、高价值、专用的领域,采用 FPGA 将拥有更高的性价比。
首先,FPGA 在芯片开发流程上更加简化。ASIC 制造流程包括逻辑实 现、布线处理、流片等多个步骤,而基于 FPGA 可以大大简化开发流程。
其次,FPGA 的研发周期更短,导入市场速度更快。从设计周期维度看, 传统的 ASIC 或 SoC 等芯片设计周期往往会比较长,达 14-24 个月。而 根据 AI 电堂报道,FPGA 的开发时间平均能降低 50%以上,极大程度地 节省了设计时间成本,适用于应对下游新需求、新应用。对于产品开发 而言,快速导入市场往往有望帮助客户抢占先发优势,因而在诸多领域 FPGA 是非常重要的选择。

FPGA 主频较低,但并行计算效率高。FPGA 属于并行计算,一次可执 行多个指令算法,而传统的 CPU 都是属于串行计算,每次只能处理一个 指令集。通常情况下,CPU 往往采用增加频率的方式来提升处理速度, 因此其主频普遍比 FPGA 高。FPGA 虽然主频较低,但并行处理的方式 使其对诸多应用领域、场景的处理速度更快。目前 FPGA 作为 CPU 的 协处理器已经广泛应用在 Intel、AMD 等公司的产品上。
具体来讲,FPGA 高能效的优势本质是和 CPU体系结构存在区别。CPU、 GPU 均属于冯·诺依曼结构,指令译码执行、共享内存;而 FPGA 本质上是无指令、无需共享内存的体系结构,因而相比 GPU 和 CPU 更加高 效。
就指令结构而言,FPGA 逻辑单元功能在重编程时就已经确定,不需要 指令再进行译码执行。而对于冯氏结构,一方面,CPU 等执行单元可能 执行任意指令,因此需要指令存储器、译码器、运算器、分支跳转处理 等。另一方面,由于指令流的控制逻辑相对复杂,也不太可能拥有多条 独立的指令流。因此,指令流较长、数量有限,就造成了 CPU 等计算速 率提升存在困难。
就内存结构而言,FPGA 无需仲裁与共享内存。对于冯氏架构,内存的 作用有二,即保存状态和执行单元间通信。对于 CPU 而言,其内存是共 享的,故在访问时需要执行仲裁;同时,为了充分利用访问局部性,各 执行单元存在私有缓存,故需维持执行部件间缓存一致性。但对于 FPGA, 保存状态的需求角度,FPGA 的寄存器和片上内存是属于各自逻辑单元 的,无需不必要的仲裁和缓存,极大提升效率。而对于通信需求,FPGA 每个逻辑单元与周围单元的连接在重编程时就已经确定,不需要再通过 共享内存实现。FPGA 内部架构包含可编程的 I/O、DSP、memory、PCIE 等,因为大量存储单元的存在,FPGA 在做计算的时候可以直接从内部 存储单元读取数据。

GPU 拥有并行计算优势,FPGA 拥有流水线并行和数据并行,所以其速 率更快。GPU 从结构看,ALU 计算单元占了绝大部分,所以并行计算能 力很强。但 GPU 的弱点是 Cache 较小,需要大量的高速 DDR 保证数据 吞吐率,从而提升计算能力。此外,GPU 虽同为并行计算,但几乎只有 数据并行,也就是多个计算单元可以同时处理不同的数据包,但所有的 计算单元必须按照统一的步调、做相同的事,即单指令流多数据流模式 (SIMD,Single Instruction Multiple Data)。这就要求多个计算单元同时 输入、输出,故延迟随之增加。但 FPGA 不同,FPGA 同时拥有流水线 并行和数据并行两种模式,例如,处理一个数据包需要多个步骤,FPGA 可以搭建与之对应的多级流水线分别处理多个步骤,每个数据包流经多 级之后,处理即完成、能够立刻输出。
FPGA 的使用必须和配套 EDA 软件相结合,意味着 FPGA 芯片设计公 司需要同时具备软硬件能力。软件工具研发水平甚至决定了硬件规模和 性能所能达到的高度。EDA 的主要功能包括设计输入(DesignEntry)、 综合(Synthesis)、仿真(Simulation)、实现(Implementation)和下载 (Download)等。

配套 EDA 软件设计复杂,壁垒较高。用户端在使用 FPGA 时,需将 RTL 代码通过逻辑综合工具、映射工具等生成下载到芯片里,结合时序、功 耗分析工具、在线调试工具等,实现功能。在整个软件工具设计流程中, 第三方厂商除往往仅能提供仿真工具,其他复杂的环节往往需要 FPGA 厂商所提供的软件工具来覆盖,故其存在着较大软件研发难度。
FPGA 厂商需要研发人员同时兼具软硬件思维。除了考虑 EDA 软件和 芯片架构的匹配和一致性,编程设计时还要考虑应用场景多样性、时序 模型的复杂性和用户使用体验及效率等。Xilinx 公司研发人员约为 1500 人,软硬件人员基本相同。
但 FPGA 设计的相关人才培养难度大、十分短缺。Intel 和 IDC 合作发 布的《FPGA 产业发展现状及人才培养研究报告》中提到,人才匮乏是 阻碍 FPGA 产业发展的首要因素,超过 70%的被访企业认为中级水平以 上的工程师严重不足。而 FPGA 人才的高校培养又存在缺乏培养体系、 与现实脱节、学习周期长等诸多问题,导致了相关研发人员的进一步短 缺。