作者介绍:Lavigneli(李嘉昕),高级工程师,隶属腾讯TEG-架构平台部-基础研发组团队,专注于FPGA云架构以及云上基因加速方案研发等工作,有将近10年ASIC芯片和FPGA大型系统的设计经验。
从云行业角度出发,根据艾瑞咨询统计的中国云服务市场数据,2016年中国云服务市场交易规模达520亿元,相比去年,行业规模同比增长31.9%,继续保持高速增长水平。艾瑞预计,未来几年中,云服务市场仍将处于高速发展状态,保持30%以上的年复合增长率。云市场规模高速增长的同时,市场的竞争也日趋激烈。云计算1.0时代通过售卖机器、计算和存储能力等商业模式很难承载未来企业高速发展的需求和突出云计算的核心竞争力。因此需要打造云计算的核心算力。
从FPGA行业角度出发,过去中小企业部署FPGA面临诸如硬件成本高、灵活性差、一次性采购投入大、研发周期长、投入和风险高等一系列问题。同时企业还会面临FPGA芯片更新换代带来的资源闲置问题。因此需要一种能够提供弹性的新架构。
FPGA云是云计算的核心算力,同时也是一种新型的行业解决方案。首先,它是一种异构计算平台的体系结构,通过并行和流水等设计手段,提高计算性能、能效比和计算实时性,对应用进行硬件加速处理;另一方面,它通过云服务方式为用户提供高附加值的服务,让用户能聚焦于业务的整合和解决方案。在享有性能优势的同时省去了硬件开发板研发和测试等诸多环节,然而传统方式由于硬件开发门槛高,代价大,时间长让很多用户望而却步。
近年来随着芯片工艺制程的不断发展,FPGA性能也在不断的提高,由于其具有超低延迟,高吞吐和快速响应的能力,在基因、大数据、人工智能、金融等领域得到广泛使用。FPGA云的未来是一个开放的生态系统。现阶段FPGA云已经形成“云+行业”的发展思路,并已经在教育、基因等行业率先铺开。
首先,共建FPGA生态圈。与合作伙伴共同构建一个完善的FPGA生态圈,这包括几层含义。第一,让更多的合作伙伴享受FPGA云性能优越、开发便捷、计费灵活等红利,把业务迁移到云。第二,通过建立和壮大第三方的IP市场,让更多不同行业的IP以服务方式对外提供,让创新的思路和优秀的解决方案在IP市场发芽和绽放。第三,整合和规范FPGA云软硬件标准。传统FPGA开发,每家公司都有自己的一套硬件接口规范、软件驱动和上层接口,除此之外设计往往很难跨平台和器件直接使用,对于每次移植均需面临时间长和难度大等风险。统一标准将是对FPGA产业的一次划时代的整合和革新。
其次,“云+教育”,通过不断丰富和完善FPGA云+课堂以及线上实验室等多个主题,最终将FPGA云产品落地到各大高等院校的课程和科研当中,目前FPGA云已经成功应用在东南大学数字电路课程中使用。后续,还将推动在全国范围内300多所高校的合作,让FPGA云服务走进校园和科研实验室,助力高校在FPGA教学和科研的改革,提升高校人才的整体竞争力。
图1:FPGA云“生态系统”
“云+基因”则是近年基因行业的一个新趋势。随着对基因数据的高性能计算和存储需求激增,与此同时由于测序产生的数据量极为庞大,导致目前计算速度缓慢以及效率低下。1个人类全基因组(上几百G数据)即使在高端服务器运算时间也至少需要1天左右时间。“云+基因”解决方案通过对流程中的关键算法进行硬件加速来解决生物计算量的性能瓶颈。
表1:FPGA云行业解决方案
设计之初,FPGA云系统需要解决的一个重要问题就是通用性。通用性包括两层目标。第一,能够做到FPGA系统架构的通用。第二,能够做到用户接口的通用。最终让用户的设计“无感知”的运行在不同平台和不同类型的FPGA器件,减少移植的代价。
通用框架的重要性和必要性体现在以下两点:
第一,由于各家FPGA芯片厂商定义了不同的内部总线互联标准,这样会导致用户在A平台上的设计不能直接移植到B平台,需要重新针对目标平台修改现有的设计。与软件开发不同的是,重新修改总线接口意味着需要重新设计接口和调整用户的系统结构去适配新的总线带宽和时序模型,里面涉及到系统架构,逻辑设计、仿真和验证等一系列的工作。因为FPGA的设计是精确到时钟周期,每个时钟周期不同的模块并发的完成不同的操作,这就会涉及到从上层的系统层到底层的硬件时序的修改,这意味着用户需要花费大量时间和精力在跨平台移植上。
第二,由于各家FPGA芯片厂商有各自的底层硬件驱动,如果没有对外提供统一的APIs,用户需要针对不同底层驱动维护不同的上层软件。从用户的角度来说,这种二次开发花费人力的同时并没有带来额外的附加值。
FPGA云系统包含两大区域,即静态区域和动态区域。静态区域虽然对于用户不可见,但是它却是整个系统架构的关键,构建起与上层PC侧的软件和FPGA侧动态区用户IP沟通桥梁,静态区域主要完成包括PCIe协议控制器、DMA数据传输、内存控制器、中断处理、地址管理模块和总线管理和适配模块、动态加载模块和一些系统调试模块等。动态区域对应的则是用户的IP,这里采用业界通用的AXI总线进行互联。如果采用私有的或者不通用的总线进行互联,用户往往需要对总线协议重新进行理解和开发,而且很难做到很好的系统可扩展性。APIs采用统一的外部接口与用户程序交互,用户不需要把精力花在驱动集成、调试和封装等繁琐细节,只需要专注于高附加值的上层应用和服务开发上。
图2:FPGA云系统框图
支持动态可重配体现了FPGA云平台的灵活性。它是指在切换设计中的某些部分时,其余部分还能继续保持工作,完全不需停机或者重启等操作,且几乎不影响成本与开发时间。用户能够即时更改对应的功能,无需全部重配置或重建链接,从而大幅提高了灵活性。在关键功能持续运行状态下,用户可以在已经部署好的系统中升级特性集、修复漏洞和演进到新标准的能力,极大地提升了系统的可升级性和可靠性。
具体应用场景主要包括两种。第一种是在不同用户间完成业务的切换,即用户A的业务被替换成新用户B的业务。第二种是同一用户业务功能进行升级或者问题修复等,例如用户需要增加一个新特性或者在实际运行中出现了bug,需要立即进行修复等。
图3:动态可重配
目前主流FPGA芯片生产商有因特尔(Intel)和赛灵思(Xilinx),这两家厂商均有自己的一套驱动和FPGA设计的标准,因此需要设计一个通用系统架构去适配不同厂商的接口,并灵活的进行扩展。这主要体现需要兼容不同的总线互联标准、不同的IP接口和时序等。
由于赛灵思一般采用的AXI总线互联,而因特尔则是采用CCIP或者Avalon总线进行系统各功能模块互联,因此在静态区域需要增加一个总线适配模块,完成从CCIP或者Avalon到AXI总线的转换,这样只要用户的IP满足AXI总线,就可以方便的移植到不同平台中。
IP主要指的是FPGA厂商为了缩短用户的开发时间,提供给用户的不同类型功能模块。例如常见的ROM/RAM/FIFO等部件,不同的厂商往往在接口和时序存在比较大的差异,这对于用户的设计和集成是一件头疼的事情。为了最大限度减少用户的二次开发,采用一个统一的wrapper进行封装,提供一个通用的外部接口和遵循业界常用的时序标准,隐藏内部各家厂商的实现细节。
传统FPGA硬件开发采用硬件描述语言(Hardware Description Language,简称:HDL)进行开发,它是电子系统硬件行为描述、结构描述、数据流描述的语言。利用这种语言,数字电路系统的设计可以从顶层到底层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统,经过综合工具转换到门级电路网表。然而这要求设计人员必须对硬件架构,电路具体结构和工作原理有深入理论和实践知识,让很多软件开发者望而却步。
增加高级系统语言的支持,让软件开发人员即便之前没有FPGA使用经验,也能受益于 FPGA平台的优势。集成设计环境不仅可提供编码模板和软件库,而且还能对各种开发目标进行编译、调试和特性分析。基于CPU或者GPU 开发能够轻松迁移到 FPGA上,同时还可在他们熟悉的工作流程中维护和复用OpenCL、C和C++代码。这样能让设计人员能够集中精力定义算法,而不是重点关注硬件设计的具体电路结构和时序。同时OpenCL编译器将相同的高级描述转换为流水线,从而发挥了FPGA器件的优势。它能够大幅度提高性能,同时降低了功耗。此外,与使用HDL的传统FPGA开发方法相比,使用OpenCL/C/C++进行软件、算法等开发能够缩短产品的开发时间,让更多的软件开发者能够使用FPGA进行开发。
使用OpenCL描述来开发FPGA设计,与基于HDL设计的传统方法相比,具有很多优势。开发软件可编程器件的流程一般包括进行构思、在C等高级语言中对算法编程,然后使用自动编译器来建立指令流。面向OpenCL的SDK提供了设计环境,很容易在FPGA上实现OpenCL应用。如下图4所示。
图4:高级语言的开发示例
FPGA云系统提供源代码加密保护,用户比特流加密保护以及DNA认证等安全手段。
以赛灵思的FPGA为例子,所有的FPGA器件都有DeviceDNA,这是一个57 bit的二进制序列,在器件生产的时候烧死到芯片里面,每个芯片都是唯一的。这个序列,用户可以通过内部的逻辑直接读出。用户利用DNA唯一性,采用自定义的加密算法来实现IP的保护。具体过程为:首先根据每个芯片唯一的DNA,经过某种变换(加密算法)变成另外一串秘钥,同比特流文件一起存储在外部flash中。然后比特流文件加载后,硬件首先会去读取这DNA,将用户加密电路生成的结果和存储在flash中的秘钥做比对,如果比对成功,芯片正常工作。如果比对不成功,则停止工作。
图5:DNA加密示意图
这些特性主要为了提高系统稳定性,可调试性和可观察性。
提供实时监测电路板以及FPGA功耗和温度等功能,在出现异常的情况下进行告警,必要时停止FPGA的工作。
随着数据中心和高性能计算等系统要处理的数据量不断攀升,需要的带宽不断提高。HBM技术出现可以有效提高内存带宽。而新架构和布线技术出现则可以有效解决用户的时序收敛问题。除此之外,“CPU+FPGA”新架构的出现将会是未来异军突起的一股新流。
1. HBM技术
高速带宽存储器(HBM,High-Bandwidth Memory)可以说是未来高速存储的发展风向标。它通过堆叠硅片互联技术(Stacked Silicon Interconnect, SSI)纵向堆叠了DRAM芯片,使用直通硅片过孔(TSV, through-silicon vias) 和微焊球将其连接起来。在异构SiP中集成HBM,这种实现方式使得能够将DRAM存储器尽可能靠近FPGA管芯进行封装,从而缩短了走线长度,以最低功耗实现最大存储器带宽。在因特尔推出了14 纳米Stratix 10芯片集成的HBM2 DRAM封装预计可带来最高可达1TB/s的内存带宽。
图6:HBM技术示意图
2. Hyper Register
与传统的LE或者自适应逻辑模组(ALM)中的寄存器完全不同,“超级寄存器”是与器件中每一个布线段相关联;所有功能模块的输入都有超级寄存器,例如ALM、嵌入式存储器(M20K)模块,以及数字信号处理(DSP)模块。超级寄存器是可旁路的,支持设计工具在布局布线后自动选择最优寄存器位置,以提高内核性能。在互联上有超级寄存器意味着调整性能不需要其他的ALM资源(与传统的体系结构不同),不需要对设计布局布线进行额外的修改,不会增加复杂度。而且,在互联上内置超级寄存器有助于降低布线拥塞。下图7显示包括新型超级寄存器的FPGA内部结构,互联布线资源与它相连接。在每一水平和垂直布线段的交叉点上,以小方块表示超级寄存器位置。
图7:Hyper-Registers示意图
3. “CPU+FPGA”新架构
英特尔在今年年底将推出XeonPhi系列产品, 其中一个最大亮点就是把FPGA集成到处理器中,结合通用处理器及专用电路的优势,这样就能最大限度发挥软件灵活性以及FPGA定制硬件在性能上的优势。这种定制处理器以Xeon(至强)处理器为基础,首次在单一封装内集成了FPGA可编程阵列电路,插槽兼容标准的Xeon E5处理器。它的性能很强悍,根据业界标准的FPGA加速测试,其性能提升了10倍,而且接口延迟更低,一致性更好。
图8:CPU+FPGA 新架构
FPGA云是云计算2.0时代应运而生的“芯”力量,在人工智能、基因、大数据等众多领域拥有广阔的前景和业界成功的案例,伴随着近年来云技术和人工智能的热气, FPGA将走进公众的视野。完善的生态圈和成熟的云架构和开发配套将吸引更多云客户愿意尝试这种“芯”技术带来的红利,铸造出扎根于行业的成功解决方案。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。