FPGA(Field Programmable Gate Array)现场可编程门阵列,作为ASIC领域中的一种半定制电路而出现已有30年的历史了,它既解决了定制电路的无法改变功能的不足,又克服了原有可编程器件门电路数有限的缺点,可应用的场景也很广泛。
就在2017年1月20日,腾讯云推出国内首款高性能异构计算基础设施——FPGA云服务,利用云服务的方式将只有大型公司才能长期支付使用的FPGA服务推广到了更多企业。企业可以通过FPGA云服务器进行FPGA硬件编程,可将性能提升至通用CPU服务器的30倍以上。同时,与已经深入人心的高性能计算的代表GPU相比,FPGA具有硬件可编程、低功耗、低延时的特性,代表了高性能计算的未来发展趋势。
而在人工智能(AI)里面火热的深度学习领域,企业同样可以将FPGA用于深度学习的检测阶段,与主要用于训练阶段的GPU互为补充,FPGA还可应用于金融分析、图像视频处理、基因组学等需要高性能计算的领域,是这类对效率要求高的行业应用的最佳选择。
基于此,InfoQ采访了由腾讯云基础产品中心、腾讯架构平台部组成的腾讯云FPGA联合团队,向读者介绍FPGA的基本原理和设计初衷,应用场景以及它给行业带来的价值。
腾讯云FPGA的开发历史及背后的团队力量
随着芯片制程逼近理论极限,可以预见通用处理器(CPU)性能提升空间越来越有限。而腾讯自己的业务随着移动互联网的快速增长,数据体量的急剧膨胀,伴随着对这些数据的计算需求也在迅猛上涨。腾讯在2013年开始考虑如何解决计算需求的增长,而FPGA作为一种可编程的加速硬件彼时进入了大家的视野。有了解决计算需求的想法后,需要通过实践验证FPGA实际的能力。
腾讯的QQ、微信业务,用户每天产生的图片数量都是数亿级别,常用的图片格式有JPEG格式、WebP格式等,WebP图片格式比JPEG图片格式存储空间小30%。为节省存储空间,降低传输流量,提升用户的图片下载体验,通常采用WebP格式进行存储及传输分发,而图片转码所带来的计算消耗需要上万台CPU机器支撑。自然FPGA开发落地的第一个切入点就是图片转码:将JPEG图片格式转成WebP图片格式。
在图片转码的实践中,FPGA联合团队取得了FPGA处理延时相比CPU降低20倍,FPGA处理性能是CPU机器的6倍,验证了FPGA能进行计算加速的能力,同时也增强了FPGA联合团队的自信心。
(图1)图片转码中FPGA和CPU延时对比
(图2)图片转码中FPGA和CPU吞吐率对比
图片转码项目完成后,深度学习映入了FPGA联合团队的眼帘,一方面深度学习需要密集的计算,另一方面深度学习在未来应用上有着巨大的商业价值。深度学习基于深度神经网络理论,用在图片分类的神经网络是其中的一个分支:卷积神经网络(CNN)。团队使用FPGA对CNN计算进行加速,增强违规图片检测能力,最终在深度学习的实践中取得了FPGA处理性能是CPU机器4倍的战绩。
腾讯云FPGA项目实践的结果,见证了FPGA在数据中心里可以提供强大的计算能力和足够的灵活性,来应对数据中心对硬件加速的挑战。经过之前的FPGA实践,FPGA联合团队获得了在数据中心使用FPGA的经验,未来也将在数据中心的计算、网络、存储三个方向进一步探索,重构数据中心基础架构。
云端的数据中心业务日新月异,更需要一种高性能、高灵活的底层硬件结构,所以FPGA联合团队通过云端开放FPGA计算服务,从硬件层面加速云计算在各个场景中的应用,降低企业的使用门槛和成本。
FPGA的特点解析
2016年3月,英特尔宣布正式停用“Tick-Tock”处理器研发模式,未来研发周期将从两年向三年转变。至此,摩尔定律对英特尔几近失效。一方面处理器性能再无法按照摩尔定律进行增长,另一方面数据增长对计算性能要求超过了按“摩尔定律”增长的速度。
CPU本身无法满足高性能计算应用软件的性能需求,导致需求和性能之间出现了缺口。在新的芯片材料等基础技术没有取得突破前,一种有效的解决方法就是采用专用协处理器的异构计算方式来提升处理性能。现有的协处理器主要有FPGA,GPU和ASIC,FPGA由于其独特的架构拥有其他处理器无法比拟的优势。
FPGA(Field Programmable Gate Array)现场可编程门阵列,可以通过软件重新配置芯片内部的资源形成不同功能硬件,就像用乐高积木可以搭出航空母舰或变形金刚一样。因此,FPGA不仅有了软件的可编程性和灵活性,同时又有ASIC高吞吐和低延时的特性。而且,由于有丰富的IO,FPGA还非常适合用作协议和接口转换的芯片。
FPGA在数据中心最大的特点就在高吞吐的同时能做到低延时。FPGA内部的资源都是可以重配置的,因此它可以很容易进行数据并行和流水并行,且易于在数据并行和流水并行之间平衡。而GPU几乎只能做数据并行。
与ASIC相比,FPGA的可编程性体现出很大的优势。现在数据中心的各种算法每时每刻都在更新变化,没有足够稳定的时间让ASIC完成长周期的开发。比如在一种神经网络模型出来之后开始把它做成ASIC,也许还未投片生产,这个神经网络模型已经被另一种神经网络模型所替代。不同的是,FPGA可以在不同的业务需求之间做平衡。比如说白天用于为搜索业务排序的机器;在晚上请求很少的情况下,可以将这些FPGA重新配置成离线数据分析的功能,提供对离线数据进行分析的服务。
另外由于FPGA有高速SERDES等丰富的接口,而且能灵活控制实现的粒度和操作数据,因此非常适合进行协议处理和数据格式的转换。比如说FPGA可以很方便的接入以太网数据,并对以太网包进行包过滤等处理。
和CPU、GPU、ASIC在设计上的区别
(图3)处理器芯片对比
CPU/GPU 属于冯·诺依曼结构,任务执行需要经历取指、译码、执行、访存以及写回等过程。CPU为达到足够高的通用性,其指令流的控制逻辑相当复杂。GPU使用SIMD单指令多数据流并行等方式进行计算加速。
FPGA/ASIC在使用时硬件功能模块已固定,无需分支判断等复杂控制逻辑,同时大大降低了访存次数。因此在能效上可以比 CPU 高出1到2个数量级。
ASIC是一种专用的芯片,是为了某种特定的需求而专门定制的芯片。ASIC与通用芯片相比,体积小、功耗低、计算效率高、芯片出货量越大成本越低。但是缺点也很明显:开发周期很长,算法是固定的,一旦算法变化就可能无法重用。
而FPGA则是“软硬件一体”的架构,软件就是硬件。FPGA基本原理是在芯片内集成大量的数字门电路以及存储器,用户可以通过烧入 FPGA 配置文件来来定义这些门电路以及存储器之间的连线,进而得到不同的硬件功能。
就开发难度而言,ASIC > FPGA > GPU > CPU。目前主流的FPGA开发语言是硬件描述HDL,需要开发者具备一定的相关技能。随着业界OPENCL、HLS等类C高级语言的推进,FPGA的开发难度和周期也会有所改善。
FPGA 部署在哪里?与 CPU 之间如何通信?
腾讯云的FPGA主要部署在数据中心的服务器中。腾讯云将FPGA芯片加上DDR内存、外围电路和散热片,设计成PCIE板卡。这种FPGA板卡被安装在服务器的主板上,用户通过网络远程访问服务器,开发调试FPGA,并用其加速特定业务。
FPGA与CPU之间是通过PCIE链路通信的。CPU内部集成了DDR内存控制器和PCIE控制器。在FPGA芯片内部也用可编程逻辑资源实现了PCIE控制器、DDR控制器和DMA控制器。一般通讯分三种情况:
(1)指令通道
CPU向FPGA芯片写入指令,读取状态。CPU直接通过PCIE访问到FPGA芯片内挂载的存储器或内部总线。
(2)数据通道
CPU读写FPGA板卡上DDR的数据时,CPU通过PCIE配置FPGA芯片内的DMA控制器,输入数据的源物理地址和目的物理地址。DMA控制器控制FPGA卡上的DDR控制器和PCIE控制器,在FPGA卡上的DDR内存和CPU连接的DDR内存之间传输数据。
(3)通知通道
FPGA通过PCIE向CPU发送中断请求,CPU收到中断请求后保存当前工作现场,然后转入中断处理程序执行,必要时会关闭中断执行中断处理程序。CPU执行完中断处理程序后,会重新打开中断,然后重载到之前的工作现场继续执行。
目前FPGA行业面临的问题
在行业内,微软在数据中心使用FPGA架构,Amazon也推出了FPGA的计算实例,那么是不是说明整个行业对FPGA的使用比较广泛呢?实际上,FPGA是个硬件芯片,它本身不能直接使用,也缺乏类似操作系统这样的系统软件支持。长期以来,FPGA行业在数据计算加速方向可以分为以下几个参与方:
1. 芯片原厂:Xilinx和Altera(已被Intel收购)提供FPGA的芯片,直供或者给代理商分销。
2. IP提供商:提供各种功能的IP,比如访问DDR内存的IP,支持PCIE设备的IP,图片编解码的IP。一些共同的通用IP由芯片原厂提供。
3. 集成商:集成商提供硬件和软件的支持。由于直接用户缺乏硬件设计和制造能力,往往希望集成商提供成熟完善的硬件,并完成IP的集成,提供驱动和使用方式,方便最终用户的使用。
4. 用户:最终使用者。在数据中心领域,用户一般目的是希望使用FPGA对计算进行加速。
在FPGA行业,芯片原厂并不提供直接使用的硬件板卡,这个工作由集成商完成。由于硬件板卡使用量小和分担设计、生产成本,硬件板卡价格往往高于芯片价格,甚至达到十倍之多。
IP提供商因为担心产权泄露,通常不会迅速提供可用的可执行文件(网表文件)给用户,而是需要签署一系列的协议和法律文件,甚至有的IP提供商根本不提供给用户测试的机会。这样就造成最终用户很难得到可用的硬件板卡,更难以及时获得使用最新工艺芯片的硬件板卡,造成用户无法快速对不同IP进行验证,从而挑选适合自身业务的IP。另外,FPGA的开发使用硬件描述语言,缺乏软件领域非常广泛使用的框架概念,导致开发周期漫长。一般来说,FPGA开发周期是软件开发的三倍左右。
综上所述的这些问题,决定了云对FPGA行业的颠覆和革命。
腾讯云FPGA平台具体能解决哪些问题
腾讯云FPGA平台解决的是FPGA整个行业的一些问题。FPGA用户比较少,属于一个相对封闭的圈子,FPGA开发门槛高、开源的优质IP比较缺乏、芯片价格昂贵等问题一直为大家所诟病。
针对开发者,腾讯云FPGA平台提供了FPGA的底层硬件支撑平台,类似操作系统的部分功能,简化了开发者对底层通用设备的访问,比如DDR和PCIE这些通用设备,可以使开发者更聚焦到业务功能的开发。
FPGA 行业内的IP提供者和使用者缺乏一个公开的交易平台和信用保证机制,IP交易环节冗长,价格不透明,很难达成交易,获取 IP 后还需要搭建硬件平台来验证IP性能,这些都严重影响产品上市进程,经常耗时几个月之久。腾讯云提供了FPGA IP商店,IP开发者和IP提供商可以通过FPGA IP商店为其他客户无偿或有偿地提供FPGA IP和对应的测试程序。这些IP都是基于腾讯云FPGA的标准硬件来开发定制的,IP的验证和测试可以很方便地在云平台上完成,一个IP的交易可以由几个月缩短到一天之内,提高交易效率,也使得IP交易变得更加透明。
针对一些希望使用低延时的高质量计算服务的小型公司而言,可以使用FPGA云计算加速服务,不用耗费大量人力进行高性能计算方面的开发,很简单地就可以把高性能的云计算服务集成到自己的网络平台,达到提升用户体验的目的。比如:低延时的图片格式转换、基于深度学习的图片分类等服务,类似的服务后续还会进一步丰富。
对于学校的FPGA教学而言,以前学校需要为每个学生购买一个开发板卡,有了腾讯云平台之后可以节省学校购买开发板的成本,现在只需要给每个学生申请一个FPGA云平台的账户即可,学生登录上去直接可以根据demo进行学习开发即可。腾讯云平台同时会为用户提供便于学习的操作指导和实验课程方案,用户学习的东西更接近企业的实际应用场景,可以很好地跟将来的工作需要对接起来。
此外,大容量的FPGA芯片价格比较昂贵, 一个很重要的原因是FPGA芯片缺少量大的爆款产品,而腾讯云FPGA平台可以聚集大量的客户来使用腾讯的标准FPGA硬件设备,这样会增大该FPGA芯片的供应量,同时也便于芯片厂商降低成本,逐渐缓解FPGA芯片昂贵的问题。
从这些可以看出FPGA云化意义重大,可以推动整个FPGA行业的发展,给FPGA产业链的各方带来收益。
FPGA在互联网业务中的应用优势
· 图片转码
随着移动互联网的发展,用户每天上传的图片量越来越庞大,公司目前用于图片转码的业务主要有QQ相册、微信等,而业务中使用的图片格式大都为JPEG格式、WebP格式等,而图片转码所带来的计算消耗需要上万台CPU机器支撑。所以FPGA在互联网业务中第一个应用场景就是图片转码:JPEG图片格式转成WebP图片格式。项目取得了FPGA处理延时相比CPU降低了20倍,FPGA处理性能是CPU机器的6倍。
为了更进一步提升图片的压缩率,同时随着HEVC高性能编码标准的发展,HEVC的I帧图片压缩率和之前的WebP/JPEG等编码标准有了很大的提升,HEVC的I帧图片压缩率和WebP相比提高20~30%左右,和JPEG相比提高更多,平均能到50%左右,因此,无论从下载带宽节省还是后台存储成本降低,以及用户下载图片体验等角度来看,HEVC标准都有很大优势。而采用HEVC的问题在于HEVC 的帧压缩计算复杂度非常高,采用CPU进行转码成本很高,导致很难在业务中全面推广。为了增强图片转码能力,腾讯继续使用FPGA对图片转码进行加速。
经测试,完成WebP/JPEG格式图片转成HEVC格式图片,测试图片大小为1920x1080,FPGA处理延时相比CPU降低7倍,FPGA处理性能是CPU机器的10倍,FPGA机型单位成本是CPU机型的1/3。
· 图片分类
深度学习近年来在语音识别、图片分类和识别、推荐算法等领域发挥了越来越大的作用。在移动互联时代,为了增强图片检测的处理能力,降低图片检测成本,腾讯使用FPGA对CNN计算进行加速。
研发团队使用FPGA完成CNN算法的Alexnet模型,FPGA处理性能是CPU机器的4倍,FPGA机型单位成本是CPU机型的1/3。
FPGA能让开发者/团队更“任性”
对于外部开发者和开发团队来说,首先,腾讯云FPGA提供统一的硬件平台。开发者无需关注 FPGA 基础设施,免去了重复开发硬件平台面临的问题和挑战,快捷部署,几分钟就可以部署完毕一台全新的FPGA平台。FPGA芯片丰富的逻辑资源可以为开发者“任性”实现功能提供保障。统一的平台也便于开发团队快速弹性扩展硬件平台,从而提高业务容灾可靠性。
其次,腾讯云FPGA提供完备的开发环境,不需要专门人员开发驱动环境。开发语言多样性,HLS,OPENCL,RTL满足不同类别的开发人员需求,降低学习开发门槛,简单易用。
再者,腾讯云FPGA提供丰富的IP功能,不仅有大量免费IP和有偿的IP服务,而且交易流程透明、安全、可靠。加速开发者开发进度的同时也为开发团队提供一个将自己开发的IP进行交易的平台。
最后,腾讯云FPGA提供专业安全防护。部署到云上,将享受与云服务器同等的云安全基础防护和高防服务。免去传统FPGA数据存储和传输安全所带来的困扰。
可以看到,传统的FPGA开发面临的硬件平台稳定性、开发语言门槛高、调试周期长、驱动软件联合调试等问题都将得到改观,开发者和开发团队能够从繁杂和重复的工作中快速释放出来,有更多的时间和精力投入到创新的工作中去,这将为整个技术研发的氛围增加更多的创新因子,创造更多的价值。
未来,FPGA的行业价值
当前AI火爆,得益于FPGA的高密度计算能力以及低功耗的特性,FPGA率先在深度学习在线预测方向(广告推荐、图片识别、语音识别等)得到了较大规模的部署。用户也常常将FPGA与GPU进行对比,GPU的易编程性、高吞吐与FPGA的低功耗、易部署等特性也各有千秋。相较于GPU以及ASIC,FPGA的低延时以及可编程性也是其核心竞争能力。
对于行业来说,云是一种共享服务的思想,用户不以占有的方式使用硬件和软件,而是共享复用,因此大大降低了使用成本,提升了资源的使用效率。FPGA云服务,可以让行业参与方都获得价值:
1. 芯片原厂:不需要经过层层代理,增加成本,而是可以通过云提供硬件板卡复用的服务。因为硬件统一采购和维护,也大大提升了稳定性和可靠性。
2. IP提供商:可以把IP放到云平台的市场中去,最终用户使用时,云平台完成部署和交付,用户不需要接触可执行文件(网表文件),因此不存在产权泄露的风险。这将鼓励IP提供商的服务方式,可以提供按时长计费,买断计费,乃至试用版免费等方式,用户也可以迅速验证。
3. 设计和开发:云提供框架方式,封装了常用的系统级操作(DDR内存的访问、DMA、PCIE设备控制等),可以支持硬件描述语言,也支持OPENCL以及类似C的高级语言。提供通用的驱动和调用库,不需要用户编程。对高阶用户而言,也可以使用OPENCL或者硬件描述语言实现自己的功能。
4. FPGA最初的应用场景是在通信行业,那么其高通信带宽以及实时性处理能力可以为数据中心基础架构带来什么改变呢?当前,FPGA可以在IDC大显神威的地方,例如低延时网络架构、网络虚拟化、高性能存储以及网络安全等等。可喜的是,我们看到微软以及亚马逊等同行已经使用FPGA在其公有云网络中进行了诸多积极尝试,腾讯云当前也在多个方向进行积极的探索和实践。
可以预见的是,借助于FPGA,我们的数据中心会更加的绿色高效。
本视频基于Xilinx公司的Artix-7FPGA器件以及各种丰富的入门和进阶外设,提供了一些典型的工程实例,帮助读者从FPGA基础知识、逻辑设计概念
本课程为“从零开始大战FPGA”系列课程的基础篇。课程通俗易懂、逻辑性强、示例丰富,课程中尤其强调在设计过程中对“时序”和“逻辑”的把控,以及硬件描述语言与硬件电路相对应的“
课程中首先会给大家讲解在企业中一般数字电路从算法到流片这整个过程中会涉及到哪些流程,都分别使用什么工具,以及其中每个流程都分别做了
@2003-2020 中国电子顶级开发网