另外由于FPGA有高速SERDES等丰富的接口,而且能灵活控制实现的粒度和操作数据,因此非常适合进行协议处理和数据格式的转换。比如说FPGA可以很方便的接入以太网数据,并对以太网包进行包过滤等处理。
和CPU、GPU、ASIC在设计上的区别
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行业在数据计算加速方向可以分为以下几个参与方: 1. 芯片原厂:Xilinx和Altera(已被Intel收购)提供FPGA的芯片,直供或者给代理商分销。 2. IP提供商:提供各种功能的IP,比如访问DDR内存的IP,支持PCIE设备的IP,图片编解码的IP。一些共同的通用IP由芯片原厂提供。 3. 集成商:集成商提供硬件和软件的支持。由于直接用户缺乏硬件设计和制造能力,往往希望集成商提供成熟完善的硬件,并完成IP的集成,提供驱动和使用方式,方便最终用户的使用。 4. 用户:最终使用者。在数据中心领域,用户一般目的是希望使用FPGA对计算进行加速。 在FPGA行业,芯片原厂并不提供直接使用的硬件板卡,这个工作由集成商完成。由于硬件板卡使用量小和分担设计、生产成本,硬件板卡价格往往高于芯片价格,甚至达到十倍之多。 IP提供商因为担心产权泄露,通常不会迅速提供可用的可执行文件(网表文件)给用户,而是需要签署一系列的协议和法律文件,甚至有的IP提供商根本不提供给用户测试的机会。这样就造成最终用户很难得到可用的硬件板卡,更难以及时获得使用最新工艺芯片的硬件板卡,造成用户无法快速对不同IP进行验证,从而挑选适合自身业务的IP。另外,FPGA的开发使用硬件描述语言,缺乏软件领域非常广泛使用的框架概念,导致开发周期漫长。一般来说,FPGA开发周期是软件开发的三倍左右。 综上所述的这些问题,决定了云对FPGA行业的颠覆和革命。
|