亚马逊AWS新服务:可编程硬件

时间:2021-01-31 04:05:35

一、 FPGA背景介绍

FPGA是Field-Programmable Gate Array的英文缩写,英文直译叫做“现场可编程门阵列”,一般都叫做“可编程硅芯片”。计算机的处理器是在预定义的电路中运行软件应用程序,与此相反,对FPGA进行编程会使芯片内部的线路重新连接,从而直接在硬件中执行所需的功能。

每一块FPGA芯片都是由有限多个带有可编程连接的预定义源组成,可实现可重配置数字电路和I/O模块并允许电路接触外部环境。

亚马逊AWS新服务:可编程硬件

FPGA资源说明书中通常介绍了可编程逻辑模块的数量、固定功能逻辑模块(如乘法器)的数目及存储器资源(如嵌入式块RAM)的大小。FPGA芯片中还有很多其它的部分,但是以上指标通常是在为特定应用选择和比较FPGA时的最重要参考指标。

可重配置逻辑模块(configurable logic block, CLB)是FPGA的基础逻辑单元。CLB有时又称为片(slice)或逻辑单元,由两个基本元器件构成:触发器和查找表(LUT)。不同FPGA产品系列的区别在于触发器和LUT的组合方式,因此理解触发器和LUT是至关重要的。

二、 FPGA作用

在计算加速领域,传统CPU处理能力的需要突破已经成为共识,目前的途径主要有以下几类:

途径一,ASIC:经历了几十年的发展演变,为专门目的而设计的ASIC,由于面向特定用户的需求,在加速效率上可圈可点。但是,设计周期长、成本贵、应用范围窄的通病,使ASIC仅适合于批量很大或者对产品成本不计较的场合。

途径二,GPU:随着近年来机器学习等领域的突飞猛进,GPU也早已经不再局限于3D图形处理,其在浮点运算、并行计算等部分计算方面的特性已经引起业界越来越多的关注,尤其是目前最大的独立芯片生产销售商NVIDIA有些如日中天的感觉,但其在应用广度上的通用性仍然有待时间的检验。

途径三,FPGA:它作为半定制的ASIC而出现,既解决了定制电路的不足,又在性能与应用广度上显示出优势,英特尔已经积极布局,推出CPU+FPGA架构,也有厂商推出了单独的FPGA架构,这些都使FPGA进入数据中心加速的主角地位。

下面是一个厂商提供的测试数据:

亚马逊AWS新服务:可编程硬件

可以看出,这个厂商FPGA与服务器CPU的性能对比,单位功耗性能在机器学习推断方面提高了11倍;数据分析SQL查询方面提升了33倍;视频处理转码提高40倍;存储压缩提高40倍;网络vSwitch可提高23倍。

三、   AWS的FPGA

亚马逊AWS提供了新的EC2实例F1,这种新的EC2实例是具有现场可编程门阵列 (FPGA) 的计算实例。可以进行编程,为应用程序创建自定义硬件加速。F1 实例易于编程,并且配备了开发、模拟、调试和编译硬件加速代码所需的各种资源,包括 FPGA Developer AMI 和硬件开发工具包 (HDK)。FPGA 设计完成后,您可以将其注册为 Amazon FPGA Image (AFI),然后将其部署到您的 F1 实例,只需单击几下即可完成部署。您可以多次重复使用您的 AFI,并可以根据需要跨多个 F1 实例使用。

Amazon EC2 F1 现已推出预览版,具有两种不同的实例大小,且每个实例包含多达八个 FPGA。F1 实例配有最新的 16nm Xilinx UltraScale Plus FPGA。每个 FPGA 都具有 64 GiB 本地 DDR4 ECC 受保护内存,并配有专用 PCIe x16 连接。每个 FPGA 大约包含 250 万个逻辑元件以及大约 6800 个数字信号处理 (DSP) 引擎。与其他 Amazon EC2 按需实例一样,您将按小时为 F1 计算容量付费,无需签订长期合约,也无须支付预付款。FPGA DeveloperAMI 或 HDK 都是免费的,您可以在您的 F1 实例上根据需要对 FPGA 多次进行编程,无需额外付费。

四、   AWS FPGA的优势

快速部署自定义硬件加速。借助 F1 实例,您只需在 AWS 管理控制台中单击几下,即可在 AWS 上部署自定义 FPGA。F1 实例可以拥有一个或多个与其关联的 FPGA 设计,使您能够快速且灵活地在同一个实例上运行多个 AFI。此外,F1 实例还为您提供了编程、模拟、调试和编译硬件加速代码所需的易于访问的工具。

可预测的性能。FPGA 通过一种专用的 PCI Express(PCIe) 结构连接到您的 F1 实例,从而使各个 FPGA能够共用同一内存空间,并能够以高达 12GBps 的速度相互通信。PCI Express 结构与其他网络相隔离,且 FPGA 不会跨实例、用户或账户进行共享。此设计可确保您在使用 FPGA 时只有您的逻辑在其上运行,有助于提供一致的性能。

改变 FPGA 的经济性。借助 F1 实例,您无需自行购买 FPGA 或购买专门的硬件来运行 FPGA,即可为您的工作负载部署硬件加速,从而大幅降低为应用程序部署硬件加速所需的成本。如此一来,您便能够将 FPGA 用于更多工作负载,如基因组学研究和财务风险建模。FPGA可以按小时付费,无限次烧写。

可使用您现有的 FPGA 算法。您可以轻松地将您现有的加速算法引入AWS,并在 F1 实例中使用它们。F1 实例中的 FPGA 及 HDK 中的开发人员工具与热门 FPGA 供应商 (如 Xilinx、Altera 和其他供应商) 提供的硬件加速代码和设计工具兼容。

五、   AWS FPGA的特性

可编程的硬件加速。借助 F1 实例,您可以轻松地使用 FPGA 为您的工作负载部署硬件加速。FPGA 是可编程的集成电路,您可以使用软件进行配置。与仅使用 CPU 的服务器相比,您可以使用 FPGA 将您的应用程序速度提高达 30 倍。此外,由于 F1 实例中的 FPGA 是可编程的,因此,您可以灵活地更新和优化您的硬件加速,且无需重新设计任何硬件。

专用 FPGA。每个 F1 实例都具有多达八个 FPGA,且这些 FPGA 均专用于该实例,不会在实例、用户或账户之间共享。这可确保 FPGA 的全部力量将仅用于该实例,还能通过用户和账户隔离提高安全性。

可重复使用的安全 Amazon FPGA Image (AFI)。您所创建的用于对 FPGA 进行编程的设计被称为 Amazon FPGA Image (AFI)。AWS 提供了一种用于获取、管理和加密 AFI 的服务。注册 AFI 之后,可以将其与 Amazon 系统映像 (AMI) 相关联,也可以与正在运行的 F1 实例关联。您可以同时将多个 AFI 与同一个 F1 实例或 AMI相关联,且一个实例在运行时可在多个 AFI 之间切换,无需重新启动。如此一来,您便能够快速地连续测试和运行多个硬件加速。AFI 与 AMI 相关联后,您还可以向AWS Marketplace 中的其他客户提供您的 FPGA 加速。

硬件开发工具包。AWS 提供了硬件开发工具包 (HDK),帮助您快速开发硬件加速。HDK 包括代码示例、编译脚本、调试接口以及为 F1 实例开发 FPGA 代码所需的许多其他工具。您可以在 AWS 提供的 AMI 或您的本地开发环境中使用 HDK。

FPGA Developer AMI。FPGADeveloper AMI 包括一个预先打包的工具开发环境,其中含有用于模拟 FPGA 设计、编译代码及构建和注册 AFI 的脚本和工具。FPGA Developer AMI 包括用于调试和编译代码的工具。您可以在 Amazon EC2 实例上部署 FPGA Developer AMI,并快速预配置您所需的资源,以便编写和测试您的 FPGA 设计。

六、   AWS FPGA的实例详情

亚马逊AWS新服务:可编程硬件

七、   AWS FPGA的工作方式

亚马逊AWS新服务:可编程硬件

 开发:使用硬件开发工具包 (HDK) 及一整套设计工具和模拟器来开发自定义 Amazon FPGA Images (AFI)。

部署:直接在 F1 实例上部署 AFI,并利用 EC2 的所有可扩展性、敏捷性和安全性优势。

提供:在 AWS Marketplace 中为其他客户提供您设计的AFI。

购买:购买 AWS Marketplace 中列出的构建好的 AFI,从而快速实施常见的硬件加速。

看一个简单的例子。先登入到开发环境AMI,如下图所示:

亚马逊AWS新服务:可编程硬件

进入AMI之后,安装一些依赖包,启动License管理器,然后就能打开Xilinx的FPGA开发工具Vivado了。所以所谓的AMI其实就是一个操作系统,包含了Xilinx的FPGA开发工具和亚马逊的支持包。

可以使用VHDL和Verilog来编写FPGA代码,然后编译、模拟、并且进行校验。下面是一段Verilog代码:

module up_counter(out, enable, clk, reset);
output [7:0] out;
input enable, clk, reset;
reg [7:0] out;
always @(posedge clk)
if (reset) begin
out <= 8'b0;
end else if (enable) begin
out <= out +1;
end
endmodule

通过命令行启动Vivado,用来图形化编程:

亚马逊AWS新服务:可编程硬件

亚马逊AWS新服务:可编程硬件

写一段Verilog或者OpenCL代码,并编译综合成硬件逻辑。

亚马逊AWS新服务:可编程硬件

F1硬件开发工具包:

亚马逊AWS新服务:可编程硬件

八、   AWS FPGA的用途

使用 F1 实例部署硬件加速在许多高性能计算 (HPC) 应用程序中非常有用,可解决需要高带宽、增强型联网和较高计算能力的复杂科学、工程和业务问题。F1 实例尤其适用于有时间要求的应用程序,如临床基因组学、实时视频处理和财务风险分析。

基因组学研究:必须由基因组学研究人员处理的生物数据的数量和复杂性不断增加,逐步达到了 PB 级范围。研究人员和临床医生必须非常快速地处理这些数据集,以满足医生及其患者的需求。对于此类有时间要求的使用案例,F1 实例是理想的解决方案。

财务分析:金融服务行业对多种应用程序的 HPC 功能需求一直在不断增加,包括风险建模和分析、针对安全性的事务分析、高频交易等。金融服务组织可以使用 F1 实例来提高风险建模和分析的准确性,从而显著改进他们的决策制定流程。

实时视频处理:高性能广播级视频应用程序 (如图片处理、视频分析及视频转码和压缩) 需要使用实时分析功能。F1 实例是满足这些应用程序要求的理想解决方案,且不会影响视频质量。

大数据搜索和分析:许多大数据应用程序对数据分析和搜索的数量、多样性和速度要求不断提高,导致客户正在寻求硬件加速来满足这些要求。对于这些应用程序,客户可以利用 F1 实例的增强性能来满足其大数据分析和搜索要求。