首页 > 技术 > 内容

关于FPGA与GPU分析介绍

时间:2026-01-25  作者:Diven  阅读:0

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

从字面上讲这种说法并不对,因为你并不需要重连(rewire)FPGA,实际上是一个通过路由网络(routing network)连接的查找表 2D 网格,以及一些算术单元和内存。FPGA 可以模拟任意电路,但实际上只是在模仿,就像软件电路仿真器模拟电路一样。这个答案不恰当的地方在于,过分简化了人们实际使用 FPGA 的方式。接下来的两个定义能更好地描述 FPGA。

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

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

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

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

这里可以用 GPU 做类比。

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

FPGA的定义以及和GPU的类比

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

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

我认为计算 FPGA 正处于类似的转变中,现在还没有针对 FPGA 擅长的基本计算模式的简洁描述。但和潜在的不规则并行性、数据重用以及大多数静态的数据流有关。

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

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

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

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

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

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

猜您喜欢


保险丝作为电路保护的重要元件,受到了越来越多的关注。Littelfuse(力特)作为全球领先的电路保护解决方案供应商,其保险丝产品以高品质和多样化的规格。本文将...
2021-06-15 09:32:30
线性稳压器 (LDO) 是一种电子元件,用于将不稳定的直流电压转换为稳定的直流输出电压。为了确保 LDO 正常工作并满足设计要求,我们需要进行一些测量。以下是一...
2024-06-18 00:00:00
利用FPGA虚拟化突破时空限制在传统的FPGA开发模型中,使用者通常使用硬件描述语言(HDL)对应用场景进行建模,然后通过特定的FPGA开发工具将硬件模型映射...
2019-01-27 10:22:00
电流采样电阻作为电流测量和控制的重要元件,其性能直接影响系统的稳定性和精度。科达嘉(CODACA)作为业界知名品牌,其电流采样电阻因优良的品质和稳定的参数受到关...
2021-02-20 08:33:38
现代电子技术中,各种元器件的应用越来越,其中压敏电阻作为重要的电子元件,逐渐受到关注。压敏电阻是具有非线性电阻特性的元器件,应用于电路保护、信号处理等领域。本文...
2025-04-15 14:30:35
贴片电感是电子元件中重要的组成部分。在电路中起着关键作用。了解贴片电感的结构,有助于更好地使用。本文将介绍贴片电感的基本结构和特点。贴片电感的基本构造贴片电感的...
2025-04-11 20:30:07
防硫化电阻作为重要的电子元件,因其优异的防硫化性能和稳定的电阻值,应用于各种电子设备中。融欣(JACKCON)作为知名的电子元件制造商,其防硫化电阻产品以高质量...
2017-12-08 12:44:08
IIR滤波器设计(一)冲激响应不变法这种方法是通过将模拟滤波器频率特性H(s)反拉氏变换为h(t),再将h(t)等间隔抽样成h(n)后,对h(n)取Z变换求得H...
2023-06-15 11:00:00
立铣刀是常用的切削工具,应用于金属加工和机械制造中。根据不同的分类标准,立铣刀可以分为多种类型。按刀具的材质来分类,立铣刀主要分为高速钢立铣刀和硬质合金立铣刀。...
2013-11-09 00:00:00
贴片电阻的封装尺寸通常用英制代码表示,例如0402、0603、0805、1206等。这些数字代表电阻的长和宽,单位是英寸,需除以100换算成英寸值。例如0402...
2024-11-26 11:29:47