工程师需要什么样的开发工具:“外行”看FPGA之谷歌篇

全文4622字,阅读约需14分钟,帮我划重点

划重点

01FPGA在AI推理应用市场具有显著优势,如计算任务响应速度快、高带宽低延迟等。

02然而,FPGA设计开发面临诸多挑战,如学习曲线陡峭、专用EDA工具自动化的使用门槛高等。

03目前,FPGA行业缺乏社区免费工具,导致工程师在调试过程中面临诸多困难。

04为此,业界需要推出更多便宜又好用的工具,以应对FPGA在数据中心等应用领域的需求。

05同时,硬件厂商也在逐渐“变软”,以适应AI时代的发展趋势。

以上内容由腾讯混元大模型生成,仅供参考

编者按

Jonathan Ross创办的AI芯片公司,最近又爆出大新闻。

国内报道的画风是“突发!200亿超级独角兽巨额融资:一把就是45亿”。

Groq专做推理芯片,其“语言处理单元(LPU)”,去年适配了大语言模型LLaMa,据称推理速度比英伟达GPU提高了10倍,且成本低至只有1/10。

本文为作者参加FPGA’2014大会时受邀发言内容整理,当时是GoogleX实验室和TPU负责人,吐槽FPGA具有开发困难等诸多不便。

2016年底,Groq公司初创成立。

连同创始人Jonathan在内,集齐了谷歌TPU核心团队,10个工程师中的8个。

在半导体行业,堪称古有仙童八叛逆上演传奇,今有谷歌八精英,乾坤大挪移。

数月后,赛灵思的全球销售执行副总裁,也宣布加盟,出任首席运营官。

AI推理应用,既是FPGA的强项,也被视为比AI训练更大的市场。

从FPGA最擅长的仿真加速、十年前的算力加速,再进入到现在火爆的AI加速时代,重新回顾行业的系列文章,共有5篇组成。

借用行业深度好文《硅图!EDA商业发展史》所言:事实有真假,观点无对错。

多中看空的有两篇:英特尔的《细数FPGA的“几宗罪”》,以及本文《软件工程师需要什么样的开发工具》。

坚决做多的选三篇:蓝色巨人IBM的《推动FPGA成为一等公民》,以及云计算巨头的解读视角。其中,如果说微软对FPGA在数据中心的应用,具有开创性,那么亚马逊则是里程碑意义。

而IBM公司,则是贯穿了FPGA的三个加速时代,从未缺席,更是深刻影响了仿真加速的EDA硬件辅助验证行业,直到现在。

各个行业都会经历数字化、自动化和智能化这三个阶段,对于FPGA应用设计,开发工具早就自动化了。

但无论是巨头,还是作为爱好者的个体户,都得面对专用EDA工具自动化的使用门槛过高:学习曲线过于陡峭。

虽然英特尔风光不再,现在稍显"落伍",市值仅是英伟达的3%,超微的40%,放在十年前,是无法想像的事情。

但就像曾带领英特尔最高峰的传奇总裁安迪·格鲁夫所说的:在半导体行业里,想要预见十年后会发生什么,得先回顾过去十年发生过的事情”。

进入到AI时代后,FPGA会续写不一样的故事吗?

以下为正文。


进入硬件加速一切的异构计算时代,在云计算领域,FPGA已经得到日益广泛的深入应用。

能够在数据通路的各个路径上进行硬件加速处理,率先在新型超级数据中心得到应用

为什么用FPGA加速数据处理,正变得如此重要。

对于数据仓库级别的计算服务,运行海量的批处理任务、高性能计算,以及各种服务。

以Google为例,假设使用400台服务器,就算当中的1台宕机,也只是影响了1/400服务器体量,响应曲线会相当平滑。

就算每几秒钟出现一个硬件驱动失效,也没多大问题。

但是,对于那些在测试期间没有被发现的“隐藏”故障,一旦逃逸到部署使用阶段,就可能会造成大麻烦。

任何细小的差错,都会被无限放大。

最终导致无法保障服务质量。

图片

FPGA无容置疑的显著优势

其在计算任务上的响应速度,无以伦比。

与基于指令计算方式CPU不同,以硬件速度工作的FPGA,能够处理大量的并发计算任务。

在网络处理上的高带宽和低延迟,一直是其强项。

也在其在通信行业得以“独步天下”的原因之一。

在FPGA市场上,更是有“得通信行业者得天下”之说,是器件厂商的战略高地。

Xilinx公司的营收占比3成以上。

Altera公司曾经高达50%左右。

至于能耗优势,那就更不用说了。

一直用来与CPU、GPU进行比较,田忌赛马中的保留节目。

往大了讲,低碳环保的“绿色计算”模式,让我们的整个地球家园,都会大受裨益。

图片

尽管FPGA有这么多的好处,但要想真正发挥其强项,并非易事。

由于芯片结构的特殊性,实现设计开发,需要将设计布局布线到芯片上,所花的编译时间相当长。

与芯片容量、设计复杂度呈正相关。

理论上,可以用FPGA直接设计定制为你能想到的任何专用芯片,作为领域专用处理芯片DSA(Domain Specific Architecture)使用。

只要使用的芯片数量是“小批量”的(300万颗量级以下?),就会比生产专用芯片划算。

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

能够像Cadence那样,拥有一款性能最优的专用DSA芯片(并行广播式阵列技术CoBALT),在仿真加速市场一股独大,当然最好。

Mentor的硬件仿真平台(Veloce),也相当特殊,采用的是属于经典架构的专用FPGA芯片,别无分号,仅此一家。

其它EDA公司的仿真加速器,大多都是直接"压榨"(赛灵思)商用FPGA,将其定制设计类DSA芯片使用。

无需经历流片制造环节,快速完成产品市场适配。

包括SynopsysZebu,Aldec公司的HES等等,阵容相当庞大。

当用户明确表示所需的硬件仿真平台,“没有布局布线编译时间长”等具体要求时,相当于只想购买Cadence的帕拉丁。

直接排除了市场上其它供应商。

另外,由于FPGA设计开发,需要使用硬件语言开发等等,也是相当棘手,自然也包括数据中心的云计算领域。

图片

VHDL编程语言出现,比FPGA被发明的时间,还要更早些。

最初源于美国国防部(DoD)要求的标准化硬件语言描述,用于简化数字系统的设计与文档记录。

Verilog语言则是与FPGA几乎同龄。

由工业界的Gateway Design Automation公司推出,随后大受欢迎,并演化发展成为IEEE 1364标准。

1985年,发布第一版Verilog语言,相应的仿真器,也随即推向市场。

1989年,Cadence通过收购Gateway公司,获得Verilog语言及仿真器,并将Verilog语言开放给行业使用。

2001年时,逐步形成了今天的IEEE 1364-2001标准。

其次,与CPU行业不同,所有的FPGA应用设计,都没有可移植性,不会考虑兼容性(Heterogenous)

我们都知道,数据中心很多工具,大多受益于开源软件,以及社区大神们的无私贡献。

发烧友们用爱发电,才造就了如今的繁荣生态。

进入互联网时代后,以github为代表的开源网站,是馈赠给工程师的礼物,提供种类繁多的工具和APIs,高效构建整个系统的技术栈。

FPGA行业则完全不然

除了设计工具要与厂商锁定,需要购买License授权,才能使用之外,也相当缺少“社区版”免费工具

相对而言,如果只看编程语言,System Verilog可能会相对好些。

作为Verilog语言的扩展,尽管其目标是提供统一的硬件设计、规范与验证语言平台。

但是,现代软件开发中常见的“控制反转,依赖注入”功能,在System Verilog中也不支持。

  • 控制反转(IoC)指的是将程序执行流程的控制权从程序员转移到框架,实现对象之间的松耦合。


  • 依赖注入(DI)是一种具体的编码技巧,通过构造函数、函数参数等方式将依赖的类对象传递给类使用,提高代码的扩展性和灵活性。


数据中心的特殊之处还表现在几个方面。

不同的服务,对于计算资源的需求会有较大差异;

所有的服务,都要具备容错能力;

计算资源的虚拟化(池化),冗余是非常重要的设计理念。

因此,工程师会尽可能提高资源的利用率,充分利用CPU/内存/存储卡/网络的带宽。

然而,一个必然的结果是,并非所有的资源都被充分利用。

当我们聚焦FPGA计算资源时。

FPGA与CPU在计算模式上存在本质区别;

资源虚拟化、负载分割都不是最关键的;而是在于资源的不均衡,即长尾延迟(Tail Latency)。

用最慢的数据包处理时间,或者任务完成时间,形象表征了用户所能够感知的服务响应时间。

图片

对CPU来说,随着系统中节点数目的增加,以及工作频率差异,响应时间有着明显差距。

而FPGA是直接以硬件速度进行处理,有着稳定的低延迟特征。

按照破窗理论:大规模系统本质上是不可预测的、网络处理、存储访问、CPU性能都存在不确定性。

CPU的优化,问题集中在分支预测、指令对齐、快存行大小(Cache Line Size),超线程,DDR读取操作排序,读写缓冲区大小等等技术上。

FPGA的优化,问题则主要集中在三方面:

是否是可综合的?

能不能布局通过?

是否能够顺利布线,满足时序要求?

一旦以上三个基础问题,都得到肯定的回答。

那么FPGA性能将是确定且可预测的!

只剩下最后需要解决的,是在不可见的数据中心服务栈(Dark Stack)中,如何对FPGA设计进行调试。

代码是写出来的,也是调试出来的。

比如,对于一个可加速的热点应用,需要使用数据中心提供的授权服务、日志服务、数据库、存储访问服务,MapReduce分布式服务等。

这些服务,对于FPGA具体应用来说,都是相当难。

更严重的是,进入部署阶段后,也就没有ILA/Signal TAP等设计阶段的常规工具,可以使用。

并且还会涉及到一旦发生故障,如何最小化代价修复等等的现实问题。

直接决定了系统的可靠性和可用性。


令人棘手的FPGA调试验证问题

调试手段相当有限。

不外乎源码和网表级的仿真器、形式化分析,以及在硬件板卡上的实物调试验证。

三者的优缺点都非常明显。

并且类似软件行业的敏捷开发理念,在FPGA行业也相当“陌生”。

在构建过程中进行修正(Correct by Construction)快速迭代

图片

仿真器有着最全面的可见性和可控性,是工程师的“常规武器”,但速度最慢;

硬件构建过程中的在线调试则恰好相反,速度最快,但可见性和可控性又是最差的

在工具匮乏的前提下,主要依赖个人经验。

打个比方,只是把FPGA当作硬件看待,那么就像是近海底层活动的肉食性鮟鱇鱼,难以打理,非经验丰富的硬件工程师不能为。

在现有常用调试工具环境下,想要做成美味大餐,殊为不易。

是技术活,也是堆人手的体力活。

只有少数高级餐厅,才能提供。

图片


在软件行业,或者整个计算机领域,如果一个系统内部是不可见的,那么就意味着距离崩溃不远了。

所以不论是开发还是运维,都有品类丰富的工具可供选择使用。

数据库、网络设备的可观测工具,也是层出不穷,创新不断。

对用户,具有事半功倍的价值。

但在FPGA行业,完全不是这样,以下是一些可能的思路:

目前开放给爱好者使用的“社区”免费版,还寥寥无几,值得尝试。

还要打破编程语言上的迷思,比如System Verilog,不仅仅只是适合做设计验证,也可以用来开发。

以及需要更多便宜又好用的工具。

再说FPGA有自身的特点,所以也不用重复CPU的老路。

图片

编者后记

整整十年前,英伟达和赛灵思作为各自行业的头部芯片厂商,市值相当,都是在百亿美元量级。

后者甚至更高。

2014年时,相对于CPU,GPU更是初露锋芒的小弟。

当时全球七大超级数据中心,都在陆续引入FPGA,应用前景值得看好

Altera和Xilinx两大厂商,也是平分秋色,几乎各占一半江山

2015年,英特尔以167亿美元的高价将前者并购退市,作为Intel(PSG)部门,开启数据中心优先战略

2016年,赛灵思新的领导班子上台,推出自适应计算概念。

2017年,硬件厂商"变软"的趋势,从GPU延展至FPGA,开始在头部厂商显现。

2018年,英特尔推出OneAPI项目,以简化跨CPU、GPU、FPGA、人工智能和其它加速器的各种计算引擎的编程开发。

2019年,发布oneAPI beta版本,"从今天受限、封闭的编程方法演变到一个开放的、基于标准的模式,助力开发人员实现跨架构的参与和创新"。

同年Xilinx推出Vitis AI平台,为云端、边缘和混合计算应用加速提供了统一编程模型,并在GitHub上开源。


2020年,推出原厂Alevo系列标准加速板卡。

既有仿真加速器Zebu架构的影子,也借鉴了亚马逊在FPGA云服务中,引入的软件开发“Shell/Role”分区理念,用Shell实现与云服务OS的交互等。

在传统的FPGA硬件工程师看来,Shell分区简直是浪费硬件资源。

特别是对于习惯了FPGA不纳入OS管理,只是作为"裸卡"使用的行业用户和少数硬件高手,更是如此。

赛灵思的设计开发文件.dcp,在数据中心等更偏软件习惯的行业使用时,也改成云感十足的容器二进制文件.xclbin。

2021年初,微软引入Alveo加速卡,为全球54个区域的用户,提供云上加速服务:“今天本地调试,明天云上加速”。

并宣告进入AI平民化时代。

2022年,AMD以股权互换方式,完成对赛灵思的零元购,后者退市成为AMD的自适应嵌入式系统部门。

2023年10月,英特尔宣布由桑德拉·里维拉担任“分拆”后独立运营的可编程事业部首席执行官。

重出江湖的阿尔特拉,除了重启IPO上市进程之外,更希望重新赢回FPGA在工业、汽车、国防和航空航天等高速增长市场的应有份额。

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