这些年学过的FPGA
最近看了老罗的鄙视链是怎样炼成的,联想到FPGA。从2011年底开始接触FPGA到现在已经快接近4个年头了,这四年见证了Altera-FPGA的发展,使用的cyclone系列的芯片也从cyclone到现在cycloneV,从单纯逻辑门,到集成DSP模块,再到现在的集成ARM,工艺技术也从最初的90nm发展到现在的28nm,最小的可以达到14nm(这么高级的芯片目前还没有用过),设计软件也从当初的Quartus II 9.0-- Quartus II 11.0-- Quartus II 13.1-- Quartus II 14.1。
FPGA的角色也慢慢从当初的设计数字电路,到后来也把DSP干的活给干了,再到现在也想把ARM的活给干了。几年前,嵌入式处理器方面,就是三国(ARM、DSP、FPGA)鼎立,FPGA干的最多的也就是协处理,那时大部分人都去学习ARM,学习DSP和FPGA的寥寥无几,没办法,市场所向,市场所需的DSP和FPGA开发人员就是要求少而精,当然那时ARM也是炒得火热,各种培训机构涌现,有种供过欲求的趋势。如今这形势已经变了,ARM器件厂商一般连方案都提供了,市场没必要要那么多的ARM器件开发人员,更多需要的是做上层软件的人员,由此当初大部分ARM器件开发人员更多的就转向了做上层软件和系统软件方面。没办法,市场所向,智能手机出现,需要的更多的是人/物与人/物之间的连接,由此也出现了近两年做应用软件人员越来越多,做ARM、DSP、FPGA器件开发人员越来越少的现象,这情况也是和前几年的情况一样一样的。
不过,现在的总趋势是电子产品的集成度必须越来越小,一板多芯片的情况也必须改变,变成了现在的一板一芯片,一芯片多核的形势,而SoPC(system on the chip)的特性正好能满足电子产品的集成度越来越高的特点。
下图为2013年Altera和xilinx官网的头条,Altera当年提出的技术蓝图,如今Altera都已经实现了,电子产品更新的速度还是很快的,工艺甚至超过当初设计的发展蓝图,达到了14nm(估计也达到了一个暂时的极限,FPGA的单位面积逻辑门集成度也很高了,所以要在广度上进行扩展),所以也集成了ARM,也能跑跑OpenCL(异构并行计算,当前大数据处理前卫处理方式)。
Altera和xilinx也开始大力推广SoC开发平台,逐渐感觉FPGA开发的软硬件界限越来越模糊了………….
这些年FPGA芯片的发展形势就是:单位面积上逻辑门越来越高、功耗越来越低、硬件集成模块越来越多,芯片价格也越来越实惠(但是相比ARM而言还是贵的),如今感觉FPGA的功耗还是一个问题,再降功耗也是一个很大的难题,Altera在降低功耗可下了大工夫,连电源功耗管理芯片PowerSoC都开始自己做了,看来FPGA的功耗设计还是个很大的难题,没办法集成度、时钟频率、功耗是个矛盾的问题。
芯片功能方面,从cyclone用到如今的cycloneV,感觉单位的逻辑门集成度越来越高,从cyclone到cyclone IV感觉FPGA的变化就是逻辑门集成度、集成DSP处理模块数量和功耗,基本上没有多大的变化,所以作为一个基础入门FPGA的学习也无须强求一定要最新的cyclone型号,其实内部基本无差,关键还是要掌握基础的逻辑设计规则。但是从cycloneV的S信号型号开始,就开始集成ARM处理器,功能也就实现了一个广度上的扩展,当初的三国鼎立也变成了一家,估计以后懂FPGA的,也要开始学软件、ARM、系统方面的知识了,开发FPGA也要开始面临一个转型,也就是转型到SoCFPGA的开发,更像是一个系统设计。但是FPGA器件开发人员的转型相对较难,因为开发语言没有相通性,FPGA开发所看到的是触发器、锁存器、门电路,逻辑流也是一大堆并行的信号流,而软件开发是串行执行,由当前的处理结果引导到下一个执行动作。
FPGA本身的无奈,虽然能够并行计算、流水线处理,但是有些东西是串行实现的,虽然状态机本身能够实现,但是实现起来也是很复杂的,例如一个iic接口或者是一个SD卡读写操作,这种串行机制非常强的东西,用FPGA就是很不方便了,用状态机的方式实现,估计也要几百上千行的代码,而用C实现的话简单方便。如非必要,还是不要少让FPGA干那些串行机制太强的活,多干些数据搬运的工作。
FPGA应用方面,在通信方面的应用还最为广泛的,但是FPGA承担的角色主要还是高速数据搬移、高速数学运算与数据处理、ASIC/SoC的原型验证。
虽然现在出现了异构并行计算的趋势,但还不是主流,OpenCL也可以实现到FPGA上,在能效上FPGA也比GPU高一到两个数量级,以前运行在GPU上工程也能够移植到FPGA上运行,运行速度方面也有很大的提升,但是其所带来的资源使用率还是个很大的问题,毕竟成本太高,开发难度也上了一个台阶,开发者要掌握的知识量也是很大的(算法层面、器件实现层面、并行计算层面)。异构并行计算国内目前估计没几家在研究,百度在这方面走在了前沿,需要用到更加高级的计算能力来支撑其庞大的业务和大量的数据计算,由此百度开始尝试用FPGA打造AI专有芯片,并成就了第一版AI专有芯片版百度大脑——FPGA版百度大脑。这使得百度成为了全球最早将FPGA规模应用在人工智能领域的公司,也和Altera开启了合作。同时,也有应用于金融超级计算,单纯用超级计算机,需要运行238秒,而在超级计算机中添加FPGA,运行只需要12秒。但是,目前离FPGA广泛用于异构并行计算还有距离。
对于目前开始火热起来的VR、MR,估计FPGA的应用主要是在前期asic验证或者是作为一个数据协处理器件,毕竟VR和MR面临的是消费类电子产品,成本是关键,ASIC才是VR投向市场的关键所在。
电子产品朝着一板一芯片,一芯片多核的形势短期之内不会改变,FPGA硬件上该集成的已经集成了,Altera三年前的设计蓝图已经完成,未来如何走向还是很期待。作为FPGA器件开发,要掌握的知识越来越多,面对市场的少而精转变为少而精而全,FPGA的门槛感觉也越来越高,毕竟这个行业发展太快了,所以,从功利的角度上来讲,如果是只是为了找工作的话,应该去选择那些就业概率更大的技术学习,如果对FPGA、对并行计算感兴趣的话,就坚持学习下去,这方面还是有未来的。