查看原文
其他

Intel 扔掉了「X86和冯•诺伊曼架构」,打造百亿亿次数据流引擎

云头条 2021-03-21

作者:IT 外媒 The Next Platform 的联合主编 Timothy Prickett Morgan



由于摩尔定律将寿终正寝,英特尔的芯片设计专家们正另辟蹊径解决百亿亿次(exascale)挑战,他们已设想了一种新的架构,有望一举终结通用处理器这个概念和X86指令集这个现代计算的基础。


他们提出的这种新架构名为可配置空间加速器(CPA),但“加速器”这个词取名不当,因为他们提出的是一种构建处理器或协处理器的方法,这种处理器或协处理器实际上是数据流引擎,而不是串行处理器或矢量协处理器,可以直接处理程序在按传统的意义被编译到CPU之前创建的图形。CSA方法有点类似搭载数学协处理器的开关ASIC混合体,如果需要支持老式应用,可能还有一个可选的X86协处理器

数据流引擎并不是什么新概念。现代开关式芯片就采用了这种工作方式,因而让其可编程性达到一定的程度,而不是仅仅成为高速传输数据包的静态器件。英特尔整合到CSA上的许多想法已经在Graphcore公司的智能处理单元(IPU)上得到了体现。这里很重要的一点是,英特尔这个巨头摈弃X86架构(除了数据流的基本控制),让计算的一大部分远离严格定义的冯•诺依曼架构。所以,用可配置空间架构来形容这种新的计算方法可能更适合,也许应该将至强芯片视为其协处理器,而不是反过来。


不管怎样,CSA的基本思路听起来很简单,但是用编译器来实现可能很难,即便这确实看起来为处理各种工作负载的一大批计算引擎提供了几乎无比广阔的前景。送交阿尔贡国立实验室(英特尔是该实验室的主承包商)的第一代Aurora准百亿亿次系统在去年秋天被受挫后,我们采访了英特尔企业和HPC部门的总经理巴里•戴维斯(Barry Davis),畅谈英特尔可能采用什么技术为阿尔贡国立实验室制造系统,当时英特尔有意含糊其辞。不过CSA方面的信息倒与戴维斯说的相一致。


基本想法是,获取程序的数据流图(该图由所有编译器创建);在处理成特定处理器的指令集、数据存储和数据流之前,将该数据流直接放在一系列大规模并行计算元件及之间的互连件上。你可以将该数据流直接放在用硅蚀刻的静态硬件上,而不是像FPGA那样用Verilog或VHDL编写语言来构建,所以别搞错了“可配置”在这里的含义。


可配置部分是指,英特尔会有许多不同的CSA配置(可能数十种乃至数百种),针对具体应用的数据流,从以单精度和双精度浮点运算为主的传统模拟和建模,到结合使用不同精度的浮点和整数的机器学习,这取决于工作负载是训练网络还是由此而来的推理分类。这与英特尔对至强处理器采取的做法形成了对照,“Skylake”这一代至强处理器有三种版本,每种版本有10个、18个或28个核心,英特尔调整了核心数量和时钟频率,还调整了其他元件,出于市场对不同价位的需要。有了CSA,你想要激活该器件中尽可能多的底层元件,用正好够用的资源来处理任何特定的工作负载。这与其说是一种批量制造做法,还不如说是针对具体应用的批量定制――我们认为,随着摩尔定律气数已尽,势必会这样。


CSA由英特尔联合美国国防部一同开发,因向美国专利及商标局提交了专利申请而被公众熟知(申请公告早在7月5日就发布了)。实际上英特尔早在2016年12月30日提交了专利申请。按照国防部的这份合同,英特尔提交了其他专利申请,包括涉及可扩展分级式互连拓扑结构的一项专利和涉及对称寻址的另一项专利。CSA专利申请之所以备受关注,原因在于专利提到的设计师除了一批自英特尔多年前收购DEC Alpha芯片公司以来一直效力于英特尔的芯片设计师外,还有阿尔•加拉(Al Gara),他正是IBM的BlueGene系列并行超级计算机的架构师,以及英特尔Knights系列并行处理器的架构师。


CSA备受关注的还有一个原因是,如果传闻属实,英特尔会竭力将CSA推向市场,可能会先用在安装在阿尔贡国立实验室的“Aurora”A21超级计算机:顾名思义,这台超级计算机预计是2021年安装于美国的第一台百亿亿次系统。坊间传闻,CSA的后一代版本最终可能用在美国政府资助研发的其他超级计算机中;近日刚宣布的得克萨斯高级计算中心(TACC)的“Frontera”超级计算机很显然是下一个使用CSA的系统,因为它已经使用英特尔至强用于计算,更何况TACC在使用英特尔的Knights系列方面有着丰富经验。坦率地说,叫停Knights后,英特尔不光欠阿尔贡国立实验室一份情,还欠TACC一份情。不过那仅仅是我们单方面的猜测。


CSA遵循极简设计方法,只把具体工作负载必不可少的那些计算、互连、交换和存储元件放在一块芯片上。CSA的基础是网格状的计算和存储元件,如下图所示:



上图中有处理整数或浮点指令的处理元件、处理元件之间的网格互连件,以及这种功能:块(tile)上本地结合存储元件,并与结构(fabric)连起来,供处理元件共用。这个CSA加速器可按一对一的方式与多个核心实现在一块至强芯片上,两者都访问同一主内存,也可以与同一封装件中的多块芯片连同封装件上的互连件一同实现,或者作为单独的器件,有自己的插座,或者基于PCI-Express总线,使用卸载模式。我们认为,英特尔对卸载模式没有兴趣,它希望把CSA与至强封装在一起,可能采用多对一配置:至强负责装入CSA程序,为在一个或多个CSA上运行的应用程序从热存储或冷存储提取数据。


该图显示了应用程序代码、编译器创建的数据流图以及CSA芯片中用于执行从输入到输出的数据流的元件三者之间的关系:



这个例子显然很简单。数据流会变得很复杂,架构会变得要复杂一点,如下图所示:



在这里,芯片上有多层开关来互连执行整数和融合乘加(FMA)运算的处理元件,它们与外面的内存控制器连起来,数据在此存储起来,然后再进行处理。处理元件有自己的缓冲器和寄存器。这进一步构建成了更复杂的CSA器件,如下图所示:



在这个更复杂的器件中,处理元件集群由请求地址文件充当前端,有各自的表后备缓冲器(TLB),然后将数据输出到L2缓存接口、L2缓存组以及由整个器件共享的一片L3缓存。各个CSA块上的结构分散到多个块上,随着程序变大、数据流因而变大,数据流可以无缝地分散到这些块上的元件。问题是,有好多方法来实现CSA;必要时,CPU的传统元件可以添加到该器件上,若不需要,可以完全避免。


据专利撰写人声称,CSA方法的主要优点是,它提供了非常密集的计算和内存,能效又很高,因为程序运行时,只有某个数据流需要的元件才被激活。芯片上其他所有元件处于闲置的状态。这到头来会是一大块暗硅(dark silicon),浪费了钱财,所以关键是研制针对具体的应用和数据流来定制的CSA器件。


专利撰写人写道:“处理元件(PE)阵列可能是异构的,比如说,没有一个PE支持完整的CSA数据流架构,及/或一个或多个PE被编程(比如定制),以执行少数几种但高效的操作。某些实施方案(embodiment)因而获得的加速器有一组处理元件:相比路线图架构,它们具有计算密集的特点,不过相对现有的HPC方案,能效和性能高出大约一个数量级。由于器件和数据流的性质使然,程序可供利用的并行机制是显式的,直接映射到器件上。按照设想,CSA的软件堆栈拿来C、C++和Fortran程序后可以直接扔给CSA,如下图所示:



英特尔提议用于CSA的原型编译器(我们猜测,如果CSA的确要用于超级计算机Aurora A21,英特尔已实现了该编译器)有一个Clang前端,它抛开了针对加速的代码区域的LLVM中间表示(IR),然后该IR直接编译到了CSA本身。


在该器件上实现传统的顺序代码需要一些精巧的接口,以便访问器件上的内存,英特尔显然意识到了这点。英特尔表示,诀窍在于将内存访问视作与其他任何类型的数据流操作无异。


专利申请书写道:“CSA的实施方案提供了基本的内存操作,比如加载(拿来地址通道后,往响应通道填充对应于地址的值),比如存储。CSA的实施方案还可能提供更高级的操作,比如内存中的原子操作和一致性操作等。这些操作可能与冯•诺依曼架构的对应操作有相似的语义。CSA的实施方案还可以加速用C和Fortran等顺序语言描述的现有程序。支持这些语言模型的结果是,解决了程序内存访问顺序,比如通常由这些语言规定的存储操作的顺序处理。”


再说一下,重要的是代码方面的并行机制显式获取,并映射到CSA上,附有处理元件、存储、交换等部分的特定配置。所以,各种各样的并行机制(指令、数据、管道、矢量、内存、线程和任务)都可以按某种方式实现在CSA器件中。


专利申请书中没有太多的信息来表明CSA的性能可与标准至强CPU相媲美,不过有几个线索可寻。处理元件与CPU核心(核心上有许多元件来维持状态,并保留进出顺序执行单元、分支预测单元和推测执行单元的数据)相比非常小时,CSA方法可以将数量比使用矢量处理器多出16倍的FMA单元塞到一块芯片上。大概这是与至强中的AVX-2或AVX-512单元作比较。此外,英特尔表示CSA块的浮点性能可能比CPU核心高出一个数量级。正如HPC界所希望的,如果我们要在20兆瓦的功率范围内达到百亿亿次计算能力,这种提升将必不可少。


在专利申请书中,英特尔展示了做成片上系统的CSA,多个块裹以共享的缓存和内存控制器,而总线控制器与环状互连件相连接。在另一种可能的配置中,一个CPU连接至CSA协处理器,南桥I/O控制器和主内存如往常那样与CPU相连接。英特尔承认,这可能是Arm或MIPS处理器,而不只是其自己的X86处理器,这值得关注。还有一种配置显示CSA与双插座服务器中的芯片组相连接,这跟传统方案一样。但下一种配置配置两个CSA连在同一块板上,它们与面向外部I/O的南桥芯片组之间采用点对点互连件。专利申请书上的最后一张图还显示了如何在CSA上仿真二进制代码,针对X86芯片或另一种架构。这对于方块图而言显然很容易,但是在实际情况下处理计算效率却很难。仿真是安腾芯片没有做好的一方面,但它的编译器也不是很好,这是安腾失败的两个原因。所以这方面值得深思。


最后要说的一点是,我们认为CSA基本上过了第一道关。鉴于三年前英特尔斥资167亿美元收购了FPGA制造商Altera,现又准备推出至强-FPGA混合芯片,如果CSA更易于编程,能够针对许多工作负载获得更理想的结果,那么CSA对于英特尔的FPGA业务会带来怎样的影响?如果英特尔从FPGA转向CSA,势必要烧大量的钱。


IT 行业交流群欢迎加入,群主微信:aclood(备注任职单位+职位,否则不予通过)


相关阅读:

Intel x86 肯定会完蛋:以云为中心的未来依赖开源芯片!

用 Linux 和 Go 换掉 x86 固件 !

开源芯片模仿Linux的道路,叫板封闭的x86和ARM

在云时代,X86架构无戏可唱!


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存