NEC在高性能处理器设计上拥有丰富的履历,其辉煌的顶点是在2002年旁边推出的Earth Simulator Computer也便是地球仿照器超级打算机,这款产品霸占了环球最快超级打算机的宝座长达三年之久,并且大部分核心处理器都由NEC设计完成,其特点便是前辈的矢量打算设计。不过,由于当时的普通用户对矢量打算需求不敷,因此这类产品间隔主流市场较远,NEC的矢量处理器每每只能用于大型设备,完备称不上大众化。
▲NEC在高性能处理器研究上具有丰富的履历
事物在发生着变革。随着AI打算的兴起,矢量加速器又开始逐渐成为很多用户的选择。鉴于此,NEC又开始重新考虑将矢量打算干系产品推向主流市场。2017年,NEC宣告推出全新的矢量超级打算机SX-Aurora TSUBAME,个中的打算核心Vector Engine超级矢量卡(下文简称为“VE卡”)一经发布就引起了众人关注。

这款采取主流PCIe接口设计、专攻矢量打算的产品利用范围极其广泛,NEC称其能够支持“标准环境”,也便是支持Linux和英特尔x86架构。考虑到NEC在之前矢量处理器设计上的守旧,这不得不说是一次重大改变。
有何上风?浅析矢量处理器的上风对长期关注本刊的读者来说,矢量和标量的观点该当不陌生。所谓矢量,又可称为向量,便是指具有方向和大小、且知足平行四边形法则的几何工具。标量则只有大小,没有方向。一样平常来说,矢量多用在工程学、物理学中,比如位移、加速度、力矩、电流密度等都须要用矢量来表示。值得把稳的是,矢量在代数中可以用矩阵的办法表示。比如矢量a可以表示为a=[a, b, c],个中a,b,c分别是矢量在三维坐标体系中的坐标值。
由于矢量的数组特性使其可以一次性进行多组打算,因此从一开始矢量打算和干系矢量处理器就颇受重视。从20世纪70年代一贯到20世纪90年代,矢量打算和干系矢量处理器都是超级打算机的核心。随之兴起的便是一些处理多重矢量的技能,包括MIMD多指令多数据、SIMD单指令多数据、VLIM超长指令集架构等。这些技能都是希望通过减少指令的数量,通过大量数据进行并行打算,一次性处理更多的内容。
在这里,我们通过一个例子来显示CPU传统的“循环”打算和矢量处理器在打算方面的差异。
从例子可以看出,CPU每次只能加一个数据,10个周期才能做完这件事情。但是对矢量处理器而言,利用规模上风,一次可以实行10次运算,一个周期就能做完10个打算。这是范例的单指令多数据流处理方法。比较传统的CPU,在面对大量并行数据时,矢量处理器效率更高。
由于矢量处理器在大规模数据打算上的上风,因此任何当代打算架构都无法忽略其存在。实际上,当代CPU每每都已经包含了矢量打算模块。比如英特尔和AMD很早就推出了MMX、SSE、3D Now!、AVX等指令集,通过分外的矢量加速模块和指令,能够大幅度加速干系矢量打算。
不过,CPU依旧有其在逻辑打算上的上风,矢量打算并不是它的重点,一样平常只有在IBM Power 9这样专为超级打算机和大型机设计的处理器中才专门设计了超大规模的矢量打算核心。纵然如此,矢量打算也会给传统处理器带来极大的性能提升。比如英特尔新近加入的AVX-512指令集就能够大幅度加强AI打算等这类天然的大数据量、并行度极高的矢量打算。
除了CPU之外,GPU则可被称为天然的矢量加速器。传统的图形打算的顶点转换本身便是为矢量打算而生,再加上像素打算方面RGBA的固定模式,因此GPU的每一个打算核心都可以被看做一个矢量加速单元。诸如英伟达最新的Volta、Turning等架构,更是可以算作是专为图形打算设计的矢量加速器。
除了CPU和GPU外,市场上还有专门的矢量加速处理器、矢量打算机等。这类产品在核心架构上设计更为简洁,并不包含太多的附加功能,也没有为特定用场优化,其目的便是通过纯粹的矢量打算核心设计,为AI打算、分外并行打算、超级打算机等供应加速打算的能力。
本期的主角VE超级矢量卡以及其核心SX-Aurora处理器正是这种“纯粹”的产品,专为加速而生,别无旁骛。术业有专攻,专业的加速处理器自然有一定的上风,在架构设计上也可能存在和传统通用加速器的差异,值得研究。
▲SX-Aurora TSUBAME超级打算机
从SX-Aurora TSUBAME超级打算机到VE超级矢量卡要理解VE超级矢量卡,我们先来一起看看SX-Aurora TSUBAME超级打算机。这款超算是NEC对所谓“标准环境”的首次考试测验,其特点便是采取了英特尔的处理器,支持PCIe总线。根据不同的配置,在风冷环境下,SX-Aurora TSUBAME可以实现1颗或者2颗处理器,但是搭载1个、2个、4个乃至8个VE卡的不同配置方案。在水冷环境下,SX-Aurora TSUBAME最多能够实现8个机架搭配64个VE卡的方案。
▲不同规格的SX-Aurora TSUBAME超级打算机和硬件搭配
为了更好地区分不同的配置,NEC也根据不同的配置情形对产品的命名进行了调度。比如1颗处理器搭配1个VE卡的型号是A100-1,这是最基本的方案。进阶配置中,1颗处理器搭配2个VE卡型号被称为A300-2,2颗处理器搭配4个VE卡则是A300-4。风冷条件下最强的型号是A300-8,采取2颗处理器搭配8个VE卡的设计。最高真个则是水冷型号,NEC采取InfiniBand连接8个机架,组成了16颗处理器和64个VE卡的产品,型号则是A500。
▲不同类型的VE超级矢量卡
SX-Aurora TSUBAME在CPU方面采取的是英特尔Skylake-SP架构的Xeon Gold或者Xeon Sliver处理器,主角部分则是本文的核心VE超级矢量卡。
对这款产品,熟习PC DIY的用户可能会误认为VE卡是哪一家新厂商推出的新显卡。诚然,从外不雅观来看,采取标准PCIe接口、侧吹散热的VE超级矢量卡在外不雅观上和一样平常的显卡别无二致。令人想不到的是,其火红的外不雅观下隐蔽的是完备不一样的核心。
深入VE超级矢量卡的内部天下VE超级矢量卡在打算架构上和一样平常的加速卡存在很大差异。根据NEC的解释,VE卡的事情模式遵照OS卸载模式。简而言之,除了偶尔的系统调用或者I/O功能外,VE卡在事情中须要将所有的实行程序和数据转移到本地存储并在处理器上运行,只有打算完成后才输出结果。在软件支持方面,VE卡可以利用标准的措辞模型,比如C、C++或者Fortran,无需分外的编程模型或者平台支持。
这种设计的上风在于大大降落了处理器和加速卡之间的传输瓶颈,尤其是PCIe带宽压力,也避免了一样平常加速卡涌现的由于CPU和加速器数据传输延迟导致的性能低落等问题。但是,这种设计方法也存在一定的毛病,那便是打算灵巧度可能会受到限定,因此须要完善软件优化以及得当的算法搭配,这样才能更有效地利用VE卡的打算能力。
▲VE超级矢量卡的独特运行模式
其余,在物理规格上,这种设计也对VE卡确当地存储能力提出了哀求,VE卡依赖于更大确当地存储(目前为48GB),毕竟本地存储空间越大,能够打算的数据量也就越大。
为理解决这些问题,NEC提出了一些新的优化思路,被称为VH Call和VEO。这两个设计的上风在于,在VH调用模型下,运用程序被存放在矢量加速卡中,并在主处理器上实行标量干系打算。而VEO则是Vector Engine Offload的简称,在这种模式下,仅有矢量化部分被载入,标量化部分则交由系统处理器完成。
在程序实行方面,VE卡利用名为ve_exec的分外程序调用用户的适量程序,然后,ve_exec程序会自动要求在矢量打算卡上运行OS创建新的进程。接下来,ve_exec迭代可实行的ELF文件,读取每个段落并将其通报给矢量打算卡。
▲VE卡的事情模式遵照OS卸载模式
同时,系统会在x86也便是向量主机上天生伪进程,这个伪进程具有与矢量打算卡虚拟地址空间平行的虚拟地址空间。举例来说,在某个存储器操作时,首先分配的是虚拟地址页面,然后向矢量打算卡的OS要求在VE卡上的物理地址空间上分配页面,并由VE卡进行干系的虚拟地址转换和数据保护。
此外,NEC还为SX-Aurora设计了一个名为存储主机存储器(SHM)的分外指令。在非常情形下,SHM指令用于将系统调用ID以及其参数通报给矢量OS中的伪进程,然后实行监视器调用指令,该指令将停滞VE内核并在VH上调用中断程序。接下来操作系统就可以唤醒伪进程进行非常处理了,这相称于是加入了一个缺点打消机制。
SX-Aurora矢量引擎处理器如果拆开VE超级矢量卡的话,可以看到PCB板上除了电源和一部分功能芯片外,实际上只存在一颗硕大的芯片,那便是名为SX-Aurora的矢量引擎处理器。这颗处理器拥有8颗矢量核心和相对应的6颗HBM2存储颗粒。这颗核心采取了台积电16nm工艺制造。
▲矢量处理单元架构简图
比较之下,NEC设计的前代产品也便是SX-Ace采取的是DDR3内存,通道数量高达16条—如此多的DDR3通道数量除了须要霸占相称大的电路板空间外,芯片的存储掌握器部分也是一笔不小的开支。终极这款产品所须要的电路面积过于弘大,只能利用传统的做事器主板搭载。
而新的SX-Aurora则采取了全新的HBM2存储颗粒,通过前辈的封装设计大幅度降落了芯片和数据传输对PCB面积的需求,不但提高了存储带宽,还使得终极成品利用PCIe规格的尺寸就能够搭载,大大提高了产品的灵巧性。
矢量核心设计前文说过,一颗SX-Aurora矢量引擎处理器内包含了8颗矢量核心,比较前代产品的4颗而言数量翻倍。只管核心数量看起来很低,但是每颗核心一个循环就可以实行192个双精度浮点运算。以芯片的频率为1.6GHz来看的话,每颗内核的打算能力高达307.2Giga Flops,总计8颗核心高达2.45 TFlos,把稳,这是双精度打算能力。
连续拆解的话,可以看到每颗核心由三个功能模块组成:标量处理单元SPU、矢量处理单元VPU和NoC接口。一样平常来说,纵然是一款矢量处理器,标量单元依旧非常主要。这是由于运用程序须要完备在矢量处理器上运行,因此SPU相对应的必须有良好的序列化代码性能,这里须要重点提及SPU单元的设计。
NEC在SPU的设计上采取了一个四发射的乱序实行设计方案,它能够在每个周期内拾取、解码和重命名四条指令。NEC还表示,SPU具有硬件预取和繁芜的分支预测器,整体深度为8阶段,具有运行一个完全操作系统所须要的所有功能。
▲矢量处理单元内部配置方案
后端设计上,SPU包含一套统一的调度程序,每周期可以发送五条指令,一旦办理了指令的干系性问题,就会以乱序实行的办法发送指令给五个独立的实行单元。这五个独立实行单元包括用于通用标量算数的整数和浮点ALU、一个专用分支ALU、一个LSU和一个矢量EU。除了范例的标量操作外,SPU还须要打算矢量访问的基本内存地址。
在实际运用中,SPU可以担保VPU单元满载并且不间断地事情,还可以将每个周期的一条指令通报到VPU的缓冲区以等待实行,其余还能够向地址天生单元发送矢量指令,以便可以提前打算矢量地址。这些设计都能够大大提高效率,担保核心打算的效能。
矢量处理单元进一步向细节深入的话,在矢量核心中最主要的部分便是矢量处理单元也便是VPU了。空想情形下,绝大部分密集型打算该当在VPU中完成。VPU的掌握逻辑类似于流水线,拥有一个相称大略的管道,并且也采取了乱序实行的设计。
▲SX-Aurora矢量引擎处理器核心架构图
▲矢量核心内部构造示意
▲SX-Aurora矢量引擎处理器内部布局示意图,可见6个HMB2内存和8个矢量核心。
实际操作中,在SPU发出的指令会被放置到指令缓冲区,并在那里将其重命名、重排序和调度,等待VPU的处理。系统将64个矢量寄存看重命名为256个物理寄存器,支持增强预加载功能,并避免WAR/WAW等依赖性的存在。
调度方面,VPU的调度相比拟较大略且拥有一个专门的繁芜操作管道。一样平常来说,调度程序每每会独占一个专用端口,用于繁芜操作实行单元和矢量并行管道(VPP),繁芜操作实行单元一样平常用于处理高延迟操作,比如矢量求和、除法、掩码添补计数等操作会被发送至该单元,这可以防止由于这些操作涉及到了高延迟而导致全体流水线的停顿。
在SX-Aurora中,一个VPU中有32个VPP,比较上代产品翻倍。其余VPP部分还配备了一个8端口的矢量寄存器、16个屏蔽寄存器和6个实行管道。个中,6个实行管道包括3个浮点管道、2个整数ALU以及一条用于数据输出,设计繁芜的存储管道,在这里一个ALU管道和一个存储管道共享相同的读取端口。
类似的还有FMA和另一个ALU共享一个读取端口,总而言之,每个周期实行的有效管道数量实际上是4个。和前代产品比较,现在的产品每个VPP拥有一个额外的FMA单位,可以在一定程度上加强处理器的打算能力。
性能方面,VPU部分能够实现的峰值理论性能是每周期每VPP 3个FMA操作,每个VPU包括32个VPP,因此总计是96个FMA每周期、192个DP Flops/周期。考虑到频率为1.6GHz,因此每个VPU的峰值性能是307.2Giga Flops。对单精度打算而言,每个FMA都可以对打包数据进行操作,因此可以将2个32位数据打包为一个双精度数据进行处理,这样单精度的浮点峰值性能便是双精度的一倍,为614.4Giga Flops。
内存子系统设计从上文的数据也可以看出,全体VPU部分的吞吐能力非常强大,这样强大的打算能力对内存子系统的设计提出了极高的哀求,缘故原由也很大略,如果喂不饱VPU,那么打算效率将严重降落。
在2013年推出的SX-Ace包含了4个VPU核心,每个VPU有16个VPP,每个VPP有2个FMA。在1GHz频率下,每个核心将带来64 GigaFlops或者总计256 GigaFlops的打算能力。为了知足这颗核心的吞吐能力,四个内核连接至一个CrossBar,总带宽为256GB/s,共计16条内存通道,搭配的内存为DDR3-2133,内存带宽也恰好为256GB/s,以是每GigaFlops对应了1GB/s的带宽,这是之前的数据和带宽匹配情形。
▲SX-Aurora的存储子系统设计
在新的处理器上,NEC的每核心Flops从之前的64增加到了307.2,在缓存设计上也不再采取1MB的可分配数据缓冲区(ADB),转而采取16MB共享末级缓存。核心和高速缓存通过网格连接,采取16层2D网状网络,其目的是通过最小化物理传输间隔来实现最大化的带宽。
SX-Aurora每颗核心的交叉总线每周期可以发出16个要求指令,在1.6GHz频率下,每周期的带宽便是410GB/s。内存子系统方面,末了一级缓存的带宽为3TB/s。再向下一层的LLC方面,高速缓存被分为8个2MB的块,每个块由16个存储器构成,每一组LLC和IMC的带宽为200GB/s,共计8组LLC和2组IMC之间的总带宽为1600GB/s。IMC连接了6组HBM2内存,总计拥有1.22TB/s的带宽。通过打算可知,全体处理器的打算能力是2.45 TFlos,对外连接带宽是1.22TB/s。
▲SX-Aurora内部交叉总线设计
工艺和封装从架构设计来看,封装是SX-Aurora实现高性能的关键,尤其是HBM2内存的利用。SX-Aurora拥有6颗HBM2内存,采取的是4层或者8层堆栈方案。这颗芯片在封装上采取了台积电的CoWoS技能,也便是第二代基板上芯片封装技能。这也使得SX-Aurora成为环球第一款利用6通道HBM2内存的芯片。
为了更好地散除热量,SX-Aurora没有利用处理器常见的金属顶盖,硅片袒露在外,周围利用了等高的金属层来改进封装的机器可靠性。NEC指出在散热方面,SX-Aurora须要和散热器有效打仗,否则会由于高温导致性能降落。
▲SX-Aurora芯片的外不雅观和分区示意图
SX-Aurora的芯片面积为493.68平方毫米,不算特殊巨大,大概尺寸靠近英伟达GP104或者TU106的规格。NEC也展示了SX-Aurora的PCB设计,也便是前文提到的VE超级矢量卡,和常见的显卡非常类似。
▲VE超级矢量卡的PCB,可见供电部分和PCIe插槽。
PCIe插槽上方便是SX-Aurora矢量引擎处理器,肉眼可见6颗HBM2显存。右侧是多相数字供电电路,高下桥合并封装。接口采取了单8Pin方案,最大供电能力150W。NEC没有公布VE超级矢量卡的功耗情形,从供电接口设计来看,其最大功耗该当不超过225W。
性能不错 价格低廉末了再来比拟一下业内类似定位的芯片性能。这里的数据是VE超级矢量卡、英特尔Xeon Platinum 8180 28核心处理器和英伟达Tesla V100。从下面的性能比拟表我们可以看出VE超级矢量卡和传统的处理器、GPU之间的差异。由于架构设计的侧重点完备不同,因此在单核心的统计方法、内存类型和容量、内存带宽方面显示出了巨大差异。
▲NEC给出的VE超级矢量卡与英特尔Xeon、英伟达Tesla V100性能比拟图
尤其是在和Tesla V100的比拟中,VE超级矢量卡的内存容量三倍于对方,内存带宽也超出不少,不过在核心规模上还有所欠缺,因此理论性能上存在差异。考虑到VE超级矢量卡的OS卸载模式和Tesla V100的传统模式存在很大差异,因此在优化得当的情形下效率表现还是可圈可点。
除了理论性能外,NEC还给出了一些性能相对值比拟。从这些测试可以看出,VE超级矢量卡的上风在于相对英特尔Xeon处理器有更高的性能、更好的性能功耗比。在绝对性能上暂时不能和英伟达Tesla V100比较,但是NEC也特殊指出,VE超级矢量卡的价格相对低廉,整体性价比将更为出色。
总的来说,NEC通过这次推出的SX-Aurora处理器和干系产品,显示了其在高性能处理器设计领域的雄厚积累。通过面向AI等目前热门的运用和环境,再加上良好的扩展性和独特的技能模式,SX-Aurora处理器和干系产品有可能在未来的市场竞争等分得一杯羹。其余,NEC的这款产品也有可能进入超算产品中。
从历史角度来看,日本曾有一段辉煌超算时期,比如NEC的地球仿照器就以强劲的实力霸榜三年之久。但近几年来随着中美两国逐渐发力,日本在超算行业中的声音逐渐走低。现在,NEC又带来了如此强劲的打算设备,很有可能会进一步研发改进、加以扩展后推出新一代超算的可能,值得人们关注。