首页 > 技术 > 内容

如何能够实现通用FPGA问题?

时间:2025-12-06  作者:Diven  阅读:0

FPGA 应用的今天,康奈尔大学计算机科学助理教授 Adrian Sampson 思考是否走在正确的路上,如何能够实现通用 FPGA 等问题。

计算 FPGA

什么是 FPGA?

我认为架构社区对这个概念没有一致的定义。我们来看三个可能的答案:

定义 1:FPGA 是一堆晶体管,你可以把连接(wire up)起来做出任何你想要的电路。就像一个纳米级面包板。使用 FPGA 就像芯片流片,但是你只需要买这一张芯片就可以搭建不一样的设计,作为交换,你需要付出一些效率上的代价。

我不喜欢这个答案。因为既没有从字面上解释清楚人们是如何使用 FPGA 的,也不是一个贴切的比喻。

从字面上讲这种说法并不对,因为你并不需要重连(rewire)FPGA,实际上是一个通过路由网络(routing network)连接的查找表 2D 网格,以及一些算术单元和内存。FPGA 可以模拟任意电路,但实际上只是在模仿,就像软件电路仿真器模拟电路一样。

这个答案不恰当的地方在于,过分简化了人们实际使用 FPGA 的方式。接下来的两个定义能更好地描述 FPGA。

定义 2:在原型设计和小批量生产中,FPGA 相当于定制芯片的廉价替代方案。如果你要搭建一个路由器,你可以提供现成的 FPGA,并根据你需要的功能编程,从而避免流片的巨大成本。或者如果你要设计一个 CPU,你可以将 FPGA 作为原型:你可以围绕构建一个真正可引导的系统,在把设计的 CPU 送到晶圆厂之前,用来测试和演示。

电路模拟是 FPGA 的经典主流用例,这也是 FPGA 最早出现的原因。FPGA 的关键在于硬件设计是用 HDL 形式编码的,而且买一些便宜的硬件就可以得到和 ASIC 相同的效果。当然,你不可能在 FPGA 和真正的芯片上使用完全相同的 Verilog 代码,但至少抽象范围是一样的。

定义 3:FPGA 是伪通用计算加速器,与 GPGPU(通用 GPU)类似,FPGA 可以很好地卸载特定类型的计算。从编程角度上讲,FPGA 比 CPU 更难,但从工作负载角度上讲 FPGA 是值得的:和 CPU 基线相比,好的 FPGA 实现可以提供数量级的性能和能量优势。

这是与 ASIC 原型设计不同的一个用例。和电路仿真不同,计算加速是 FPGA 的新兴用例。这也是微软最近成功加速搜索和深度神经网络的原因。而且关键的是,计算实例并不依赖于 FPGA 和真正 ASIC 之间的关系:开发人员针对基于 FPGA 的加速编写的 Verilog 代码不需要与用来流片的 Verilog 代码有任何的相似性。

这两种实例在编程、编译器和抽象方面存在巨大差异。我比较关注后者,我将其称为「计算 FPGA 编程」(coMPUtational FPGA progRAMming)。我的论点是,目前计算 FPGA 的编程方法都借鉴了传统的电路仿真编程模型,这是不对的。如果你想开发 ASIC 原型的话,Verilog 和 VHDL 都是正确的选择。但如果目标是计算的话,我们可以也应该重新思考整个堆栈。

GPU 和 FPGA 的类比

让我们开门见山地说吧。FPGA 是一类很特殊的硬件,用来高效执行模拟电路描述的特殊软件。FPGA 配置需要一些底层软件——是为了 ISA 编写的程序。

这里可以用 GPU 做类比。在深度学习和区块链盛行之前,有一段时间 GPU 是用来处理图形的。在 21 世纪初,人们意识到在处理没有图形数据的计算密集型任务时,也会大量使用 GPU 作为加速器:GPU 设计师们已经构建了更通用的机器,3D 渲染只是其中一个应用而已。

计算 FPGA 遵循了相同的轨迹。我们的想法是要多多使用这一时兴的硬件,当然不是为了电路仿真,而是利用适合电路执行的计算模式。用类比的形式来看 GPU 和 FPGA,则:

「GPU 之于图形」相当于「FPGA 之于电路仿真」

为了让 GPU 发展成今天的数据并行加速器,人们不得不重新定义 GPU 输入的概念。我们过去常常认为 GPU 接受奇特的、强烈的、特定领域的视觉效果描述。我们实现了 GPU 执行程序,从而解锁了真正的潜力。这样的实现让 GPU 的目标从单个应用域发展为整个计算域。我认为计算 FPGA 正处于类似的转变中:

「GPU 的海量、常规数据并行」相当于「FPGA 具有静态结构的不规则并行性」

现在还没有针对 FPGA 擅长的基本计算模式的简洁描述。但和潜在的不规则并行性、数据重用以及大多数静态的数据流有关。和 GPU 一样,FPGA 也需要能够体现这种计算模式的硬件抽象:

「GPU 的 SIMT ISA」相当于「FPGA 的 ____」

上式缺少的内容即,在 FPGA 运行的软件上类似 ISA 的抽象。

RTL 不是 ISA

Verilog 用于计算 FPGA 的问题在于在低级硬件抽象中效果不好,在高级编程抽象中的效果也不好。让我们通过反证法想象一下,如果用 RTL(寄存器传输级)取代这些配件会是什么样。

配件 1:Verilog 是符合人体工程学、面向较低级抽象的高级编程模型。在我们的思想实验中,计算 FPGA 的 ISA 比 RTL 的抽象层次更低:例如网表(netlist)和比特流(bitstream)。而 Verilog 是更高效也更高级的编程模型。

甚至 RTL 专家可能也无法相信 Verilog 是可以高效开发主流 FPGA 的方式。不会把编程逻辑推向主流。对于经验丰富的硬件黑客来说,RTL 设计似乎是友好而熟悉的,但与软件语言之间的生产力差距是不可估量的。

配件 2:Verilog 是 FPGA 硬件资源的低级抽象。也就是说,Verilog 之于 FPGA 就像 ISA 之于 CPU。Verilog 可能没那么方便编程,但对于高级语言编译器来说,是一个很好的目标,因为直接描述了硬件中在发生什么。如果你需要维持最后几个百分点性能的时候,是最后的编程语言选择。

事实上,对现在的计算 FPGA 来说,Verilog 实际上就是 ISA。主要的 FPGA 供应商工具链会将 Verilog 作为输入,而高级语言的编译器则将 Verilog 作为输出。供应商一般会对比特流格式保密,因此 Verilog 在抽象层次结构中会处于尽可能低的位置。

把 Verilog 当做 ISA 的问题是和硬件之间的距离太远了。RTL 和 FPGA 硬件之间的抽象差距是巨大的:从传统角度讲至少要包含合成、技术映射以及布局布线——每一个都是复杂而缓慢的过程。FPGA 上 RTL 编程的编译/编辑/运行周期需要数小时或数天,更糟糕的是,这是一个无法预测的过程:工具链的深层堆栈可能会掩盖 RTL 中的改变,这可能会影响设计性能和能源特性。

好的 ISA 应该直接展示底层硬件未经修饰的真实情况。像汇编语言一样,其实不需要很方便编程。但也像汇编语言一样,编译速度需要非常快,而且结果可预测。如果想要构建更高级的抽象和编译器,就需要一个不会出现意外的低级目标。而 RTL 不是这样的目标。

正确的抽象?

我不知道应该用什么样的抽象取代 RTL 在计算 FPGA 中的位置。实际上,只要 FPGA 供应商一直保持底层抽象的保密性和子 RTL 工具链的专有性,那就不可能替换 Verilog。或许只有等到硬件发展了才能找到这一问题的长期解决方案,就像 GPU 之前做过的一样:

「GPU 和 GPGPU」相当于「FPGA 和 ____」

如果计算 FPGA 是特定类算法模式的加速器,那当前的 FPGA 并不能理想地实现这一目标。在这个游戏规则下能够击败 FPGA 的新硬件类型,才可能带来全新的抽象层次结构。新的软件栈应该摒弃 FPGA 在电路仿真方面的遗留问题,以及 RTL 抽象。

审核编辑:黄飞

 

猜您喜欢


现代电子产品中,封装技术的选择对整体性能和可靠性起着非常重要的作用。BGA(BallGridArray)封装是近年来受到广泛应用的一种高效能封装形式。本文将重点...
2025-03-06 02:31:56
1206贴片电阻是一种常用的电子元件,其阻值的选择遵循一定的标准规范。常用的标准阻值系列包括E24、E48、E96和E192等。 E系列数字表示每个十倍值范围内...
2024-11-29 10:25:58
TO-263-3是一种广泛使用的表面贴装封装类型,通常用于各种电子元件,特别是功率设备和线性稳压器。由于其独特的设计和优越的性能,TO-263-3在现代电子产品...
2025-02-24 15:19:34
贴片电阻01B表示的是封装尺寸,而非阻值。01B封装尺寸通常为0.5mm x 0.25mm,也就是我们常说的01005封装。至于该封装的电阻阻值多大合适,则取决...
2024-11-29 10:26:27
薄膜电阻作为关键的电子元件,应用于各种电路设计中。作为薄膜电阻领域的知名品牌,宇阳(EYANG)凭借其高品质的产品和稳定的性能,受到了众多电子工程师和制造商的青...
2022-09-26 18:26:21
LDO 与传统线性稳压器的区别线性稳压器(Linear Regulator)是一种常见的电源管理芯片,用于将较高的直流电压转换为稳定的低电压输出。LDO(Low...
2024-05-30 00:00:00
铜管件是应用于建筑、暖通、给排水等领域的重要连接材料。由于其优良的导热性和耐腐蚀性,铜管件在各种工业和民用设施中有着着不可少的作用。铜管件主要包括弯头、三通、法...
2010-01-28 00:00:00
汽车保险丝作为保护电路的重要元件,其规格和品牌选择变得尤为重要。AEM作为汽车电子配件中的知名品牌,其汽车保险丝在市场上受到关注。本文将围绕“AEM汽车保险丝大...
2021-10-14 11:33:30
贴片电阻2010,这个名称看起来很专业,其实理解起来很简单。它指的是一种表面贴装电阻,尺寸为2.0mm长,1.0mm宽。想象一下,电子产品内部的电路板上密密麻麻...
2024-11-26 11:29:24
贴片电阻2002指的是其封装尺寸为2.0mm x 0.2mm,而非阻值。阻值的选择取决于电路设计需求,没有 universally 最好用的数值。实际应用中,2...
2024-11-29 10:25:57