02FPGA的巨大优势-FPGA新闻资讯社区-FPGA CPLD-ChipDebug

02FPGA的巨大优势

 

在FPGA诞生的初期,计算机研究员是最先感受到FPGA的巨大优势的。

在此之前,要想实现一个新计算机体架构的设计想法,必须要开发一个ASIC作为原型,在面板上安装很多个体积庞大的IC。

但是,与这些需要投入巨大成本和精力的方式不同,一旦用户创建了具有多个FPGA的原型板,就可以立即运行您设计的新架构。而且,修正和更改规格也变得轻松简单。

因此,许多新的架构应运而生因此,对可重构处理器的研究和对新FPGA架构的研究也开始蓬勃发展,在此之后,FPGA使用灵活,适用性强的特征在通信/图像处理领域也大获好评,并将其应用于路由器等通信网络的各种设备中。

四个字母 Field(现场) Programmable(可编程) Gate(逻辑门) Array(阵列)凸显了大量的逻辑门单元.

因此 n 年前我国的某一个 FPGA 公司在向国务院领导描述其产品的时候称他们做的是“万能芯片”(用这种通俗易懂的说法忽悠国家的经费)。

先购买再设计。

能有些夸张,但 FPGA 高度灵活,理论上来讲,只要有足够的资源(积木数量足够多)几乎可以实现数字域的任何功能,受限的是速度、功耗以及系统的成本。

1. 更大的并行度。

这个主要是通过并发和流水两种技术实现。

A:并发是指重复分配计算资源,使得多个模块之间可以同时独立进行计算。

这一点与现在的多核和SIMD技术相似。但相对与SIMD技术,FPGA的并发可以在不同逻辑功能之间进行,而不局限于同时执行相同的功能。举个简单例子说就是使用SIMD 可以同时执行多个加法,而FPGA可以同时执行多个加法和乘法和任何你能设计出来的逻辑。

SIMD全称Single Instruction Multiple Data,单指令多数据流,能够复制多个操作数,并把它们打包在大型寄存器的一组指令集。

B:流水是通过将任务分段,段与段之间同时执行。

其实这一点和CPU相似,只是CPU是指令间的流水而FPGA是任务间流水或者可以说是线程间流水。

2.可定制

FPGA 内部通过Lookup Table实现逻辑,可以简单理解为是硬件电路。可定制指的是在资源允许范围内,用户可实现自己的逻辑电路。通常情况下任务在硬件电路上跑是比在软件上快的,比如要比较一个64位数高32位和低32位的大小,在CPU下需要2条区数指令,两条位与指令,一条移位指令一条比较指令和一条写回指令,而在FPGA下只要一个比较器就行了。

3. 可重构

可重构指的是FPGA内部的逻辑可根据需求改变,减少开发成本。同时,使用FPGA复用资源比使用多个固定的ASIC模块为服务器省下更多的空间。

图片[1]-02FPGA的巨大优势-FPGA新闻资讯社区-FPGA CPLD-ChipDebug

图片[2]-02FPGA的巨大优势-FPGA新闻资讯社区-FPGA CPLD-ChipDebug

CPU和GPU、FPGA

CPU是一种非常通用的架构,它的工作方式基于一系列的计算机指令,也称为“指令集”。

简单来说,CPU从内存中提取一小部分数据,放在寄存器或者缓存中,然后使用一系列指令对这些数据进行操作。操作完毕后,将数据写回内存,提取另一小部分数据,再用指令进行操作,并周而复始。我把这种计算方式称为“时域计算”。

可以理解成,在图书馆看书,CPU就是你面前的书桌,内存就是书架,一条条的指令和大量的数据就是书架上的书。

运行程序,就是把从书架上取下来,放到书桌上去读。

(拿书的方式可以理解为就是不同的指令集)

运行完一个指令,操作完毕后,把处理好的数据,还放回书架。

不过,如果这些需要用指令进行处理的数据集太大,或者这些数据值太大,那么CPU就不能很高效的应对这种情况。这就是为什么在处理高速网络流量的时候,我们往往需要使用定制芯片,比如网卡芯片等,而不是CPU。这是因为在CPU中,即使处理一个字节的数据也必须使用一堆指令才能完成,而当数据流以每秒125亿字节进入系统时,这种处理方式哪怕使用再多的线程也忙不过来。

对于GPU来说,它所擅长的是被称作“单指令多数据流(SIMD)”的并行处理。这种处理方式的本质是,在GPU中有着一堆相同的计算核心可以处理类似但并不是完全相同的数据集。因此,可以使用一条指令,就让这些计算核心执行相同的操作,并且平行的处理所有数据。

简单理解,你不是一个人在读书,你是一群人在读书,在同时获取信息

然后对于FPGA而言,它实际上是CPU计算模型的转置。与其将数据锁定在架构上,然后使用指令流对其处理,FPGA将“指令”锁定在架构上,然后在上面运行数据流。

图片[3]-02FPGA的巨大优势-FPGA新闻资讯社区-FPGA CPLD-ChipDebug

我把这种计算方式称为“结构计算”,也有人称之为“空间计算”,与CPU的“时域计算”模型相对应。其实叫什么名称都无所谓。

但它的核心思想是,将某种计算架构用硬件电路实现出来,然后持续的将数据流输入系统,并完成计算。在云计算中,这种架构对于高速传输的网络数据非常有效,并且对于CPU来说也是一个很好的补充。

请登录后发表评论

    没有回复内容