跟着云核算,大数据和人工智能技能运用,单靠CPU现已无法满意各行各业的算力需求。海量数据剖析、机器学习和边际核算等场景需求核算架构多样化,需求不同的处理器架构和GPU,NPU和FPGA等异构核算技能协同,满意特定范畴的算法和专用核算需求。今日,笔者带我们详细了解下FPGA技能。
FPGA是英文Field Programmable Gate Array简称,即现场可编程门阵列。它是在PLA、PAL、GAL、CPLD等可编程器件的基础上进一步开展的产品。它是作为专用集成电路(ASIC)范畴中的一种半定制电路,既处理了定制电路的缺乏,又克服了原有可编程器材门电路数有限的缺陷。
1、 FPGA简介
FPGA遍及用于完结数字电路模块,用户可对FPGA内部的逻辑模块和I/O模块重新装备,以完结用户的需求。它还具有静态可重复编程和动态在体系重构的特性,使得硬件的功用能够像软件相同经过编程来修正。能够毫不夸大的讲,FPGA能完结任何数字器材的功用,下至简略的74电路,上至高功用CPU,都能够用FPGA来完结。FPGA好像一张白纸或是一堆积木,工程师能够经过传统的原理图输入法,或是硬件描绘言语自在的规划一个数字体系。
2、FPGA开展史
FPGA的开展前史如下图所示。相对于PROM、PAL/GAL、CPLD而言,FPGA规划更大功用更高。
图1 FPGA开展史
FPGA芯片干流生产厂家包含Xilinx、Altera、Lattice、Microsemi,其间前两家的商场份额算计到达88%。现在FPGA干流厂商悉数为美国厂商。国产FPGA因为研制起步较美国晚至少20年,现在还处于成长期,仅限于低端,在通讯商场还没有老练运用。
2015年12月,Intel公司斥资167亿美元收买了Altera公司。Altera被收买后不久即拟定了英特尔处理器与FPGA集成的产品路线图。这两种产品集成的优点是能够供给立异的异构多核架构,习惯例如人工智能等新商场的需求,一起能大幅减缩功耗。
图2 FPGA在电信范畴的运用前史
FPGA在航天、军工、电信范畴有十分老练和广泛的运用。以电信范畴为例,在电信设备一体机阶段,FPGA因为其编程的灵敏性以及高功用被运用网络协议解析以及接口转化。
在NFV(NetworkFunction VirtualizaTIon阶段,FPGA依据通用服务器和Hypervisor完结网元数据面5倍的功用提高,一起能够被通用Openstack结构办理编列。
在云时代,FPGA现已被作为底子IaaS资源在公有云供给开发服务和加快服务,AWS、华为、BAT均有相似通用服务供给。
到现在,Intel的StraTIx 10器材已被成功运用于微软实时人工智能云渠道Brainwave项目。
3、两家干流FPGA公司开展近况
Xilinx聚集芯片抢先和丰厚的加快处理方案,经过敞开战略取得干流云渠道支撑,确立了其在数据中心的抢先地位。其UltraScale+系列FPGA抢先友商1年多,使其在云渠道竞赛中占抢先机,其VU9P器材被很多运用于包含AWS、Baidu、Ali、Tencent及华为在内的多家公司的云核算渠道。
为满意加快器范畴对FPGA芯片日益递加的功用需求,Xilinx已发布面向数据中心的下一代ACAP芯片架构、推出7nm Everest器材。此器材已不归于传统的FPGA,它集成了ARM、DSP、Math Engine处理器阵列等内核,将于2019年量产。相较于VU9P,Everest支撑的AI处理功用将能提高20倍。
Intel则供给从硬件到渠道到运用的全栈处理方案,不敞开硬件和渠道规划以防止生态碎片化,投入巨大但发展缓慢。
图3 Xilinx产品系列图
图4 Intel(以StraTIx系列为例)产品工艺时代
FPGA在数据中心服务器商场的实践运用中存在必定技能难点,详细包含如下几方面:
1、编程门槛较高:硬件描绘言语不同于软件开发言语,需求开发者对底层硬件有着较深入的知道;因此人才也就成为约束FPGA运用的一个重要因素。据了解,现在国内从事FPGA开发的人员开端估量大约两万多人。
2、集成难度较大:FPGA开发与运用需求软硬件的协同,包含运用高档言语的体系建模、硬件代码(电路)规划、硬件代码仿真、底层驱动软件与硬件逻辑的联调等等。
3、开发周期相对软件要长:硬件开发比软件开发进程杂乱,调试周期也被拉长。
4、很难获取独立逻辑IP。
4、FPGA全体结构
FPGA架构首要包含可装备逻辑块CLB(Configurable Logic Block)、输入输出块IOB(Input Output Block)、内部连线(Interconnect)和其它内嵌单元四个部分。
CLB是FPGA的底子逻辑单元。实践数量和特性会依器材的不同而改动,可是每个CLB都包含一个由4或6个输入、若干挑选电路(多路复用器等)和触发器组成的可装备开关矩阵。开关矩阵具有高度的灵敏性,经装备能够处理组合型逻辑、移位寄存器或 RAM。
FPGA可支撑许多种I/O规范,因此能够为体系规划供给抱负的接口桥接。FPGA 内的I/O按bank分组,每个bank能独立支撑不同的I/O规范。现在最先进的FPGA供给了十多个I/O bank,能够供给灵敏的I/O支撑。
CLB 供给了逻辑功用,灵敏的互连布线则担任在CLB和I/O之间传递信号。布线有几种类型,从规划用于专门完结 CLB 互连(短线资源)、到器材内的高速水平缓笔直长线(长线资源)、再到时钟与其它大局信号的大局低skew布线(大局性专用布线资源)。一般,各厂家规划软件会将互连布线使命躲藏起来,用户底子看不到,然后大幅降低了规划杂乱性。
内嵌硬核单元包含RAM、DSP、DCM(数字时钟办理模块)及其它特定接口硬核等,FPGA器材内部结构如下示意图。
图5 FPGA器材内部结构图
一般来说,器材类型数字越大,表明器材能供给的逻辑资源规划越大。在FPGA器材选型时,用户需求对照此表格,依据事务对逻辑资源(CLB)、内部BlockRAM、接口(高速Serdes对数)、数字信号处理(DSP硬核数)以及往后扩展等多方面的需求,归纳考虑项目最适宜的逻辑器材。
5、FPGA开发流程
FPGA的规划流程便是运用EDA开发软件和编程东西对FPGA芯片进行开发的进程。FPGA的开发流程一般如下图所示,包含功用界说/器材选型、规划输入、功用仿真、逻辑归纳、布局布线与完结、编程调试等首要进程。
1、功用界说/器材选型:在FPGA规划项目开端之前,有必要有体系功用的界说和模块的区分,别的便是要依据使命要求,如体系的功用和杂乱度,对作业速度和器材自身的资源、本钱、以及连线的可布性等方面进行权衡,挑选适宜的规划方案和适宜的器材类型。
2、 规划输入:规划输入指运用硬件描绘言语将所规划的体系或电路用代码表述出来。最常用的硬件描绘言语是Verilog HDL。
3、 功用仿真:功用仿真指在逻辑归纳之前对用户所规划的电路进行逻辑功用验证。仿真前,需求搭建好测验渠道并准备好测验鼓励,仿真成果将会生成陈述文件和输出信号波形,从中便能够调查各个节点信号的改变。假如发现过错,则回来规划修正逻辑规划。常用仿真东西有Model Tech公司的ModelSim、Sysnopsys公司的VCS等软件。
4、 逻辑归纳:所谓归纳便是将较高档笼统层次的描绘转化成较低层次的描绘。归纳优化依据方针与要求优化所生成的逻辑衔接,使层次规划平面化,供FPGA布局布线软件进行完结。就现在的层次来看,归纳优化是指将规划输入编译成由与门、或门、非门、RAM、触发器等底子逻辑单元组成的逻辑衔接网表,而并非实在的门级电路。
实在详细的门级电路需求运用FPGA制作商的布局布线功用,依据归纳后生成的规范门级结构网表来发生。为了能转化成规范的门级结构网表,HDL程序的编写有必要契合特定归纳器所要求的风格。常用的归纳东西有Synplicity公司的Synplify/Synplify Pro软件以及各个FPGA厂家自己推出的归纳开发东西。
5、布局布线与完结:布局布线可理解为运用完结东西把逻辑映射到方针器材结构的资源中,决议逻辑的最佳布局,挑选逻辑与输入输出功用链接的布线通道进行连线,并发生相应文件(如装备文件与相关陈述);完结是将归纳生成的逻辑网表装备到详细的FPGA芯片上。因为只要FPGA芯片生产商对芯片结构最为了解,所以布局布线有必要挑选芯片开发商供给的东西。
6、编程调试:规划的终究一步便是编程调试。芯片编程是指发生运用的数据文件(位数据流文件,Bitstream Generaon),将编程数据加载到FPGA芯片中;之后便可进行上板测验。终究将FPGA文件(如.bit文件)从电脑下载到单板上的FPGA芯片中。
6、怎么运用FPGA
FPGA开发结束,终究得到验证好的加载文件。输出加载文件后,即可开端正常事务处理和验证(以软件加载方法为例,描绘整个进程)
1、逻辑加载;
2、单板软件加载逻辑后,需求复位逻辑;
3、复位完结后,软件需等候等候一段时间至逻辑锁相环作业安稳;
4、软件发动对逻辑的外部RAM、内部Block RAM、DDRC等的自检操作;
5、软件完结自检今后,对逻辑一切可写RAM空间及寄存器进行初始化操作;
6、初始化结束,软件参阅逻辑芯片手册装备表项及寄存器;
7、逻辑准备好,能够开端处理事务。
7、FPGA适用场景
FPGA合适非规则性多并发、密布核算及协议解析处理场景,例如人工智能、基因测序、视频编码、数据压缩、图片处理、网络处理等各范畴的加快。