逐渐了解FPGA:FPGA有哪些应用?
扫描二维码
随时随地手机看文章
FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,FPGA 的基本结构包括可编程输入输出单元,可配置逻辑块,数字时钟管理模块等。为增进大家对FPGA的认识,本文将对FPGA以及FPGA的应用予以介绍。如果你对FPGA或是对本文内容具有兴趣,不妨继续往下阅读哦。
一、FPGA
FPGA和GPU内都有大量的计算单元,因此它们的计算能力都很强。在进行神经网络运算的时候,两者的速度会比CPU快很多。但是GPU由于架构固定,硬件原生支持的指令也就固定了,而FPGA则是可编程的。其可编程性是关键,因为它让软件与终端应用公司能够提供与其竞争对手不同的解决方案,并且能够灵活地针对自己所用的算法修改电路。
同样是擅长并行计算的FPGA和GPU,谁能够占领人工智能的高地,并不在于谁的应用更广泛,而是取决于谁的性能更好。在服务器端,有三个指标可供对比:峰值性能、平均性能与功耗能效比。当然,这三个指标是相互影响的,不过还是可以分开说。
GPU上面成千上万个核心同时跑在GHz的频率上是非常壮观的,最新的GPU峰值性能甚至可以达到10TFlops 以上。GPU的架构经过仔细设计,在电路实现上是基于标准单元库而在关键路径上可以用手工定制电路,甚至在必要的情形下可以让半导体fab依据设计需求微调工艺制程,因此可以让许多core同时跑在非常高的频率上。
相对而言,FPGA首先设计资源受到很大的限制,例如GPU如果想多加几个核心只要增加芯片面积就行,但FPGA一旦型号选定了逻辑资源上限就确定了。而且,FPGA里面的逻辑单元是基于SRAM查找表,其性能会比GPU里面的标准逻辑单元差很多。最后,FPGA的布线资源也受限制,因为有些线必须要绕很远,不像GPU这样走ASIC flow可以随意布线,这也会限制性能。
FPGA可以根据特定的应用去编程硬件,例如如果应用里面的加法运算非常多就可以把大量的逻辑资源去实现加法器,而GPU一旦设计完就不能改动了,所以不能根据应用去调整硬件资源。
目前机器学习大多使用SIMD架构,即只需一条指令可以平行处理大量数据,因此用GPU很适合。但是有些应用是MISD,即单一数据需要用许多条指令平行处理,这种情况下用FPGA做一个MISD的架构就会比GPU有优势。
所以,对于平均性能,看的就是FPGA加速器架构上的优势是否能弥补运行速度上的劣势。如果FPGA上的架构优化可以带来相比GPU架构两到三个数量级的优势,那么FPGA在平均性能上会好于GPU。
二、FPGA应用
FPGA的一个新应用是芯片开发时的逻辑功效验证。过去数字芯片在设计开发时,每开发至一个阶段就必须对已经完成的电路进行逻辑上、机制上的功效验证,以了解设计是否有误,关于此多是用计算机软件程序来进行逻辑推演(Simulation),不过用计算机程序来进行验证,其推演速度相当慢,所以每一项验证都要经过漫长等待才能知道结果。
对此或许有人会说:可以使用更快速的计算机来加快验证,但这其实是鸡与蛋的问题,计算机效能提升其实是因为芯片效能愈来愈高,芯片效能愈来愈高原因可用摩尔定律来解释,在摩尔定律下,芯片开发速度变快、同时也让芯片更复杂,所以「计算机的更快速」与「芯片的更复杂」是连动的,使用了更快速的计算机,也意味着要推演、验证更复杂设计的芯片,最根本的问题并还没有真正解决。
不过,由于FPGA的电路密度、运作效能在近年来大幅提升,所以开始有人提议用FPGA来取代纯计算机执行的验证软件,如此推演速度就可以获得大幅提升。举例来说,IBM、Sony、Toshiba三家业者所共同合作开发的Cell芯片,当芯片还在开发阶段时就已经使用FPGA来推演验证,以加速了解设计上的正确性。更具体来说,就是将新芯片的逻辑电路加载到FPGA,让FPGA充当新芯片来执行。
改采FPGA方式来验证,其优点不仅是加速验证程序,也可以节省验证成本,过去为了加速验证,必须动用大量的计算机,让众多的计算机同时都执行验证程序,才能让验证速度提升,有时其计算机的用量甚至要用及整个运算机房内的计算机,而今改成FPGA方式验证后,计算机用量就可大幅减少。
要注意的是,由于芯片的电路愈来愈复杂,即便使用高阶、大容量(逻辑闸)的FPGA,都很难单独用一颗FPGA就仿真出整个新芯片,所以通常是同时用上多颗FPGA芯片,每颗FPGA芯片仿真部份的新芯片电路,然后再将多个FPGA芯片进行串连,用多个芯片来同时仿真一颗新芯片。
另外,FPGA虽可以进行芯片设计的功效验证,但并不代表整个芯片的设计开发流程都可以加速,芯片电路设计的部份依旧需要工程师人工设计,只有功效验证上可以获得加速。再者,功效验证完全正确后并不代表芯片就此设计完成(除非该芯片确定直接以FPGA方式出货),后续在正式投产之前,还要经过频率收敛、电路化简等其它实体电路特性的调修,这方面FPGA也无从给予帮助。
以上就是小编这次想要和大家分享的有关的FPGA的内容,希望大家对本次分享的内容已经具有一定的了解。如果您想要看不同类别的文章,可以在网页顶部选择相应的频道哦。