FPGA的发明就是提高数字电路的重复利用性,通过可编程的方式实现不同的电路逻辑功能。随着FPGA结构的不断演变和工艺的不断提升,在FPGA内部集成了越来多的资源,比如BRAM、PLL、DSP、Transceiver、 DDR IP以及处理器ARM等,可以说功能变得越来越强大,用来辅助CPU计算,也获得了协处理器的名称。
针对楼主的问题:
1)与处理器的对比:FPGA与处理器是不一样的硬件结构,所以无法直接进行对比,FPGA是以可编程的数字电路为设计理念(通过编程改变内部电路逻辑),而CPU是以逻辑计算为设计出发点。FPGA擅长的领域是数字信号处理,兼容多电平标准的接口可以互联各种高速电子器件,比如高速ADC和DAC、光纤收发器等,同时丰富的IP资源保证了有丰富的外设,比如SDRAM、PCIE接口、以太网PHY、SATA接口等等。从外设上看,FPGA可搭载的外设和CPU区别的不是太大,该有的都有了。
2)与GPU的对比:FPGA可以和GPU在并行计算上进行对比,更确切的说是GPGPU(通用计算GPU)。FPGA的并行处理体现在逻辑单元的并发性和流水线的处理方式上。并发性指的是各个逻辑模块相互独立处理,依赖各自的电路资源同时工作;流水线的处理方式就是将任务切片,同一时刻可以多任务执行(FPGA的并行优势更多的体现于此)。此外FPGA带有丰富的片上存储资源,可以大大减少访问片外存储的延迟,提高计算性能(访问SDRAM储存大约是访问寄存器存储延迟的几百倍以上)。GPU的并行性体现在多核上,计算任务通过编译器编译完成之后分配到每个计算单元,每个计算单元同时工作,计算完成之后通过多级内存管理(一般为三级,private memory, local memory和global memory,映射到FPGA可以为register file, BRAM 和外部DDR存储)回到CPU,GPU的多核类似于CPU的多核,但是GPU的核仅仅是负责计算的核,以支持多bit的向量计算见长。
3)FPGA未来的发展:FPGA之前一直应用于高速数字信号领域和ASIC验证,比如数字信号采集,工业控制,航天,军工,很多人讲过,不一而足。最近几年,个人感觉从2012年伴随着Vivada开发套件的推出(以Xilinx推出Vivado作为参考,Vivado工具支持高级语言综合(High Level synthesis),支持C语言到RTL的映射,以及开始支持亿级以上门电路的设计),FPGA作为协处理器慢慢走上正轨,有了工具的支持才使得CPU上的算法移植到RTL语言变得的简单,亿级门电路保证了丰富的逻辑资源。现在FPGA在机器学习和硬件加速上得到越来越多的重视(2015年底 Intel收购Altera),也做出了不少具有开创性的作品,但同时也存在诸多问题,比如1)什么样的算法适合FPGA进行加速,2)FPGA的加速性如何提升,是靠逻辑资源来取胜还是靠真正的算法优化,3)FPGA能不能摆托对CPU的依赖(现在加速采用异构的方式进行,CPU作为Host,FPGA作为device),4)FPGA的编译器能不能发生革命性的变革? 总而言之:一个越是充满不确定性的领域,越可能是发生革命性的变革(熵很大)。
4) 建议:若想从事电子领域,应当先学好单片机,精通单片机基本可以做到窥一斑而知全豹吧。
最后附上三家公司的股票对比(近5年)
Xilinx 市值13.44 Billion(截止到2016-11-19),中规中矩
Nvidia市值 49.95 Billion(截止到2016-11-19),多么漂亮的爬坡曲线~~
Intel市值 165 Billon (截止到2016-11-19),老大哥经历过低谷,开始慢慢爬起
2016年半导体厂商营收排名:Top20
--------------------------------------------------------------------------------------------------------------------
更新2016-11-22
如果看Nvidia股票近5年的走势话,和深度学习热度十分吻合,不知谁因谁果,但我更偏向于2012年Hinton课题组拿下ImageNet比赛的冠军,引爆了深度学习的热潮,从而推动了GPU的发展。于此同时GPU的发展也带来了深度学习性能的提升。既然GPU在深度学习领域如鱼得水,那么怎么会将GPU与FPGA进行对比呢?在深度学习爆发之前为什么没有呢(大家各走各的阳关道)?
我想期初(2012-2014)GPU在深度学习领域的地位无可撼动,可以说是拿着探照灯也找不到对手,而且那时大家是深挖深度学习的潜能出成果,无暇顾及太多。还没吃饱自然不会想到胖。随着深度学习的发展,功耗和硬件结构成为摆在眼前的问题,这时研究者们开始思考有没有其他的硬件也可以进行深度学习?放眼望去,只有FPGA具有的并行性或许可以,但结构和GPU相差甚远,完全是两个体系。
功耗方面,电子元器件的功耗与C(寄生电容)、V(工作电压)和f^2(工作频率成正比),可以写为P=CVf^2, GPU作为多核来讲,可以将其功耗与Core看成是线性关系,即P=NCVf^2, 核越多功耗就越大。除此之外,GPU板卡的功耗还来自与大量访问片外存储SDRAM造成的功耗,这些功耗主要包括寄有功耗(Background)读写(Write/Read)功耗、激活(Active)功耗、刷新功耗(Refresh)、端接功耗(DQ terminal)等。
硬件结构上,大家希望可以研制出深度学习处理器,这样在处理性能和功耗上都会是一个飞跃,所以这也是很多深度学习芯片公司纷纷成立的原因(深受VC推崇),这完全是一片蓝海,很蓝很广。研制深度学习芯片离不开FPGA,但是万一深度学习芯片研制成功了,Nvidia的股票会如何呢,FPGA又会如何呢?
现在FPGA为什么会得到重视,就是抛开FPGA原有的领域,在深度学习领域似乎有那么点光,有光就意味着有希望。如同2012年前,GPU只是游戏发烧友口中的电脑配置的代名词,时至今日,GPU从游戏界走到了学术界,走到了工业界。说不定FPGA或者AI芯片也会,有机会就要抓住他。从来不要低估一颗冠军的心。
FPGA的开发问题:现在已经可以在FPGA上通过OpenCL实现Caffe的framework,假以时日,会有不错的成绩(困难会被慢慢推倒)。
最后附上FPGA与GPU的对比文章(已经有人做了),文章从浮点运算能力、延迟、单位瓦特的处理能力、接口、向后兼容性、灵活性、物理尺寸、人员成本、单位美元的处理能力进行了对比。但是Flexibility上原文可能写错了,应该是FPGA占优势。
前阵子AMD收购FPGA龙头厂商Xilinx(赛灵思)的新闻让这个4年前的问题又有了新的热度,可以说非常知乎了。在2016年至2019年这几年中,出现了好多非常精彩的回答,特别是对FPGA在人工智能、机器学习上的观点都言之有物,各种应用的推动,使FPGA发展到了一个关键点。那么,除了以上优秀的回答,万能芯片FPGA还有其他技能吗?
众所周知,FPGA的应用范围广泛,通信、计算、控制等领域等都有它的建树。万能芯片并不是浪得虚名,其具有内部电路可重构的特点,几乎可以完全映射芯片的逻辑设计。因此, FPGA原型验证是当前原型验证的主流,并验证相对成熟的RTL,因为它们可以代表一个近乎精确的以高速运行的设计的复制品。
好像还不太明白?
举个栗子,建筑师设计楼房、开始建造前,需要通过模型去测试防震、防风、结构强度等各种参数。在工艺技术不断发展,芯片规模越来越大,复杂度越来越高的今天,验证对芯片设计的重要性不言而喻。因为在芯片开发过程中,直接流片的成本让人望而却步。因此,芯片和系统开发者也需要在流片前对设计进行“原型验证”——就是模仿真实软件应用条件下的芯片和系统表现是否满足了实际应用场景要求。
好像有点懂了?但和FPGA有啥关系?
FPGA通过将RTL移植到现场可编程门阵列(FPGA)来验证ASIC的功能,并在芯片的基本功能验证通过后就可以开始驱动的开发,一直到芯片Tape Out并回片后都可以进行驱动和应用的开发。当芯片回片后,应用程序可以直接基于FPGA版本的驱动来进行简单的适配,即可以应用到SoC芯片上,将SoC芯片Time-to-Market的时间控制的很完美。
除了可以提前进行软件开发外,它的性价比也非常优秀,因为从成本上来说,价格可以说非常的亲民。更重要的是FPGA原型在运行速度上也技高一筹:它在速度上当然比EDA验证高了好几个数量级,即使是与Emulator相比,其性能上也有碾压式的优势。在这种种优势中,“流片前的软硬件协同开发”是FPGA物理原型验证最不可替代之处,提早基于该技术平台进行软件驱动开发和应用开发,对于缩短最终芯片Time-to-Market周期意义重大。
总结一下:所有这些因素都有助于降低设计成本并缩短上市时间,降低重新调整的风险。例如,已经在FPGA原型上得到广泛验证的软件应该更容易与来自晶圆厂的第一块硅相结合;一个可用的FPGA原型还可以用于产品演示和现场试验。
在软硬件深度定制化、要求芯片到应用的一站式交付的今天,FPGA原型平台的重要性进一步提升。2000年,Hardi Electronics推出一款基于FPGA的原型系统HAPS,它可以通过多种方式快速组装ASIC原型系统,为客户在关键验证阶段节省数月的时间。2007年,Synplicity收购了Hardi。2008年,我们以2.27亿美元实力剁手收购了Synplicity,HAPS从此正式加入新思产品大家庭,再经历了几代人后发展至HAPS-80,至今仍是业界最快的原型验证加速平台,是的,我又膨胀了。
FPGA原型验证也不是铁打的,目前ASIC的设计变得越来越大,越来越复杂,单片 FPGA 已不能满足原型验证要求,多片 FPGA 验证应运而生。RTL 逻辑的分割、多片 FPGA 之间的互联拓扑结构、I/O 分配、高速接口都对应用 FPGA 原型验证的芯片开发者提出了更高的要求也带来了前所未有的挑战。
容量限制和性能要求:对于大型的设计(大于2千万等效ASIC门),一块FPGA往往容纳不下,此时必须将多块FPGA互联才能验证整个设计,在这种情况下,就需要对大型的设计进行Partition即分割。Partition引入了新的问题,而这些问题其实在芯片中并不存在,很多时候耗费很多人力去实现一个可用的Partition方案,仅仅是受限于FPGA的容量而不得已的处理办法。
Partition引入的最大问题是对I/O的需求激增,虽然FPGA有超过1000个可用的I/O,但是一个完整的SoC如果被拆分成规模相当的几个部分时,每个部分之间的互联信号数量往往会远超1000个,所以在I/O数量受限时,必须采用TDM(Time Division Multiplex),即FPGA内部的多个并行信号转为高速串行信号,通过FPGA I/O传输到另一块FPGA,然后再进行解复用,转换成并行信号,实现信号从一个FPGA到另一块FPGA的传递。引入了TDM虽然解决了I/O瓶颈,但是Mux和De-Mux引入了额外的延时,导致Cross-FPGA的Path成为Critical Path,进一步降低了FPGA的可运行频率,可以说Partition是不得已而为之的方案,最终的结果只是得到一个可用的方案而非理想的方案。
另一个方面,由于在SoC原型验证中模块常常会增减,导致需要频繁的改动Partition方案,如果手动去处理,则需要花费很多精力才能得到一个上文提到可用但折中的方案。此外,处理大量的Cross-FPGA信号非常容易出错,所以对于大型的SoC FPGA原型验证,必须采用自动化的工具去完成Partition,这对EDA工具而言亦是全新的挑战。
迭代速度:现在SoC芯片频率高达数GHz,为了让原型验证平台尽可能和SoC芯片性能接近,开发者期望让FPGA原型平台运行在尽可能高的频率上,但是由于SoC的RTL代码是为芯片实现设计,大量深层次组合逻辑的存在(这样可以节省芯片面积),导致了SoC RTL代码在FPGA上实现时时序收敛困难,往往只能达到几MHz。对于大型的SoC,内部的CPU/GPU/CODEC/NPU等计算和编解码模块逻辑复杂,往往成为整个设计的Timing Wall,导致时序优化过程会占据FPGA Implementation过程30-40%的时间。
接口方案:外部子板和FPGA I/O之间的高速同步接口一直以来都是FPGA的痛点和难点:一方面,相比于ASIC,FPGA在I/O时序方面可以调整的空间有限,它不能像ASIC一样可以通过时序约束来灵活调整FPGA I/O信号之间的Skew,导致并行信号接口之间的Path Skew很难控制在一个比较理想的范围内,最终会导致数据采样失败,降低频率往往是一种有效的办法,但是有些控制器和PHY之间的接口是需要满足标准规范的,不能无限制的降低,对于这种情况有时只能想尽办法尝试修复时序,甚至需要修改代码。
另一方面,原型验证使用的子板数量不大,市场上往往没有销售,很多时候需要自行设计,进一步给调试带来了不确定性,也延长了调试周期。高速接口的调试往往消耗了大量的人力资源,很多时候都是靠调试的经验和灵感解决问题,这么做不仅费时费力,而且效果不佳。
可观测性:FPGA也是芯片产品,所以内部的信号无法直接观测。通常需要借助于FPGA的Debug工具在生成Bit文件前选取要观察的信号。当Bit文件加载运行时,必须通过配套的Debug工具观察指定的信号波形,但是受限于Block RAM的容量以及信号优化等原因,如此调试的效率比较低。
产品成熟度:原型验证是一项壁垒颇高的技术,串联着芯片设计和最终应用,需要极强的适用性和灵活度来适应发展迅速和多样性的芯片研发,通过和一线芯片研发人员的通力合作,打造使用生态圈,不断进化和迭代技术才能始终帮助芯片开发者实现“Shift-Left”研发,加快产品上市时间。
温故知新,芯片设计离不开EDA,哪里有挑战哪里就有我们,还记得被我们买下的Synplicity吗?从第一款原型验证产品 HAPS-10的推出,到后续 7 代产品的问世,久经市场检验。为满足不断演进的原型验证需求, HAPS-80补充了诸多独一无二的产品功能,如 UMRBus, Hybrid 原型验证,基于 UPF 的低功耗系统验证, HAPS GateWay 等,都是加快软件开发和芯片设计验证的最佳解决方案。划重点,全球 200 多家公司都已经部署了最新一代 HAPS-80,国内目前也有逾60家芯片设计企业部署了HAPS平台,进一步验证了HAPS原型验证的市场领先地位。利益相关,以下省略一万字对HAPS的优秀点评。
关于FPGA原型验证的科普就到这里,如果你还对芯片验证感兴趣,请移步《芯片验证为什么那么重要?传送门奉上:https://zhuanlan.zhihu.com/p/302400732
核心原因就是,放在最近10年的尺度上,人们逐渐意识到单核CPU性能是有瓶颈的:速度慢了下来,价格涨了上去,部署硬件逐渐变得不划算了起来,于是工业界逐渐产生了三个roadmap:
一个是用GPU加速,确切地说就是nvidia的日新月异的架构和cuda,以及众所周知的那些上层建筑(以信号处理、机器学习为主),因为nvidia财大气粗,堆tensor cores加PCIe加大内存加完美的驱动,以及活跃的社区和文档,让这个方案简单可靠,算力性价比高且配置开发不要太简单;
二一个是各种ASIC,之前在三百六十行各个大小领域都有,优点是性能高,巨大量产价格便宜;致命缺点是开发成本极高,你需要自己开发设计流片验证一条龙服务,不是普通startup能承担的,以及unconfigurable及通用性差;
三一个是大量特殊领域的编码解码算法,需要大量人力物力修改(比如每周更新一次)+保证速度+保证部署+定制化的security需求,这一块是FPGA的基本盘(比如通信、音频方案、视频方案、加密认证等),最近几年才像高票虎头蔓儿答主 @王天祺 说的那样,machine learning火穴大转之后,一堆人榨干FPGA片上资源加速neural network inference——在ML领域里,早期(2016年以前)的FPGA优势是敏捷开发,工具链逐渐成熟,十多个人的团队就有能力做出一套性能很棒的视频编码/解码+加速神经网络推理的工具,开发周期比ASIC短得多,却又(在当时)提供相对于GPU更好的性价比和小体积全栈的解决方案。
总体来说,FPGA确实越来越火,但是也正在机器学习等风口领域被GPU和NPU们越甩越远,一方面可编程另一方面又具有无限的理论加速的潜力,但是致命缺点也有,一个是制程性能频率都不如GPU和ASIC,尤其是浮点运算性能,二一个是工具链正在走向成熟但依然不成熟且门槛高(各种codegen/co-design/synthesis/simulation/verification很成熟,但是真正能像TVM这种框架把一个特定计算模型抽象成模块,生成IR然后再编译的实际应用场景太少了,机器学习以外的场景很少能找到,从这个角度上讲TVM VTA是个值得吹爆的思路,但是FPGA又因为性能、片上资源、成本等各种原因基本被淘汰),三是价格太贵,你卖的每一个产品都是在被Xilinx和Intel割韭菜,除非你是做汽车、航天、IoT、security这些对成本不敏感的领域。
当然,最重要的还是商业模式:GPU拥有大量的游戏玩家而摊平研发成本,ASIC一旦经由fab量产后可以迅速摊低成本,靠卖方案可以获得更好的性价比,FPGA目前只有一个agile development的优势,但这个优势只有在一个领域刚开始的时候才有优势,到了后期被性能和成本双重拖累就不行了,大部分工作还是成了Intel和Xilinx割的韭菜。
归根到底:这一轮(2015-2018)FPGA受重视主要还是因为机器学习兴起的时候一批热钱带动一堆自不量力的CEO们入场跑马圈地着急带领热钱入场时没有考虑大后期被吊打结局所造成的。
利益相关:跟top 1和top 3的FPGA厂商都有深度合作,给FPGA写工业级compiler和codegen的开发者,贸易战之前的原华为供应商。
稍微多说两句。
其实华人在海外,尤其是欧美社会遇到的很大的一个问题是意识不到种族的重要性。近代以前,中国基本都是处于一个“国家=天下”的状态。这就导致了很多中国人在面对近现代以威斯特法伦体系为基准形成的“民族国家”没有形成一个明确概念,因而在欧美,尤其是在北美(USA/Canada)这种移民国家里生活的时候政治上十分受挫。
不管你承认也好,否认也罢,一个人在美国的社会认定更多地来自于一个人的种族(race)而非阶级(class).以我们最关心的教育为例:大学录取会很大程度上根据你的种族来决定录取标准,而不是社会阶层,更不是政治倾向。不管家境如何,只要你是亚裔,那么你就有大概率碰到录取标准的歧视问题。
在这个前提下,任何一个有智商的人都能够看出来:在美国这个大背景下,在争取自身(个人/族群)权益的过程中,种族的优先级是排在最前面的,其次才是政治倾向和意识形态。因为大多数情况下你在填表的时候,不会让你选你是conservative还是liberal,只会让你选你是“white",“Asian”还是“Hispanic”. 而事实上,只要一个族群能够意识到美国社会种族优先的前提下,内部的政治光谱不仅不是问题,反而是优势,一个很好的例子就是犹太人。
犹太人在美国有多成功想必不用多说。但是犹太人并没有把自己局限在左翼或者右翼,而是通过在不同政治光谱上的发展,成功的让自己的种族在美国取得优势。说右翼,犹太人里面的一大票银行家企业家大家也有所耳闻;说左翼,犹太人中的囧叔,主持界传奇larry king,喜欢谈笑风生的华莱士等等都是业界传奇。这样他们右手掌控了经济和政治力量,左手掌控了舆论和传媒的力量,最终让族群取得成功。可见,以族群利益为先,则族内各个政见派系均受益;以政见利益为先,则族群分崩离析。
反观以叫兽为首的旧华“精英社会活动家“是怎么做的呢?不仅不去积极组织和联络真正能起到作用的政治基本盘(一个越来越壮大的华人群体),反而主动地去做出例如:损害自己族群的利益以换取一小撮外部政治利益(SCA5),试图不断的分裂族群内部力量(亚裔内部细分法案)等等赤裸裸乃至荒唐可笑的背叛种族利益的行为。这种叫兽,如果不是脑子进了水,那就只能是因为政治觉悟和政治水平实在太差,吃枣药丸。
----------------------------
断脊之犬,狺狺狂吠。 一开始看到这篇文章我特别震惊,不单单是文章内容,更重要的作者身份:美国百人会会长及首个法学院院长?这样的人竟然说出如此粗鄙之语?不过回想一下,这倒是解决了我一直以来的疑问。
作为一个在美国各个领域都有杰出贡献的种族,作为一个平均收入和学历都远超平均线的种族,作为一个贡献了马友友,关颖珊,刘玉玲等杰出人才的种族,为什么美国华人的政治地位如此的低下?为什么华人的权益总是受到系统性的侵害和歧视?最重要的是,为什么华人,尤其是旧华人及其后代的自我认同和民族荣誉感低到令人发指?现在看来,这些旧华人中的“精英”“社会活动家”政治水准低到不堪占了很大一部分原因。
其实在美国待过一段时间的人都明白,各个族群之间有竞争,有合作,也有斗争。但得到尊敬的条件只有一个:拥有力量。这个力量可以是经济力量,可以是知识力量,当然也可以是政治力量。所以这次大选华人主动出击,参与助选的行为我是非常认同的:重要的不是你站在哪一条队,而是展现能够左右选战结果的政治力量,这才是华人赖以发展的基础。相反,任何一种任凭意识形态洗脑而站队的行为都是政治水准低下的弱智行径。
其实稍微看了看叫兽的个人经历,未免有些可怜他。作为一个数次试图否认和摆脱自己华人身份的“社会活动家”,他的“习得性无助”十有八九也是在成长的过程中一步一步建立起来的。在中国崛起,新华人一步步向前的大背景下,他就像一头曾经被锁链拴住的幼象,完全没有意识到力量的对比总是会转化的,而华人政治家真正的基本盘只有自己。在这种情况下,旧华人的社会认知,一种貌似平等实则歧视的社会认知,只会进一步地被抛弃,最终由新华人引领实现真正的社会平等。旧华人畏畏缩缩的活了一百多年,却连美国这个国家的一点基本精神都没有学到,而这些分明写的很清楚:The land of the free and the home of the brave.
毕竟,大清都亡了,也请你们这些遗老遗少们滚回历史的尘埃里吧。 -------------------
原答案
这个所谓教授才真是把“歧视”二字阐释的淋漓尽致。