细数FPGA的“几宗罪”

FPGA用硬件实现的可编程灵活性,具有两面性。

既是一种祝福,也可以看作是梦魇。

能够灵活地做事,但代价是做事的速度太慢:应用编程难度大,开发周期长。

如今开源软件在FPGA上的应用,还只是相当于二十年前的GPU,甚至还有所不如。

什么是FPGA?

在芯片架构上,LUT+MUX+DFF的逻辑单元(Logic Cells)组合,拥有足够的灵活性,充分的自由度。

组合逻辑的灵魂是LUT,DFF则是时序逻辑的核心。

多路选择器MUX,是构建多级复杂逻辑的优选项,起到类似于“叠罗汉”的作用:

2个2输入的LUT,加上1个MUX,构成一个3输入的LUT;

两个3输入的LUT,加上1个MUX,构成一个4输入的LUT;

听起来就像绕口令。

再以Logic Cell作为基本的组成单元,就像生物体的细胞一样,相互连接,形成岛状结构,再组合成更大的任意模块。

LAB,PLB,CLB只是各个厂商的爱称不同,LAB姓阿尔特拉,CLB则是赛灵思的仔。

芯片结构还在持续进化过程中。根据不同的应用领域和特定需求,增加不同的异构模块。

比如,为信号处理添加DSP;

需要加大缓存数据量?那就是更多的BRAM;

如果是为了强化对复杂程序的控制,就直接上大杀器,内嵌CPU;

想要更快的数据交换能力,就增加PCIe,以太网接口等等。

现在的AI加速时代,那就再加上相应的模块,如赛灵思最新Versal架构里的AIE。包括Versal AI Edge Series的VE2302等系列。

号称万能芯片或特种芯片,绝非浪得虚名。

总是用来和CPU比性能,与ASIC比灵活。

田忌赛马,全看你咋比。

和GPU比,也好说,可以是功耗、单位效能“更优”,更常见于研究性质的“学术论文”。

硬件可编程逻辑器件,听起来像软件,但终究是芯片硬件。

生成位流并载入到FPGA,就化身成为硬件或固件使用了。

如果是反熔丝的FPGA类型,就只有一次编程(烧写)机会,用户自己仅有的一次“流片”而已。

不像GPU应用开发,有标准的软件编程模型,如大名鼎鼎的CUDA;

也与CPU不同,处理器指令集可以保持前后兼容。

FPGA的应用开发,是用硬件语言编写。不管是Verilog,还是VHDL,开发人员几乎都不会考虑“兼容性”和“可移植性”。

即便是同一厂商的“同款芯片”,也有“”差异性”。

仅从Kintex,Virtex、Artix、Spartan、Zynq这些风格各异的名字上看,就让人眼花缭乱,彼此不像是亲兄弟,更类似表亲关系。

同一个芯片型号,仅是管脚封装、速度等级等不同,也需要用户有不同的辨识度。

仅是7A35T这一款型号,包括车规级芯片在内,就多达39个品类。

想要对应用设计进行无缝移植?不存在的。

一言难尽的EDA工具

作为“价格亲民”的ASIC,对于用户将硬件电路编程为自己专属的类DSA芯片使用,FPGA用“位流配置”来实现硬件定制。

综合、仿真、布局布线、位流生成等前端设计环节,与ASIC芯片设计所需的开发流程,完全相同。

这也是用FPGA生产的专用设备,不管是硬件仿真平台(Emulation),还是IC物理原型验证系统(Prototyping)。

为CPU/DPU/GPU/AI等ASIC芯片设计,提供调试验证服务的基础。

FPGA厂商的专用EDA工具,居于统治地位。

不论是赛灵思的Vivado、阿尔特拉的Quartus、莱迪思(NASDAQ:LSCC)的Diamond,还是MicroSemi(NASDAQ:MCHP)公司的Libero,都是自成体系,只支持自家的器件。

提供Synthesis(综合), Timing(时序分析), Place and Route(布局布线), bitstreams(位流生成)等各个环节。

贯穿整个设计阶段的全部流程。

环环相扣,紧密衔接的“全流程”服务。

其中,赛灵思对开源工具的态度,更为友好,对第三方EDA软件,也相对开放。

可以有限度的融合使用。

在所有厂商的Synthesis、Timing级别,以及数字仿真器(Simulation)等方面,传统EDA三巨头,以及美国的Aldec公司在内,占有一席之地。

但进入到布局布线阶段,一定都是各个FPGA芯片厂商,自家专用EDA工具的独门绝技。

作为位流生成前的最后一个编译环节,因与芯片结构等核心技术紧密相关。

只能是芯片厂商自己的团队,独立研发。

最后以0/1二进制数据集合呈现的位流(bitstream),是用户应用开发的最后设计成果。也是从工程师能够理解、易于仿真验证的“数字逻辑世界”,进入到“芯片物理世界”的分界线。

包含了所有的设计信息:

代表设计在编译综合之后,已经由LUT正确地编程表示(Synthesis Results,represent the LUT programming );

并且布局到了合适的模块位置上(Place Results,in the right locations);

模块之间也建立了正确的连接关系(Route Results, with the right connections)。

作为用户最宝贵的核心资产。

对位流数据进行压缩、加密、签名后,再载入到芯片,也就完成了“定制芯片”的设计过程。

可以通过JTAG下载,或者预先“烧写”在外部存储器中(比如Falsh),上电后直接完成芯片配置。

在运行过程中,还可以用部分重配置进行功能升级和更新。

浏览一下网络,你会很容易发现一些关于供应商EDA开发工具“翻车”的故事。

FPGA芯片结构如此复杂,配套的专用EDA工具更是复杂度加倍。

当应用设计中的BUG,和供应商工具可能的BUG,都耦合在一起的时候。

调试验证工作,更是难上加难。

有传闻说,就算是行业标杆SpaceX公司,在调试基于赛灵思的FPGA设计时,就曾遇到了大麻烦。

快速增长的FPGA应用市场

早期稳定增长。

相当平缓,波澜不惊。

从1984年赛灵思推出首款芯片XC2064开始,一直到90年代末,整个市场增长才开始有所起色。

2010年,有一个向上抬头的起势拐点,明显不同以往。

也就是人工智能萌芽阶段,刚开始得到发展的时候。

2011年,微软启动的Catapult项目,从最初的只是加速bing搜索,后来将其称之为AI黎明。

虽然晶体管密度的增加,帮助供应商创造了更高性能的FPGA,但增长加速的真正原因,主要是最终找到了擅长的加速应用。

从某种程度上说,有别于以往拿着锤子找钉子的意思。

纵观FPGA应用发展史,可划分为三个阶段:

传统的优势应用,FPGA is FPGA

一个常见的用途是对ASIC设计进行前端验证,用FPGA的硬件速度直接进行仿真,运行速度比软件数字仿真要快得多。

这也是FPGA最具垄断优势地位的仿真加速应用。

或者当一个标准/协议仍在演进过程中,比如媒体编解码器,通信协议等,可以对FPGA进行现场升级,以适应可能的更新升级。

总之,如果是小批量应用(300万片以内?),需要的芯片数量较少。

那么直接使用FPGA,而不是生产专用集成电路ASIC,可能是非常划算的。

作为算力加速器

FPGA As An Accelerator,FPGAAAA!

近数据源加速,尽可能在靠近数据源的地方,利用FPGA的硬件性能,就地就近进行数据处理。

利用厂商的运行时支持库,允许应用程序访问FPGA加速器。

英特尔的OpenVINO, OpenStack Cyborg或Kubernetes设备插件,将数据负载导入到FPGA的加速路径上。

可以尽可能减少数据迁移。

作为AI加速器

FPGA As An AI Accelerator,FPGAAAAA!!

其中最为有名的,无疑是微软(NSADAQ:MSFT)的脑波了。

Microsoft’s Project Brainwave claims win over Google TPU

用25万片FPGA,构造当时世界上最大的AI计算机

FPGA还在进化中,性能越来越强大,设计变得更为复杂的趋势。

仍在继续。

但几乎所有论坛中,讨论大多数关于FPGA的问题,都是有关厂商专有工具,以及如何使用这些工具。

大家都只是试图用它们来精心打磨一个产品。

没有人试图改进流程或工具。

编者后记

FPGA早期的应用市场,主要是面向教育和仿真服务。

现在已深入到国民经济的各个角落。

四十年来,除了性能增长之外,其成本和能耗降低1000倍以上。

容量增长了1万倍以上。

一直走在异构计算、硬件加速最前沿的EDA辅助验证市场,更为明显。

硬件容量已经是初代XC2064,只有64个逻辑单元(LCs)的近30万倍。

时至今日,不管是传统的优势领域,还是当前火热的边缘AI加速应用,在芯片架构和生态上,尚未出现类似英伟达(NASDAQ:NVDA)公司的CUDA类似的重大突破。

对于资深FPGA硬件工程师,即便对于时下火热的端侧AI加速应用,虽然也可以做到看上去没什么“堵”点,应用设计完全可以打磨实现。

但当用户介绍自己使用FPGA的设计开发,在产品卓越性能指标的旁白上,总是会加上这么一句:一些性能达到了原厂专家级的水平。

用欧洲巨头空客公司(PINK:EADSY)的航天与防务部门话说,如果是使用Microchip公司(NASDAQ:MCHP)的抗辐FPGA:

“设计团队在这款芯片上实现的性能,厂商专家认为已经是器件本身的极限!”

使用赛灵思公司FPGA的设计开发,画风类似。

在航天应用中之所以能够使用商用级FPGA(Commercial COTS),得益于对辐射效应的理解,以及在FPGA设计、板卡级的最佳缓解策略实现”等等。

应用编程难度大,开发周期长,从业人员少。

几乎是行业的老生长谈了。

应用编程难度大,这是FPGA的特性,只能寄希望于芯片厂商的重大突破,短期无解。

开发周期长的这个行业长期难题,可能成为不一样的市场服务机会。

一些复杂设计的调试验证所需时间,按照EDA巨头西门子(PINK: SIEGY)的统计数据,已经占到开发时间的50%左右(摘自“FPGA的中场战事”)。

代表最先进调试技术的EDA硬件辅助验证,又主要服务于需要流片的超大规模IC设计,长期与FPGA应用市场距离遥远。 

这些EDA供应商面向大量FPGA应用终端用户,推广使用的动力不足,快速扩张的能力受限。

打个比较辣眼睛也很刺耳的类比:

在软件行业已经进化到海量APIs的云原生时代,熟练驾驭FPGA的硬件工程师,就像是维多利亚工业时代的高手,还在沿用刀耕火种的白鹿原时代工具,在智能化时代精心打磨高科技产品。

摘自"可观测基础上的硬件调试,高效定位和修复设计问题"

虽然都是使用FPGA板卡,调试一直是IC设计行业用户的痛点,但对于遍布FPGA垂直细分领域的各个行业用户,好像从来不是问题。

最多是需要工程师多花些时间。

在设计阶段,大部分工程师使用的EDA工具,更像是芯片厂商的“恩赐”:

They are at the mercy of the vendor

昂贵工具烧钱,免费工具烧脑,比较费工程师发量。

全文完,感谢您的耐心阅读

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值