知乎上对FPGA比较中肯的意见,自己比较认同的

2019-04-14 20:59发布

作者:请叫我总工
链接:https://www.zhihu.com/question/52743455/answer/132555033
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

1.FPGA到底相较于传统处理器在哪些方面更有优势?是否类似于显卡与CPU的关系呢?
FPGA相对于传统的CPU,优势在于以下几点: 1)更大的并行度。这个主要是通过并发和流水两种技术实现。A)并发是指重复分配计算资源,使得多个模块之间可以同时独立进行计算。这一点与现在的多核和SIMD技术相似。但相对与SIMD技术,FPGA的并发可以在不同逻辑功能之间进行,而不局限于同时执行相同的功能。举个简单例子说就是使用SIMD 可以同时执行多个加法,而FPGA可以同时执行多个加法和乘法和任何你能设计出来的逻辑。B)流水是通过将任务分段,段与段之间同时执行。其实这一点和CPU相似,只是CPU是指令间的流水而FPGA是任务间流水或者我们可以说是线程间流水。2)可定制。FPGA 内部通过Lookup Table实现逻辑,我们可以简单理解为是硬件电路。可定制指的是在资源允许范围内,用户可实现自己的逻辑电路。通常情况下任务在硬件电路上跑是比在软件上快的,比如要比较一个64位数高32位和低32位的大小,在CPU下需要2条区数指令,两条位与指令,一条移位指令一条比较指令和一条写回指令,而在FPGA下只要一个比较器就行了。3)可重构。可重构指的是FPGA内部的逻辑可根据需求改变,减少开发成本。同时,使用FPGA复用资源比使用多个固定的ASIC模块为服务器省下更多的空间。
FPGA与CPU的关系和GPU与FPGA的关系是非常类似的,我们可以认为是co-processor。但实际上FPGA/GPU和CPU之间的关系是不对等的,通常情况下FPGA/GPU是以设备形式存在。简单说就是FPGA/GPU需要CPU管理,而且传输数据时需要在内存中进行一个copy操作把数据从内存拷贝到设备内存中。近年Intel的HARP和IBM的CAPI改变的这一局面,Intel将FPGA集成到CPU中,两者通过QPI相连,而IBM的CAPI/Nvink使得FPGA/GPU与CPU共享内存,从某种意义上说改变了FPGA/GPU的角 {MOD},也就是说他们和CPU的关系是对等的(这是很重要的改变!!!)。更详细的请关注FPL16的keynote,或者查阅IBM CAPI相关信息。 2.fpga在未来五到十五年里的发展方向会是怎么样?特别是在消费电子领域会有爆发点吗?
对消费电子领域研究不多,我的观点是FPGA在消费电子上使用更多的是成本问题,FPGA还是挺贵的,除非能把成本降下来,不然用在消费电子上会增加成本,太贵的手机买的人也不多。但是FPGA在企业级应用上使用是越来越广,比如说机器学习,大数据,数据库,DNA匹配和检测等。比如说现有的IBM的Netezza系统,Kickfire的Kickfire系统,Microsoft的Bing引擎等等。 至于题主提到的没感觉单片机和FPGA的区别,我猜是你跑的应用太简单了或者说数据集太小了。如果你是比较跑马灯或者电梯控制器在FPGA和在单片机上的区别,可以说很难看出FPGA的优势,甚至说FPGA的开发过程会让你觉得单片机更加方便。你可以试着跑一个复杂一点的算法和大一点的数据集,比如说基因序列比对 smith waterman算法。在CPU上需要运算几十小时,在FPGA上可能只需要几小时,在单片机上保守估计要个几天(真没试过,欢迎提供数据)。 3.对相关专业学生有什么建议吗?
我是Computer Science/Engineering的,我的建议是,哈哈哈哈,转CS吧,转CS吧,转CS吧。我还是为自己N年前乱填的一个计算机科学与技术感到荣幸,现在CS真的好火,需求也广,真是新时代民工。从我了解的FPGA的职位看来,做FPGA的有这么几种:1)制作FPGA,也就是做一个更好更快更符合客户要求的FPGA芯片,这个难度很大,市场主要被Xilinx和以前的Altera占了,而且这个更多的属于工艺问题,类似职位能提供的应该也不多。2)使用FPGA做开发/原型验证,或者说FPGA只是开发的平台,最后转到ASIC上,这个做了好久,估计职位不会很多,或者你可以自己拓展新应用。3)FPGA加速,实现基于FPGA的异构系统,FPGA是直接集成到系统中运行的,是近年比较或的几种架构之一。 所以说,如果真的想做FPGA,也尽量往CS靠(不知到CS还能坚持多久),做大数据/深度学习/生物信息学相关的FPGA 加速项目。以架构师的培养方式锻炼自己。不能局限于FPGA内部逻辑的设计,要跳出FPGA,站在系统层面上考虑FPGA的角 {MOD}。比如说如何解决FPGA local memory (BRAM)太小的问题,如何解决FPGA-Memory和CPU-Memory内存带宽不均等的问题,等等。近几年FPGA的几大顶会FPGA,FCCM,FPL等都在关注CPU-FPGA的异构系统架构。更让人惊喜的是近几年系统结构的几大顶会(ISCA,HPCA,MICRO,ASPLOS,SC)中,FPGA相关文章也占有一定比重,从一点角度说FPGA再次受到重视,但是可能并不是传统的FPGA开发研究,而是如何真正在系统上用好FPGA。最后说一点,架构师的工资比普通码农高一些。仅供参考