作者:薛梁
FPGA(Field Programmable Gate Array)现场可编程门阵列,作为 ASIC 领域中的一种半定制电路而出现已有 30 年的历史了,它既解决了定制电路的无法改变功能的不足,又克服了原有可编程器件门电路数有限的缺点,可应用的场景也很广泛。
就在 2017 年 1 月 20 日,腾讯云推出国内首款高性能异构计算基础设施—— FPGA 云服务,利用云服务的方式将只有大型公司才能长期支付使用的 FPGA 服务推广到了更多企业。企业可以通过 FPGA 云服务器进行 FPGA 硬件编程,可将性能提升至通用 CPU 服务器的 30 倍以上。同时,与已经深入人心的高性能计算的代表 GPU 相比,FPGA 具有硬件可编程、低功耗、低延时的特性,代表了高性能计算的未来发展趋势。
而在火热的深度学习领域,企业同样可以将 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 行业在数据计算加速方向可以分为以下几个参与方:
- 芯片原厂:Xilinx 和 Altera(已被 Intel 收购)提供 FPGA 的芯片,直供或者给代理商分销。
- IP提供商:提供各种功能的 IP,比如访问 DDR 内存的 IP,支持 PCIE 设备的 IP,图片编解码的 IP。一些共同的通用 IP 由芯片原厂提供。
- 集成商:集成商提供硬件和软件的支持。由于直接用户缺乏硬件设计和制造能力,往往希望集成商提供成熟完善的硬件,并完成IP的集成,提供驱动和使用方式,方便最终用户的使用。
- 用户:最终使用者。在数据中心领域,用户一般目的是希望使用 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 云服务,可以让行业参与方都获得价值:
- 芯片原厂:不需要经过层层代理,增加成本,而是可以通过云提供硬件板卡复用的服务。因为硬件统一采购和维护,也大大提升了稳定性和可靠性。
- IP提供商:可以把IP放到云平台的市场中去,最终用户使用时,云平台完成部署和交付,用户不需要接触可执行文件(网表文件),因此不存在产权泄露的风险。这将鼓励IP提供商的服务方式,可以提供按时长计费,买断计费,乃至试用版免费等方式,用户也可以迅速验证。
- 设计和开发:云提供框架方式,封装了常用的系统级操作(DDR 内存的访问、DMA、PCIE 设备控制等),可以支持硬件描述语言,也支持 OPENCL 以及类似 C 的高级语言。提供通用的驱动和调用库,不需要用户编程。对高阶用户而言,也可以使用 OPENCL 或者硬件描述语言实现自己的功能。
FPGA 最初的应用场景是在通信行业,那么其高通信带宽以及实时性处理能力可以为数据中心基础架构带来什么改变呢?当前,FPGA 可以在 IDC 大显神威的地方,例如低延时网络架构、网络虚拟化、高性能存储以及网络安全等等。可喜的是,我们看到微软以及亚马逊等同行已经使用 FPGA 在其公有云网络中进行了诸多积极尝试,腾讯云当前也在多个方向进行积极的探索和实践。
可以预见的是,借助于 FPGA,我们的数据中心会更加的绿色高效。