lcytms
发表于 2018-4-19 09:05:46
04
那么,FPGA为什么适合做这个事情呢?
我们来看看FPGA的基本结构。
FPGA是非常适合做一些什么事情呢?
做CPU的offload。
它可以加速算法,而且最小化遇到的一些瓶颈。
最小化这些瓶颈怎么实现的呢?
首先FPGA里面有非常非常多的计算单元,它可以是十倍、百倍CPU的计算单元,在我们的A10系列里面有有1000多个datablock,任何一种pipeline的设计,一个或者多个功能。
如果从软件角度来说,它就是一个时钟周期,可以完成很多步操作。
也就是说单个时钟周期,可以实现多个或者不同的指令。
这是FPGA带来的第二个好处。
lcytms
发表于 2018-4-19 09:06:33
05
第三个好处,FPGA内部留有非常多的所谓的local memory,数量有多少呢?
大概是有几十MB到几千MB这样一个级别。
这些Memory的特性是什么呀?
它提供一个极高的带宽,有多宽呢?
有10个T,8个T,这样一个带宽。
它与FPGA里面的计算单元配合的时候,可以构建一个适合于应用里面的计算单元。
最后一个,是FPGA的可编程特性。
能够应用到不同特定的应用,进行加速。
接下来,我们看一下FPGA里面最新的Stratix 10的器件,它的一些特性。
它有超过500万的逻辑单元,可以实现任意的组合逻辑,它有比较高的DDR4的带宽,峰值带宽是多少呢?
lcytms
发表于 2018-4-19 09:07:55
06
有21.3G,也有高达256G的HBM2,这样一个高带宽的Memory的配置。
有高达10TFLOPS这样一个浮点计算单元这些浮点计算单元都是硬件的。
另外还有丰富的I/O接口,以及28MB这样一个系统Memory。
除此之外的话,片上还会集成一个选项,就是A53的四核的ARM的选项。
接下来我们来看一下,Intel FPGA把我们的这些东西,所带来的挑战,怎么把它克服掉?
我们看到有Memory墙的问题,有功率墙的问题。
不管是Memory墙的问题,还是功率墙的问题,现在的处理方式,是用并行的方式来做。
lcytms
发表于 2018-4-19 09:09:25
07
接下来,就是在整个系统里面,FPGA到底是在什么样的位置合适呢?
这个胶片大家可以看到,首先FPGA可以在CPU的旁边扮演计算加速的角色。
另外,FPGA它可以在IO的入口方向,扮演一个网络加速的角色,可以对数据流进行一个预处理.
比如说,压缩解压缩,加密解密,这样一些传统意义上来说由CPU来干的活,可以offload给FPGA,在数据的入口侧,就能够预先地做掉。
这样的一个处理,不仅仅是CPU的offload上的一个帮助,更大的帮助的话,提供了一种可能性,能够有可能会实时地去处理大量的数据。
lcytms
发表于 2018-4-19 09:10:43
08
大家都知道,如果把大量的数据从IO搬到CPU上里面去的话,需要耗费很多所谓的周期的。
而这些周期在很多系统里面,是整个系统的瓶颈,这个系统说我有很强的计算能力,我算得过来没问题,但是它的数据进不来。那么怎么处理呢?
一种解决方法就是说,我在数据的入口处,我直接进行数据的处理。
数据预处理完成之后,数据量有一个数量级的减少。
然后把减少的数据量交给CPU做进一步的处理。
除了这个问题以外,FPGA还可以扮演所谓的存储加速的角色。
简单地说,现在归结为三类,FPGA在计算、网络、存储这三个方面都可以非常适合地完成它的工作。
下面呢,我们看一个实例。
lcytms
发表于 2018-4-19 09:11:39
09
这是一个比较常见的,比较流行的,关于字的视觉的整套的解决方案。
这里面有一些功能模块需要被实现的。
我们会有传感器的接口,把传感器的数据读进来,传感器的数据可能有一些预处理。
然后呢,我们可能有图像信号的一个预处理。
处理完了数据呢,我们可能会有图像内容的一个分析。
比如说我要识别性人,有猫有狗啊,或者是怎样的。
如果缩短数据的话,你还有一个数据压缩的需求。
压缩以后,传给对方的话,还有一个接口协议的处理。
所有的这些事情,在传统的设计里面,通常情况下是有多个器件来配合完成的。
比如说FPGA来做传感器的接口,为什么呀?
因为传感器的接口多种多样,FPGA作为粘连逻辑,很容易实现对不同的接口的一个适配。
lcytms
发表于 2018-4-19 09:12:25
10
所以很多时候,传统方式用FPGA来做传感器的接口。
同时我还会有ASIC来做图像信号的一个处理。
然后呢,会有CPU来完成图像内容的一个分析。
也可能还会有ASIC来完成图像的一个压缩。
然后还会有FPGA来做图像传输上的协议方面的一个处理。
也就是说,在一个传统设计里面的话,我们通常情况下,有FPGA,有ASIC,有CPU,这样的不同的物理上的配合,来完成这样一个功能。
那么在今天,所有的事情就发生改变。
改变是什么呢?
把所有的功能整合在一个芯片里面去完成。
这个芯片就是SoC FPGA。
在这个芯片里面,由于我用一块芯片把所有的部分都整合进去之后,它数据通讯的这一部分,就有可能做到低延时、高带宽。
lcytms
发表于 2018-4-19 09:13:37
11
而且芯片整合之后,它会带来warm发热的减少、功耗的降低等一系列的好处,也是目前我们发展的一个趋势。
接下来,我们在看另外一个话题,非常流行的关于IOT方面的内容。
IOT的数据,从传感器来的数据,会到所谓的数据中心。
从传感器到数据中心,这一整条链路上面的话,是要经过很多个不同部件的处理。
从功能角度来说的话,在传感器侧的话,我们可能会有传感器的控制,会有所谓的边缘节点,所谓的网关。
在网上有所谓的网络,最后才能到达所谓的数据中心。
那么在整个这个应用上面的话,FPGA能够做什么事呢?
这个图像告诉大家,由于FPGA的配置从低端到高端,有非常多不同的种类,那么它能够适用于不同的应用场景。
lcytms
发表于 2018-4-19 09:14:22
12
当我们谈到从IOT到数据中心,在整个所谓路径上面的话,FPGA都有相应的用武之地。
比如说我们在最低端,在对传感器的控制上,大家知道,传感器在通常情况下,我们会有电压电流呀,什么液位啊,或者各种各样的模拟量,是需要传感器来采集的。
传感器回来的数据,会有一些预处理。
往上传的话,可能会有对整个数据流的预处理,甚至包括人机接口。
我们最低端的MAX10,Cyclone V这样的器件就非常适合于传感器的接口,为什么呢?
因为这个档次的芯片,它有一个非常突出的特点就是小、低功耗、低成本、可编程。
lcytms
发表于 2018-4-19 09:15:18
13
这些特性非常适合于面对各种不同传感器所需要的各种类型完全不同的处理。
再往上的话,我们中端的FPGA A10,它可以完成所谓的网关,或者是边缘数据集合的一个处理。
甚至可以包含像人机接口这一块。
就是传统的FPGA在数据中心、在网络上的应用。
OK,前面我谈到为什么FPGA适合于这样的应用?
那么,从硬件的特性来说,它提供了一个硬件可编程性,提供了一个从小密度到大密度的各种各样的选择,所以说它非常适合于这样一个通用场景。