摘要: FPGA (现场可编程门阵列)因为其硬件并行加速能力和可编程特性,在传统通讯领域和IC设计领域大放异彩。一路走来,FPGA并不是一个新兴的硬件器件,因为其开发门槛太高,硬件加速算法的发布和部署保护要求很是高,FPGA的使用一直是高冷的美人,没有走入日常百姓家。算法
FPGA (现场可编程门阵列)因为其硬件并行加速能力和可编程特性,在传统通讯领域和IC设计领域大放异彩。一路走来,FPGA并不是一个新兴的硬件器件,因为其开发门槛太高,硬件加速算法的发布和部署保护要求很是高,FPGA的使用一直是高冷的美人,没有走入日常百姓家。也就致使FPGA的计算潜力尚未获得深刻的挖掘。编程
阿里云虚拟化团队异构计算和高性能计算团队一直致力于将计算资源"平民化";高性能计算团队在作的E-HPC就是要让全部云上用户都可以瞬间拥有一个小型的超算集群,使得使用超算再也不仅仅是一些超算中心和高校的特权;而异构计算团队则致力于将目前最快,最新的计算设备在云上提供给用户,使得曾经高冷的计算资源再也不拒人千里以外:推出了FPGA云服务器FaaS 服务,其中的F1和F2实例已经对外提供服务,能够经过一键部署的方式把Intel和Xilinx的小规格的器件计算能力赋予客户。安全
2018年5月,新晋的大规格FPGA实例,基于Xilinx 16nm Virtex UltraScale+ 器件VU9P的实例F3正式发布。下面将对阿里云FPGA计算(下面简称FaaS)服务自己,以及此次发布的F3实例的底层硬件架构和平台架构进行技术解读。服务器
FaaS架构
阿里FPGA云服务器平台FaaS(FPGA as a Service)在云端提供统一硬件平台与中间件,可大大下降加速器的开发与部署成本。加速器开发商的加速器能够造成服务提供给加速器用户,消除加速技术与最终用户的硬件壁垒。用户则可以在无需了解底层硬件的状况下,直接按需使用加速服务。工具
为了给加速器提供方和使用方提供更加高效、统一的开发及部署平台,FaaS提供两大套件:HDK和SDK。性能
HDK阿里云
HDK给全部的加速器开发者提供统一的FPGA硬件接口,提早帮用户解决了FPGA开发中难度最大的高速接口开发及调试,例如PCIe、SERDES接口、DDR控制器等等;使得用户可以直接获得硬件平台和FPGA接口的最大性能,不会由于团队开发能力和经验的欠缺,形成硬件平台性能浪费;高效、可靠、统一的接口套件也为云上平台的安全隔离、设备稳定提供了保障,不会由于用户的接口设计问题,形成服务器宕机;同时能够杜绝用户在FPGA端对主机的非法操做,为整个云上安全提供保障。编码
HDK包括两个部分,Shell和 Role;Shell部署在静态区域,提供上述统一接口部分。加密
在提供统一接口、安全性和便捷性的前提下,阿里云FaaS HDK 也尽最大的努力保证用户设计的灵活性,Role的概念应运而生。Role部署在动态区域,是在Shell以外,预先开发并提供的,用户能够配合用户逻辑(Customer Logic)使用。不一样于Shell,用户能够根据须要,随时更换Role部分;这种Shell + Role的组合方式,保证了Shell的最轻量化,兼顾了统一性、便捷性和灵活性。
SDK
SDK包括两个部分:
和HDK(Shell+Role)对应的主机端驱动(Drivers)和软件库(Libraries)
FPGA管理工具 faascmd套件
驱动和软件库和HDK的Shell以及Role相对应,和HDK一块儿,为用户提供统一及灵活的软件支持,好比DMA驱动、寄存器访问驱动等等。
faascmd工具套件为用户提供云上FPGA管理服务,包括安全校验、FPGA镜像生成、下载及管理、FPGA加速卡状态查询反馈等功能。公有环境使用FPGA,须要考虑用户FPGA文件的安全,faascmd提供的秘钥及OSS bucket指定机制,有效保证了用户的FPGA下载文件的私密性。在线下的开发及应用中,开发者直接对FPGA进行下载操做,但在云上环境,用户对公有的FPGA资源直接操做对安全形成较大影响。Faascmd工具会对用户操做申请和物理FPGA资源进行隔离,但保证了用户下载安全的同时,提供给用户相似线下操做的体验;同时会对用户提交的网表进行校验,提升安全、下降风险。faascmd同时也提供调用接口,用户能很容易的在本身的App中调用管理工具,结合自身加速器特性实现各类管理功能。
FaaS 的IP市场
FaaS帮助下降了FPGA逻辑开发者开发的准入门槛:云上即开即用的FPGA资源,灵活的付费模式使得硬件资源触手可及;FPGA的逻辑开发上,简化了开发流程,统一了开发接口,把核心加速逻辑从周边硬件设备的接口调试中隔离出来,使得FPGA的新兴应用能够只关注业务加速的核心逻辑,快速迭代;在这两点上,阿里云的FaaS 迈出了FPGA资源平民化的第一步。
可是即使是大大简化的开发流程,触手可及的硬件资源,FPGA依然有必定的开发门槛。如何把已有的FPGA 逻辑IP价值最大化,联通FPGA加速的需求方和提供方呢?重要的一点就是如何解决在公共云数据中心层面保证FPGA加速IP的安全性,特别是对不可信的第三方进行输出和部署这个难题, FaaS是如何解决这个问题的呢?
答案是经过阿里云的FaaS的IP市场。技术上,经过与Xilinx联合开发的定制虚拟化技术达到IP加速与部署环境的强隔离,IP的用户对原始IP的网表文件彻底隔离,网表文件的传输,部署,加速流程全程对用户都不可见,同时加速计算能力又能够透明的向IP使用方第三方用户开放,这是阿里云在FPGA云上加速服务另一个技术创新。这个创新,彻底杜绝了FPGA IP在云上输出的时候被盗版的可能,提供了很是高的安全保护机制。
更加严格的保密机制也在规划中:很快能够经过阿里云的KMS加密服务对IP进行加密保护,每次对IP加载前都须要向KMS服务获取秘钥解密,这样一来针对IP的使用下载有据可查;而且使得IP发布方的IP在数据中心内部都是安全的,由于没有了IP使用方的KMS秘钥,即使是阿里云也没法对原始的网表进行解密操做。
在阿里云FaaS IP 市场的帮助下,即使是历来没有任何FPGA开发经验的用户,也能够一键从IP市场中获取相应的加速逻辑,并部署到对应的FPGA器件上面去。相信经过即开即用的硬件资源,统一的软硬件逻辑开发接口和IP市场,阿里云可以真正实现FPGA计算资源平民化的承诺。
F3硬件架构
阿里云FaaS的F3实例在底层硬件上,是使用阿里云自主研发的高性能单卡双芯片的VU9P的板卡。这里要划重点啦:单卡双芯片。必定有用户要问为何要这么设计呢?单卡双芯片的硬件设计有什么好处呢?
首先,对于用户来讲,经过单卡双芯片的这样的规格设计,与阿里云配套自研的服务器一块儿,最高能够提供单实例16 块 VU9P的计算实例。16块 VU9P这是很是高的计算密度了,这是设计单卡双芯片的第一个目的:经过提升计算密度,在同等计算单元下集成了更多的加速芯片,可以有效下降单位计算力的成本,从成本和单位实例的垂直计算力提高上客户能够双重受益。
单卡双芯片的两个VU9P芯片经过PCIe 桥接入系统,那么双芯片之间的互相通讯呢?是否是只能经过PCIe的总线来进行呢,答案是否认的,除了FPGA Direct这种经过PCIe互相通讯的能力以外,在阿里云的自研的板卡上也是有特殊考虑的。在两个芯片之间,设计了一个高速互联通道,使得两个FPGA之间能够经过这个特殊的通道以高达600Gb/s的速率进行通讯,这个通讯技术称之为FPGA Link。要知道,如今的数据中心主流部署的接入交换机光口通讯也只能达到100Gb/s的通讯速率,更高的200Gb/s的交换机还在试部署中。
试想一下,无需额外的交换机和光口硬件,两个FPGA芯片能够经过FPGA Link技术以超短时延经过6倍于主流光口通讯的速率进行通讯,这个将会以极低的成本帮助用户开启大量新的FPGA加速应用模式。好比,小规模的芯片仿真,须要两个器件才能部署的下的状况,能够将总体仿真模块拆解以后部署到两个芯片上,两个芯片之间的数据通路和同步信号经过高速通道互联;还有其余的应用场景,须要把功能模块部署到两个FPGA芯片之上,而二者之间须要大量的数据交换,好比视频转码场景:把小规模可是模块数目比较多的解码单元、视频处理单元部署到一个FPGA之上,把面积占用比较多的编码单元放到另一个FPGA上,编解码模组之间经过高速互联交换裸视频流。这将大大改善部署的难度,以及极大的解耦两个模块之间的相互依赖和设计难度。以上举了两个例子,读者必定可以触类旁通的想到,其余须要流水线处理并须要大量数据交换的场景,阿里云的F3实例的双芯片实例可以为客户提供最大的价值。
很多应用场景对板载的DDR存储仍是有要求的。阿里云的F3实例,为每一个FPGA搭配了客户可见的64GB的DDR内存,这64GB的DDR分红4个通道,分别链接到VU9P的3个硅单元上面,其中一个通道对应的16GB DDR保留常驻,其他3个通道对应的48GB存储以可选的方式能够被客户逻辑加载使用。
目前,看到了双芯片实例除了FPGA Direct技术和高达600Gb/s的FPGA Link高速互联能力以外,另外值得一提的是:双芯片的实例与其余的双芯片实例板卡之间也能够经过400Gb/s的光口进行互联,并且400Gb/s的以太协议驱动是经过Xilinx预置的MAC硬核来加速,不占用逻辑面积;经过以太或者自定义的轻量级通讯协议,可以在16芯片之间,以及更多的芯片之间搭建2维Mesh或者环形互联,进一步扩展多片互联的使用模式和应用场景。
最后,上一张图,让你们对上面作的硬件的技术解析有一个相对更具体的认识。
F3逻辑结构
F3逻辑结构,先给你们上一幅图:
SHELL:
Shell是FPGA的静态区域,内部包含用户PCIe、管理PCIEe、板卡管理系统和一个DDR访问通道。为了提升板卡的安全和稳定性,用户无权修改SHELL区域。
ROLE:
在设计中提出了Role的概念,Role和Shell是相似的封装。而Role跟Custom Logic一块儿在动态区域。Role的提出,能够更加轻量化Shell。经过Role实现了同一个Shell既能够支持OpenCL开发,也能够支持RTL开发;最后就是Role的再次抽象下降了用户对于FPGA的开发门槛。咱们提供基础的Role,也容许用户自行设计Role。咱们但愿更多第三方的设计者经过分享本身Role,使得FaaS平台更加精彩.
ROLE内部结构简介
Interconnect:该部分主要是提供给用户四路DDR通道的访问和USER_PCIe对四路DDR通路的访问。 该模块帮助用户隔离了时钟域,使用户逻辑在同一个时钟域上对4路DDR通道进行访问。
Inter chip interconnect: FPGA 单卡双芯片间互联通路;
Card interconnect: FPGA 卡间互联通路;
Custom Logic:用户自定义逻辑部分;
用户逻辑是属于Role的一部分,属于动态加载区域。 为了方便用户标准化使用,咱们在RTL设计中使用了标准的AXI-4和AXI-LITE接口。