FPGA的特点是什么?
首先一大特点就是灵活性,FPGA 就像上文所说的 “白纸”一样,可以通过 “刷代码”的方式改变用途和功能。
对于数据中心来说,很多机器是面向不同客户出租的,因此硬件的用途经常会发生改变。而这时如果用 FPGA 作为加速卡就会非常方便了,设备用途改变的同时,FPGA 这边也同步进行改变就可以了。
特别是对于人工智能领域的优势更为明显,比如现在流行一种神经网络,没准过一段时间另一种神经网络又变得热门了,而且算法也会随之时间不断更新。这种情况下可能就需要不断更换硬件 , 最大限度的去贴合算法需求。而 FPGA 就方便很多了,需要进行调整的时候重新刷入就可以了,在节约时间的同时也减少了成本。
FPGA 除了灵活性以外,另外一大特点就是并行了。如何理解并行呢?
比如我们在周末要做家务的时候,用洗衣机洗衣服 15 分钟,洗菜 5 分钟,做饭 20 分钟。那么一共需要多少时间呢?如果顺序进行这些家务的话,那就需要 40 分钟。但是我们可以发现,在洗衣机洗衣服的时候我们是可以同时干其它家务的,这样一来我们只需要 25 分钟就可以做完这些家务了。
由此可见,并行可以大大提高效率,也正是因为这样,FPGA 可以帮助 CPU 加速计算。
但值得说明的是,不是所有任务都适合并行。比如我们必须在洗完菜之后才能做饭,这两个任务就不能并行完成。因此 FPGA 的加速往往是针对一种或者一类任务,并不会像 CPU 那样解决所有问题。
什么是 FPGA 芯片?
提起 5G 大家很容易想到华为,在华为等的 5G 基站中有一类芯片,它的存在感不是很强,但它的作用很大,它就是 FPGA 芯片。
如果我们想快速了解一款芯片,最简单的方法就是调查它功能和用途,但这个方法对于 FPGA 来说并不适用。
如果你真的去查 FPGA 的应用场景,你会得到一个很长的名单,比如:通信网络、物联网、信息安全、数据中心、人工智能、卫星导航、医疗器械、图像处理、视频编码、云计算、军工等等。
可能有些人查到一半就开始懵了,FPGA 芯片的应用范围跨越了太多行业。那么 FPGA 芯片到底是什么呢?
答:是白纸。
如果我们把其它各种专用芯片比作不同风格的画作,那么 FPGA 芯片就是白纸。我们可以在白纸上画出各种不同风格的画作,这就是 FPGA。
假如你是一块 FPGA 开发板,你在大学实验室里的一天可能是这样度过的:
清晨,一批大二学生进入了实验室。他们为了完成昨天晚上未完成的项目,开始急匆匆的调整着相关的硬件。最终,他们完成了,FPGA 开发板变成了音乐播放器。
中午,一帮大三学生赶到了实验室,他们要参加省里的智能小车比赛。还是这块 FPGA 开发板,这回被他们借去测试智能小车的代码。
下午,一个大四的学生来到了实验室,还是借这块 FPGA 开发板。不过他是用来做毕业设计的,他要做一个电梯的控制模块。
就这样,一天过去了。同样一块 FPGA 开发板,上午它是音乐播放器,中午它是智能小车,下午它又是电梯控制模块。只是因为每次刷入的代码不同,FPGA 芯片就具备了完全不同的功能,这就是 FPGA 的神奇之处。