ARM技术论坛
直播中

张涛

7年用户 1338经验值
私信 关注
[经验]

探讨一下Vector架构在AI领域的应用前景

在之前的AI加速器的分析中我们曾经提到,针对这种特殊的计算密集型程序,很多古老的架构被开发出来,获得了意想不到的良好效果。最典型的例子就是TPU的systolic阵列。在这些老古董中,有一种结构是通用处理器青睐有加的,比如ARM,INTEL以及最近炙手可热的RISCV都增加或者增强了对该结构的支持。这就是向量处理机(Vector Processor)。本文希望通过对Vector架构的介绍和分析,探讨一下其在AI领域的应用前景。这个分析会分为几个章节,首先介绍下vector的历史。

1.jpg

Vector这个概念是相对于Scalar提出的。最初的通用处理器都是标量处理器(Scalar Processor),即一条指令执行一个独立的运算,得到一个数据结果。在Flynn分类法中,这样的处理器也叫做单指令流单数据(SISD:Single Instruction Single Data)。随着对数据计算的需求提升,一个显而易见的方法就是对一组数据执行相同的操作,这样在不改变指令流的情况下,增加了数据的并行处理能力,即单指令流多数据(SIMD:Single Instruction Multiple Data)。对scalar执行单元和数据结构进行replicate所形成的SIMD处理器就是我们通常意义上的Vector Processor,比如RISCV的“V” extension,以及ARM的SVE(Scalable Vector Extension)。相反的,对scalar的数据结构进行split,形成了另外一种对小数据位宽进行并行加速的的方法,典型结构是Intel的MMX,ARM的DSP Extension以及NEON。

这两种方法在本质上是殊途同归的,都是为提升并行处理能力而提出。然而对于数据的packing和extension方式的不同,造成了两者在硬件设计的PPA,软硬件的扩展性,以及对编译的需求和支持上的差异,这也直接导致了后来这两种技术在商业化进程中截然不同的结果。后者在以ARM为核心的移动领域取得了巨大的成功,而Vector却在supercomputer中经历了短暂的辉煌,现在已经退出了主流领域。这其中的原因还需要另一个topic才能说清,这里不再细表。

虽然说现在Vector架构在商用处理器中日渐式微,在通用处理器刚刚兴起的上世纪70年代,Vector也曾经取得了辉煌发展的15年。这其中就不得不提到Vector的鼻祖,Cray。可以说是Cray一手将Vector架构推到了其历史的顶点。当年的通用处理器还是一个昂贵的产物,因此这阶段的CPU主要是用来构造supercomputer的,也就是我们通常称作的大型机,只有少数大型企业和研究单位才能负担起购买和维护的费用。1976年Cray-1的推出标志着Vector的兴起。Cray-1使用了以高性能Scalar unit为核心,配属Vector unit extension的结构,同时提出了Vector Register的概念,以load-store为基本访问模式,一举击败了当时其他架构的supercomputer。随着其他公司如NEC,Fujitsu和Hitachi的加入,Vector迎来了第一段高速发展的时代。从cray-1开始之后的15年,supercomputer几乎可以和Vector Processor直接划等号,可见其垄断地位。

1.jpg

从Cray-1的结构可以看出,其基本思路和现在的一些设计已经比较接近了。具有8个独立的Vector寄存器,支持多达64个element的操作。和Vector分离的scalar寄存器堆S和A可以独立的进行标量运算,也可以和Vector寄存器一起运算。Vector Mask寄存器可以阻挡不需计算的elements,Vector Length寄存器记录了当前进行的elements长度。这两种机制在现代Vector处理器中一直被保留下来。在其中也能看到一些仍然流行的设计技巧,比如memory banking,instruction buffer等机制,这表明当时Cray-1的很多思想还是比较先进的。

好景不长,20世纪80年代之后,随着CMOS工艺的成熟,半导体行业开始进入高速发展期,摩尔定律也是在这个时期开始被奉为经典。制造成本的下降使得通用处理器这种原先异常昂贵的设备也开始进入寻常百姓家,成为消费计算机的核心部件。小型和家用计算机提供了比超级计算机大的多的市场,对通用处理器的设计也提出了不同的需求。巨头Intel就是在这样一种情况下开启了它的传奇生涯。与此同时,Intel和它的X86系列的成功,却带来了另一个意想不到的结果。从超算Top 500的名单中我们看到,1993年有多达310个都是类Vector的架构,提供了将近占总算力的43%。而短短4年之后,这个数字就下降到了17%,而如今的形式更是不言而喻。

究竟是什么造成了Vector在supercomputer领域如此迅速的溃败?很多时候,商业上的成功并不能说明技术上的失败,虽然两者有很强的联系,但并不是必然因素,就像ARM和MIPS的结局。Vector的失败也并不是这个架构本身有重大缺陷,甚至可以说Vector的有些思想仍然是比较先进的,但在当时的技术条件和市场情况下,它的一些特性反而制约甚至是导致了其商业上的失利。Vector的特征就是要使用高带宽和深流水来获得更大的并行度和频率,而这种设计的代价就是复杂度的提升和对存储近乎苛刻的需求,这两者最终体现为成本的提升。由于仅仅针对超算这样一个非常狭窄的市场,研发和制造的NRE费用分摊在每个设备上是非常高的,软件的开发和迭代也是缓慢艰难。而Intel的X86处理器是从消费领域入手,其巨大的市场大大降低了上述费用,导致它反过来进军超算时在成本上获得了很大优势。同时其广泛的应用也使得软件上的进步大大快于前者。

这样就造成了一个很尴尬的局面,Vector想要进军消费领域的话,其性能上的优势并不能带来更大收益,反而主要受到成本的制约。而Intel却可以利用低成本多堆核的简单方法切入Vector的地盘。这里有一个问题,这样简单的堆砌能够超过Vector processor所能提供的peak performance么?最初当然是不能,但由于庞大的消费市场的反哺,能够使用X86进行编程和优化的程序员要远远多于前者。这些聪明的程序员针对X86的特点设计了更高效的Cache结构,Superscalar机制,以及被称为Symmetric Multiprocessor(SMP)的集群结构和通信方式。这些技术使得X86在超算领域也全面超越了以Cray为代表的Vector superprocessor。

1.jpg

“规模决定一切”。规模不但能够降低成本,从而具有更大的比较优势,同时也能够在规模的扩张中获得广阔的的生态,丰富的经验,最后反过来对技术予以提升。从消费者市场起家的Intel,就像农村包围城市那样,一开始就选择最广阔的领域站稳脚跟,然后再一步步的攻克这些孤立的城市据点,从超算到服务器,一步步的都被X86所占据。从这个角度而言,未来AI领域的霸主,也许并不是现在看到的一些公司,它们使用复杂的技术设计超大型芯片,成本高昂但却出货寥寥,这样虽然在当下占据了AI超算的高点,但不久之后,在面对那些在广阔的AI蓝海市场中胜出的竞争者们,无论是成本、软件,生态,甚至性能上可能都无法与之抗衡,从而重蹈Cray对抗Intel的覆辙。这个可能性或许值得深思。

1.jpg

作为曾经的超算霸主,Cray在2019年被HPE以区区13亿美元收入囊中,与此同时Intel的市值高达3000亿美元,这个结果有些唏嘘却并不意外。不过,虽然作为supercomputer的Vector处理器已经逐渐走下历史舞台,但作为指令集架构的Vector ISA仍然在一些领域发挥着它的作用,而且也可能在未来取得更大的成功。下一次我们来探讨Vector ISA的发展和未来。

原作者:MikesICroom

更多回帖

发帖
×
20
完善资料,
赚取积分