带你读《弹性计算—无处不在的算力》第三章:计算产品和技术3.4 异构计算云服务和AI 加速器(四)-阿里云开发者社区

开发者社区> -开发者助手-> 正文

带你读《弹性计算—无处不在的算力》第三章:计算产品和技术3.4 异构计算云服务和AI 加速器(四)

简介: 《弹性计算—无处不在的算力》第三章:计算产品和技术3.4 异构计算云服务和AI 加速器(四)
+关注继续查看


3.4.4 FPGA 虚拟化技术

将FPGA 的高性价比算力通过云输出,使得FPGA 的算力普惠化、平民化,这是FPGA as a Service 的核心出发点和立足点。同时,云上使用FPGA 与FPGA 的传统使用方式也有着非常大的区别。FPGA as a Service 的核心就是FPGA 虚拟化技术。

目前FPGA 虚拟化技术还在发展初期,近几年随着云计算和AI 技术的发展, 才逐渐成为工业和学术领域研究的热点。关于FPGA 虚拟化技术的介绍文献也比较少,关于FPGA 虚拟化技术的发展历史,目前比较全面的总结可以参考2018 年

由Manchester 大学学生发表的一篇IEEE 论文A Survey on FPGA Virtualization ,文中提到早在2004 年由Plessl 和Platzner 发表的一篇论文Virtualization of Hardware- Introduction and Survey 中提到过FPGA 虚拟化技术的概念,将FPGA 虚拟化技术分为时域划分(Temporal Partitioning)、虚拟化执行(Virtualized Execution)和虚拟机(Virtual Machines)三种。

时域划分早期主要解决设备容量问题,是将大规模的应用设计拆分为几个小设计,然后将每个设计烧写在单个FPGA 上顺序执行。时域划分技术如图3-35 所示, 主要包括网表划分、数据流图划分和CDFG 划分。随着数据量和计算复杂度的增加, 单片FPGA 已经无法满足一个应用的需求,需要多片FPGA 并行完成,虚拟化技术逐渐打破了时间和空间维度的限制,就像大型数据中心的应用场景:多片FPGA 并行执行同一个任务,并可以及时切换到下一个任务。

虚拟化执行是把一个应用分成几个有关联的任务,并通过一个抽象层来管理和调度它们,其目的是在一定程度上实现设备无关性(Device Independence),从而解决资源管理和安全隔离问题,还可以提高开发效率,比较典型的例子是“PipeRench”项目,此项目成功研发了“Kilocore”芯片,它内置了一个PowerPC 处理器,实现了硬件虚拟化,并可以动态配置,从而解决FPGA 的资源限制问题。

虚拟机通过一个抽象架构来描述应用从而彻底实现设备无关性。起初,虚拟机的概念用来表示FPGA 的静态架构,譬如Shell 或者vFPGA 的Hypervisor,并不是我们现在理解的虚拟机概念。现在的FPGA Overlay 技术是应用比较广泛的FPGA 虚拟化方法之一,它是位于FPGA 硬件层之上、并连接顶层应用的虚拟可编程架构,实现了对FPGA 底层硬件资源的抽象化和虚拟化。FPGA Overlay 的具体实现方式有很多种, 这里不详细介绍,其主要目的是为上层用户提供他们熟悉的编程架构与接口,比如通过C 语言等高层语言对Overlay 中的通用处理器等进行编程,而无须担心具体的硬件电路实现,这点类似HLS。Overlay 实现了FPGA 的硬件无关性,便于应用设计在不同FPGA 架构间移植。另外,用户可以选择只编译自己改动的逻辑部分,在很大程度上缩短了FPGA 的编译时间,也方便对应用进行调试和修改。但是在实际开发中,由于其引入的Overlay 层并不能完全隐藏FPGA 结构,而且此技术没有业界统一标准, 所以会来带额外的开发难度和成本。

image.png


图3-35  时域划分

按照资源的抽象级别,FPGA 虚拟化技术分为三类,如图3-36 所示。

资源级别Resource Level):FPGA 上的资源可分为两种,一种是可配置的, 一种是不可配置的,所以资源级别的虚拟化主要指架构虚拟化(增加一个抽象层)和I/O 虚拟化,比较典型的技术就是FPGA Overlay 技术,I/O 虚拟化技术本质上跟CPU/ GPU 实现类似,比如FPGA 云主机用到的设备透传功能。

单节点级别Node Level):单节点指单片FPGA,主要指具备资源管理功能的抽象层,包括VMM(Virtual Machine Monitors,也叫Hypervisor),Shell(FPGA OS 或Hypervisor-vFPGA)和调度管理,主要用于多租户场景,即FPGA 云主机。

多节点级别Multi-Node Level):多节点指由两片以上FPGA 组成的FPGA 集群,虚拟化的目的是在多片FPGA 上完成同一个加速任务。其实现依赖FPGA 互联功能,常见的有三种互联方式,如图3-37 所示。

FPGA 虚拟化技术比较典型的应用场景包括基于OpenCL 实现的MapReduce 框架和微软的Catapult 项目。

从FPGA 云主机的实现方式来说,FPGA 虚拟化指I/O(PCIe 设备)虚拟化技术。

I/O 虚拟化技术,有些地方也叫I/O 设备虚拟化技术,目前主流的模型实现方式有以下几种:

image.png

图3-36  FPGA 虚拟化技术分类

image.png

图3-37  FPGA 互联方式

全模拟纯软件实现,通常由虚拟化层(QEMU)完全模拟一个设备给虚拟机用, 其优点是不需要修改操作系统内核和驱动,因此它是可移植性与兼容性最好的I/O 设备虚拟模型。但是,这种实现模型性能不高,主要原因是:第一,软件模拟本身就无法具有很高的性能;第二,在这种实现方式中,I/O 请求的完成需要虚拟机与监视程序多次的交互,产生大量的上下文切换,开销巨大。

Virtio 驱动半虚拟化将设备虚拟的工作一拆为二,一部分在虚拟机内核中作为前

端驱动,一部分放到虚拟化层上(通常是QEMU)作为后端,前后端共享Virtio 环协同完成任务。Virtio 前后端的技术只是减少了VM Exit 和VM Entry(Guest 和Host 的上下文切换),并且使Guest 和Host 能通过并行处理I/O 来提高吞吐量并减少延迟。但是,I/O 的路径并不比全虚拟化技术少。

硬件辅助虚拟化借助硬件技术,如Intel 的VT-d 技术实现PCI 设备直接挂载给虚拟机,常见的有设备直通和SR-IOV。

纵观各大云服务提供商,FPGA 云服务器采用的都是设备直通,主要因为以下三点:一是FPGA 的性能,客户考虑业务搬迁上云首先要做的就是对比,跟本地物理机比、跟竞品(如GPU/ASIC)比。虚拟化必然导致部分的硬件性能损耗,1% 的性能损失都会增大客户拒绝使用FPGA 云服务器的可能性;二是应用场景,FPGA 比较适用于计算密集型和通信密集型任务。在大数据爆发的时代,很多应用都需要调度多片FPGA 才能满足需求,将同一片FPGA 共享给多个客户的需求并不强烈;三是实现难度,分片FPGA(vFPGA)的多租户场景,在安全和隔离的实现上,虽然可以复用vGPU 方案,但是硬件逻辑开发的难度非常大。综合考虑,各大云服务提供商在FPGA 设备虚拟化时选择的都是性能损耗最小的设备直通方案。

设备直通Device Passthrough技术是将宿主机上的PCIe 设备直接分配给客户机使用,虚拟机独占这个设备,在客户机进行对应的I/O 操作时,不需要通过VMM 或被VMM 截获,所以设备性能几乎无损耗。设备直通技术的实现依赖IOMMU 功能(隔离虚拟机对内存资源的访问),需要硬件支持,比如Intel 平台的VT-d 技术。

说到VT-d 技术,首先要解释下DMA(直接内存读取),它是一种硬件机制,允许外围设备和主内存之间直接传输数据,不需要CPU 参与,由此可以大大提高设备的吞吐量。I/O 虚拟化的关键在于解决I/O 设备与虚拟机的数据交换问题,而这部分主要指DMA 和中断请求(IRQ)。只要解决好这两个方面的隔离、保护及性能问题, 就是成功的I/O 虚拟化。VT-d 通过重新设计IOMMU 架构,在CPU、内存和I/O 设备之间增加了一个硬件设备,其主要功能是将I/O 设备的DMA 访问请求和中断请求重定向到VMM 设定好的VM 中,最终实现了DMA 虚拟化,这项技术也叫DMA 重映射。

阿里云FPGA 云主机的设备直通方式采用的是VFIO,这是一套用户驱动框架, 通俗来讲就是一个设备驱动。在虚拟化情景下,VFIO 主要用来在用户实现设备直通,充分利用了VT-d 技术提供的DMA 重映射和中断重映射特性, 在保证直通设备的DMA 安全性的同时其I/O 性能接近物理设备。


总体来说,FPGA 板卡(PCIe 设备)的透传方式跟GPU/NIC 等PCIe 设备并无差别,鉴于FPGA 本身的硬件特性和安全隔离要求,阿里云FPGA 云服务器虽然采用了设备直通方式,但是并没有把FPGA 设备功能完全暴露给虚拟机,而是将PCIe 从功能角度划分为两个PF(Physical Function):即管理PF(Management PF)和用户PF(User PF),如图3-38 所示。

image.png

图3-38  FPGA 板卡(PCIe 设备)的透传方式

管理PF 提供FPGA 各种控制功能,如FPGA 镜像加载、状态监控等。例如, 在FPGA 云主机上,只有先发送加载请求,后台系统认证身份后,通过宿主机驱动才能发起加载操作。

用户PF 对应的是逻辑功能接口,此功能会通过设备直通方式透传给虚拟机, 用户可以使用官方提供的驱动访问设备,也可以自己开发。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4620 0
为什么选阿里云,阿里云计算服务平台优势
为什么选择阿里云服务器? 1、稳定 阿里云服务器云盘数据可靠性不低于99.99%,如果发生服务器宕机自动迁移,灾难恢复:阿里云提供“异地双活”和“两地三中心”的灾备解决方案,当一处系统因意外(如火灾、地震等)停止工作时,整个应用系统可切换到另一处,继续对外提供服务。
3136 0
带你读《弹性计算—无处不在的算力》第三章:计算产品和技术3.3弹性裸金属服务器和神龙虚拟化(二)
《弹性计算—无处不在的算力》第三章:计算产品和技术3.3弹性裸金属服务器和神龙虚拟化(二)
22 0
带你读《弹性计算—无处不在的算力》第三章:计算产品和技术3.3弹性裸金属服务器和神龙虚拟化(一)
《弹性计算—无处不在的算力》第三章:计算产品和技术3.3弹性裸金属服务器和神龙虚拟化
25 0
2032
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载