谈第二代异构计算,OpenPOWER有CAPI+FPGA不服来战
什么是异构计算?
异构计算,可能在很多人看来感觉高深莫测,我们可以先用一个比喻来简单的解释一下。比如在做简单的整数算数时,知道算法口诀的人,心算即可,但遇到比较复杂的算数问题时,就得需要一个计算器了,而在这个运算过程中,一些简单的计算可以提前由心算完成再输入计算器,比如计算"(5+2)÷26",可能我们直接就输入"7÷26"了。又或者是完全交给计算器进行计算,但这也需要人脑控制手指进行计算器的数值输入,此时你的大脑与计算器就构成了完成这道数学计算任务的"异构计算系统"。
日常生活中最常见的异构计算--人脑+计算器
就像你的大脑的结构与计算器完全不一样,异构计算,顾名思义就是在系统内,参与计算的执行单元在指令集架构(ISA, Instruction Set Architectures)层面是不同的。最为典型的例子,就是通用计算图形处理器(GPGPU,General-Purpose computing on Graphics Processing Units),与现场可编程门阵列 (FPGA,Field-Programmable Gate Array)和传统CPU平台组成的异构计算系统。从严格意义上讲,ISA相同,只是不同大小的处理核心的组合,并不算是异构计算,比如英特尔的x86处理器+MIC(集成众核加速器),以及ARM处理器的big.LITTLE大小核心的混合设计。
异构计算简史
为什么要用异构计算,想想开头的例子就清楚了,如果人脑就是主流的通用处理器的话,那么异构计算就是为这个处理器额外配备的"计算器"或工具,用来执行更高复杂度的计算或应用,而这种复杂度主要指的就是超大规模的并行处理,对于更擅长串行处理的CPU来说是一个极大的互补。
异构计算的概念本身其实并不新鲜,最早可以追溯到30年前(在某些定义中,则是以指令集的处理模式来区分异构与否,但基本上已并非是主流概念),可要谈到异构计算的真正崛起,则要从2001年用GPU实现通用矩阵计算开始,而标志性事件发生在2005年,GPU终于在执行LU分解(用于解线性方程组)的性能方面战胜了CPU,从那之后,基于GPU的大规模并行计算方案开始崭露头角。
CPU+GPGPU是目前最为知名的异构计算组合,也是第一代异构计算的典型代表
2007年,NVIDIA推出了专门用于简化GPU应用编程的统一计算设备架构(CUDA,Compute Unified Device Architecture),它标志着GPU的通用计算应用开发开始走向易用、成熟。时至今日,GPU+CPU的异构计算平台已经越来越多的出现在高性能计算系统中(HPC),大大弥补了CPU在浮点运算方面的能力。
当然,在GPGPU之前其实还有多种芯片在向通用计算领域迈进,其中之一就是FPGA,它是最可匹敌GPGPU的异构计算技术。
2012年英特尔发布的Atom E6x5C嵌入式处理器,就已经在单Socket封装上整合了Altera的FPGA,但这个FPGA的主要任务不是计算,而是针对不同应用场景的I/O定制化与指定的信号处理,很难用于通用场合
FPGA于1985年诞生,很快就开始尝试在通用计算领域的运用,可以说比GPGPU的出现还要早。GPGPU所擅长的浮点运算,FPGA同样也在积极参与,但成果远没有GPGPU显著(看看超级计算机全球TOP500的排名配置就知道了)。在整数型运算方面,虽然FPGA更有优势,可惜那时的计算量除非个别应用,普遍并不大,CPU自己就能搞定,所以FPGA加速更多用于细分应用市场,应用规模相对来说并不大。不过,随着物联网、大数据、人工智能、机器学习等新兴的大规模数据处理需求的不断涌现,现在它的机会要来了,而且底层互联 技术也比当前的异构系统更为先进,它就是由OpenPOWER CAPI所开辟的新一代异构计算平台,主打CAPI+FPGA的组合。
而在我看来,它们其实是开启了第二代异构计算的时代。
FPGA如何为应用加速?
从第一款FPGA芯片于1985年由Xilinx(赛灵思)正式推出至今,已经有30年了,它是在可编程阵列逻辑(PAL,Programmable Array Logic)、通用阵列逻辑(GAL,Generic Array Logic)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device) 等技术的基础上进一步发展的产物。与CPU不同的是,它的逻辑是硬件可编程的,而CPU则是通过软件编程来执行相应的计算,和专用集成电路(ASIC,Application Specific Integrated Circuit)相比,它又相当于一种半成品的逻辑芯片,ASIC则是针对某类应用进行专门的固化设计,以达到最优的性能。
从字面意思上就可以想像得到FPGA是一个可随意定制内部逻辑的阵列,并且可以在用户现场进行即时编程,以修改内部的硬件逻辑,这一点是CPU和ASIC都无法做到的。要想明白FPGA的原理,的确需要一定的数字电路基础,在此只做简要的介绍,以解释为什么FPGA可以在某些工作上比CPU更为出色。
- 台积电满脸“苹果光”(05-06)
- 智能手机陷入“千机一面”怪圈(06-08)
- CPU/APU:一场无声的反垄断技术较量(06-21)
- 移动设备纷纷采用多核CPU遭质疑:性能过剩(01-12)
- 系统级芯片SoC真的能取代传统CPU?(04-26)
- 国产CPU:放手一搏正当时(05-11)