什么是FPGA?

2021-05-11 17:06:43 2865

近些年来,FPGA概念越发被人熟知。许多挖矿行业都用过FPGA,大家应该都不陌生,但未必有过深入了解,对它还是充满各种疑问——FPGA到底是什么等一系列疑问。今日带着这些疑问,我们一起来聊聊FPGA。

什么是FPGA?

介绍它之前,就得先说说CPU和显卡(GPU)了。

CPU是率先出场的,它自出世就被称为计算机的"大脑",可一次性处理多种任务。虽然可同时处理多种任务,但对于挖矿这个单一、机械的重复性动作,根本无需这么多功能,所以它只能暗暗退场。

接着出场的是显卡(GPU),功能单一,只专注挖矿,且处理逻辑也简单,当初很多极客都用它来挖矿,有名的显卡(GPU)挖矿时期就是它开启的。它被用作处理图形渲染所需要的海量数学计算时,效率要高于多种任务缠身的CPU。

就在大家觉得GPU不错之时,FPGA跳出来了,那FPGA是什么呢?

FPGA是一种可以重构电路的芯片,是一种硬件可重构的体系结构。它的英文全称是Field Programmable Gate Array,中文名是现场可编程门阵列。

通过编程,用户可以随时改变它的应用场景,它可以模拟CPU、GPU等硬件的各种并行运算。通过与目标硬件的高速接口互联,FPGA可以完成目标硬件运行效率比较低的部分,从而在系统层面实现加速。

▲FPGA芯片示例

为什么要使用FPGA?

现如今通用处理器(CPU)的摩尔定律已入暮年,而机器学习和Web服务的规模却在指数级增长。人们使用定制硬件来加速常见的计算任务,然而日新月异的行业又要求这些定制的硬件可被重新编程来执行新类型的计算任务。

FPGA常年来被用作专用芯片(ASIC)的小批量替代品,然而近年来在微软、百度等公司的数据中心大规模部署,以同时提供强大的计算能力和足够的灵活性。

▲不同体系结构性能和灵活性的比较

那FPGA为何会如此之快?这得亏于同行的衬托。

CPU、GPU都属于冯诺依曼结构,指令译码执行、共享内存。而FPGA是无指令、无需共享内存的体系结构,这一结构使得FPGA芯片比CPU甚至GPU的能效高得多。

冯氏结构中,由于执行单元(如CPU核)可能执行任意指令,就需要有指令存储器、译码器、各种指令的运算器、分支跳转处理逻辑。由于指令流的控制逻辑复杂,不可能有太多条独立的指令流,因此GPU使用SIMD(单指令流多数据流)来让多个执行单元以同样的步调处理不同的数据,CPU也支持SIMD指令。

而FPGA每个逻辑单元的功能在重编程(烧写)时就已经确定,不需要指令。

如果使用GPU来加速,要想充分利用GPU的计算能力,batch size就不能太小,延迟将高达毫秒量级。而使用FPGA来加速的话,只需要微秒级的PCle延迟。

那FPGA为何比GPU的延迟低这么多?这本质上是体系结构的区别。

FPGA同时拥有流水线并行和数据并行,而GPU几乎只有数据并行(流水线深度受限)。

说了这么多,FPGA又有什么特点呢?

这么说吧,FPGA是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

与ASIC芯片相比,FPGA的一项重要特点是其可编程特性,即用户可通过程序指定FPGA实现某一特定数字电路。再者就是FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。

▲FPGA基本内部结构


声明:所有在本站发表的文章,本站都具有最终编辑权。本站全部作品均系微算力原创或来自网络转载,转载目的在于传递更多信息,并不代表本站赞同其观点和对其真实性负责,所产生的纠纷与本站无关。如涉及作品内容、版权和其它问题,请尽快与本站联系。

相关推荐

  • 微信:aspcool
  • QQ:580076
  • 手机:18992859886
  • 工作时间:9:00~18:00(周一至周五)