FPGA-XCVU33P为什么快?
FPGA-XCVU33P为什么快?
同行衬托,CPU、GPU 都属于冯·诺依曼结构,指令译码执行、共享内存。FPGA-XCVU33P 之所以比 CPU 甚至 GPU 能效高,本质上是无指令、无需共享内存的体系结构带来的福利。
冯氏结构中,由于执行单元(如 CPU 核)可能执行任意指令,就需要有指令存储器、译码器、各种指令的运算器、分支跳转处理逻辑。由于指令流的控制逻辑复杂,不可能有太多条独立的指令流,因此 GPU 使用 SIMD(单指令流多数据流)来让多个执行单元以同样的步调处理不同的数据,CPU 也支持 SIMD 指令。而 FPGA-XCVU33P 每个逻辑单元的功能在重编程(烧写)时就已经确定,不需要指令。
冯氏结构中使用内存有两种作用,一是保存状态,二是在执行单元间通信。由于内存是共享的,就需要做访问仲裁;为了利用访问局部性,每个执行单元有一个私有的缓存,这就要维持执行部件间缓存的一致性。对于保存状态的需求,FPGA-XCVU33P 中的寄存器和片上内存(BRAM)是属于各自的控制逻辑的,无需不必要的仲裁和缓存。对于通信的需求,FPGA-XCVU33P 每个逻辑单元与周围逻辑单元的连接在重编程(烧写)时就已经确定,并不需要通过共享内存来通信。
FPGA-XCVU33P 实际的表现如何呢?
我们从这两个方向去看:计算密集型任务和通信密集型任务,计算密集型任务的例子包括矩阵运算、图像处理、机器学习、压缩、非对称加密、Bing 搜索的排序等。这类任务一般是 CPU 把任务卸载(offload)给 FPGA-XCVU33P 去执行。对这类任务,目前我们正在用的 Altera(似乎应该叫 Intel 了,我还是习惯叫 Altera……)Stratix V FPGA-XCVU33P 的整数乘法运算性能与 20 核的 CPU 基本相当,浮点乘法运算性能与 8 核的 CPU 基本相当,而比 GPU 低一个数量级。我们即将用上的下一代 FPGA-XCVU33P,Stratix 10,将配备更多的乘法器和硬件浮点运算部件,从而理论上可达到与现在的顶级 GPU 计算卡旗鼓相当的计算能力。
在数据中心,FPGA-XCVU33P 相比 GPU 的核心优势在于延迟。像 Bing 搜索排序这样的任务,要尽可能快地返回搜索结果,就需要尽可能降低每一步的延迟。如果使用 GPU 来加速,要想充分利用 GPU 的计算能力,batch size 就不能太小,延迟将高达毫秒量级。使用 FPGA-XCVU33P 来加速的话,只需要微秒级的 PCIe 延迟(我们现在的 FPGA-XCVU33P 是作为一块 PCIe 加速卡)。未来 Intel 推出通过 QPI 连接的 Xeon + FPGA-XCVU33P 之后,CPU 和 FPGA-XCVU33P 之间的延迟更可以降到 100 纳秒以下,跟访问主存没什么区别了。
FPGA-XCVU33P 为什么比 GPU 的延迟低这么多?这本质上是体系结构的区别。FPGA-XCVU33P 同时拥有流水线并行和数据并行,而 GPU 几乎只有数据并行(流水线深度受限)。例如处理一个数据包有 10 个步骤,FPGA-XCVU33P 可以搭建一个 10 级流水线,流水线的不同级在处理不同的数据包,每个数据包流经 10 级之后处理完成。每处理完成一个数据包,就能马上输出。而 GPU 的数据并行方法是做 10 个计算单元,每个计算单元也在处理不同的数据包,然而所有的计算单元必须按照统一的步调,做相同的事情(SIMD,Single Instruction Multiple Data)。这就要求 10 个数据包必须一起输入、一起输出,输入输出的延迟增加了。当任务是逐个而非成批到达的时候,流水线并行比数据并行可实现更低的延迟。因此对流式计算的任务,FPGA-XCVU33P 比 GPU 天生有延迟方面的优势。
为什么说FPGA-XCVU33P是数据中心最重要的硬件之一?
目前,在云计算日益普及、数据创建率高以及机器学习等新的计算密集型应用程序之间,我们当前的数据中心基础设施正被推向极限。为了帮助确保未来的数据中心能够跟上这些趋势并不断提高性能,工程师们正在重新构想数据中心计算硬件。由此可见,数据中心最重要的硬件之一就是FPGA-XCVU33P。
最近英特尔/VMware Crossroads 3D-FPGA-XCVU33P学术研究中心,希望明确地促进数据中心的FPGA-XCVU33P技术的改进。
目前,数据中心有两个主要趋势正在推动该领域的未来发展:数据流量的增加和计算密集型应用程序的增加。这里的挑战在于,数据中心不仅必须能够处理增加的数据和更严格的计算,而且比以往任何时候都更需要以更低的功率和更高的性能来做到这一点。
为了实现这一目标,工程师们已经不再使用更通用的计算硬件,例如中央处理单元(CPU)和图形处理单元(GPU),而是使用硬件加速器。
工程师可以使用特定于应用程序的计算块实现比以前更高的性能和低功耗计算。对许多人来说,由加速器、GPU和CPU组成的异构计算架构是未来数据中心被广泛接受的前进道路。