登顶超算排行榜的“秘密武器”走近富士通A64FX处理器

2020-08-11 14:25张平
微型计算机 2020年14期
关键词:富士通秘密武器内存

张平

2020年6月,TOP500超算排名更新了最新的一期榜单。在这期榜单中,排名第一的不再是IBM的Summit超算,而是来自日本神户市的SupercomputerFugaku,其最大计算能力高达415530TFLOPS,峰值计算能力高达513845.7TFLOPS,远远超过第二名Summit最大148600TFLOPS和峰值200794.9TFLOPS的能力。值得注意的是,这款超算采用的处理器核心数量高达7299072个,也远远多过Summit和第三名Sierra,后两者的处理器核心数量仅为2414592和1572480。换句话来说,Fugaku采用的处理器核心数量几乎是Summit和Sierra之和的两倍,和排名第四的中国超算神威太湖之光的处理器核心数量10649600相差不远。出现这样巨大差距的原因是Fugaku超算和神威太湖之光并没有采用加速计算卡,全部数据计算能力都依靠CPU来完成。相比之下,Summit和Sierra都用了英伟达的GV100加速卡辅助加速。这样一来,Fugaku的处理器就颇令人关注了,而这款带领Fugaku超算登顶的处理器,就是日本富士通公司推出的A64FX处理器。

富士通:低调的日本处理器巨头

说起富士通,大家可能对这家日本企业没那么熟悉。富士通实际上是全球领先的信息通信技术企业,成立于1935年。目前富士通是日本排名第一的IT厂商,全球第四大IT服务公司以及第五大服务器/PC生产商,也是财富500强。在半导体产业方面,富士通拥有相对独立和完善的产品研发体系,在商用设备尤其是大型机、服务器等领域有着深厚积累

富士通比较广为人知的两条产品线分别是SPARC64处理器产线和GS21服务器产品线。其中前者采用的是SUN之前推出的SPARC架构,目前富士通和SUN联合研发推出了包括SPARC64V、SPARC64V+、SPARC64VI、SPARC64VII、SPARC64X、SPARC64X+以及SPARC64XII等处理器,搭配富士通提供的相关软件解决方案。其中最新的M12-2S服务器可以搭载32颗SPARC64XII处理器,提供32TB的内存,主要应用在企业级关键计算或者云计算场合,可使用Solaris11或者UNIX操作系统,能够为企业级客户提供大量的管理功能以及高可靠性、兼容性的解决方案。另外,GS21系列产品也是富士通的主打设备,属于面向企业的“事务处理器”范畴,能够带来企业级别的事务处理、安全性和稳定性应用等。

从市场来看,由于英特尔、ARM等厂商在兼容性和市场拓展方面越来越强大,类似富士通这种采用比较小众架构的产品在终端市场的“蛋糕”有做小的趋势,尤其是SPARC架构,富士通自己也承认这款架构在未来发展可能存在一些问题。不过,考虑到之前的客户替换和升级需要,短期内富士通坚守的商业和企业级市场还是存在一些稳定客户的。但古话说“人无远虑,必有近忧”,富士通不得不将眼光放长远一些,选择市场上比较通用的架构开发处理器产品,希望能够在更广阔的市场中占据一席之地。

在思虑再三之后(其实很大程度上也是没得选),富士通将目光轉向了ARM架构,推出了ARM架构的全新系列产品A64FX。根据富士通的规划,未来富士通的MF、UNIX以及HPC架构的产品都将全面转向ARM架构的A64FX。2018年富士通在Hotchip上发布了相关内容,实际产品在2020年才正式推出。

富士通A64FX处理器的设计理念是面向HPC和AI市场,前者是富士通一贯的优势领域,之前日本最快的超算“京”就采用了富士通SPARC架构的处理器产品。不仅如此,这类面向超算的处理器最终都可以进一步优化后用在企业级服务器产品中,也算是“一鱼多吃”的方法。在AI市场方面,富士通加强了新处理器在AI计算方面的能力。A64FX是一个高吞吐量的处理器,具有四大特点:首先是高性能,支持各类HPC和AI计算,支持FP64/FP32/FP16以及INT64/INT32/INT16/INT8等主流的数据格式。其次是高吞吐量,富士通为新处理器加入了512bitSIMD单元并且每个核心拥有2个管线,可以实现极高的数据吞吐量,外部缓存方面使用了HBM2,可伸缩性能方面最大可布置48核心,采用Tofu互联总线。第三则是高能效比,富士通给出了一些参数,诸如(D|S|H)GEMM>90%、StreamTriad>80%,其每瓦特性能要高于目前的主流通用处理器。第四则是标准化,富士通A64FX采用的是ARMv8.2A架构搭配SVE和3级SBSA的设计,其在兼容性方面做得比较好。

A64FX:ARM架构的高性能产品

接下来本文将正式开始介绍A64FX处理器。这部分将根据富士通在之前会议上公布的处理器相关设计内容,从宏观、架构设计、缓存、内存、电源设计等方面进行解读。

宏观:7nm、87亿晶体管

先来看一些宏观方面内容,A64FX采用的是台积电的7nm工艺,整个处理器包含87.86亿晶体管,引脚部分拥有594个信号脚。整个处理器在指令集方面使用了ARMv8.2A架构,支持SVE512-bitSIMD,单处理器最多可容纳48核心搭配4个协处理器,支持最多32GBHBM2缓存,采用的总线被称为Tofu总线,采用了6DMesh设计,支持28Gbps、2个通道、10个端口的设计,另外还有PCIe控制器,支持最多16条通道设计。

性能方面,A64FX单处理器的计算性能不低于2.7TFLOPS,内存带宽可达1024GB/s。富士通还给出了A64FX与上一代处理器,也就是采用SPRARC架构的SPARC64XIFX处理器的性能对比,上代处理器的最大计算能力仅为1.1TFLOPS,数据带宽也只有240GB/s。相比之下,A64FX的确带来了性能和规模上的巨大飞跃。

另外,富士通还特别介绍了A64FX在性能方面的内容,尤其是在SIMD这种单指令多数据流计算上的支持,A64FX支持512bit的SIMD计算,相比之下,业内目前主流的处理器包括英特尔的AVX512、AMD的Zen架构等,都通过增加或者优化对512bit宽度的SIMD进行支持,富士通的做法大幅度提高了处理器在计算这类数据时的性能。目前A64FX带来了包括Four-operandFMA(也就是FMA4)、Gather/Scatter、PredicatedOperations、Math.Acceleration等功能的支持,改善了前代产品对这些AI加速相关计算不支持的情况,提高了AI计算的效率。

A64FX的架构设计改进

富士通给出了A64FX的架构设计简图。根据其介绍,A64FX虽然是ARM架构的产品,但是也继承并增强了之前SPARC64上的一些特征,包括超标量、乱序执行以及分支预测部分等。同时对SIMD和predicateoperations操作进行了加强。其中主要的加强就来自于2个512bit的SIMDFMA管道,predicateoperations处理单元以及4个ALU,另外数据存储方面还增加了针对2个管道的512bitSIMD数据的存储和读取设计。富士通给出了一个架构简图用于说明哪些部分做出了改进。其中包括L1缓存、RSA、RSE部分,A64FX相对上代处理器的改进比较少,二包括指令排序部分、Reg-Read部分以及执行部分的PRX、FLA、FLB、缓存部分等改进较多,另外数据Tofu数据总线、L2缓存以及HBM2存储等也都做出了比较明显的改善。

富士通将重点放在了对FouroperandFMA的改进上。Four-operandFMA也就是常见的FMA4操作实际上是AMD发明的,在之前英特尔使用的普遍是FMA3。所谓FMA指令实际上是AVX指令的一个分支,用于加强处理器在SIMD乘加方面的能力。FMA3的特点在于能够实现3个操作数的一次性处理,AMD随后发扬光大的FMA4则增加到一次性可以处理4个操作数。从实际应用的角度来看,相对来说FMA4整体设计更为优越、计算灵活性要更高一些。不过富士通也提出一些自己的优化意见,比如FMA中将FMA3换转为FMA4执行的“MOVPRFX”指令,可能会带来性能的负面影响,但是富士通通过将“MOVPRFX”指令和接下来即将执行的指令打包在一起,在主线程上隐蔽了这个过程,从而带来了性能提升。

富士通还展示了在引入更宽的SIMD执行通道后性能的变化情况。在执行双精度的64bit数据时,A64FX的性能大约在2.7的水平,远高于上代产品SPARC64XIFX的1.1,也远高于早期SPRAC64VIIIFX的0.128,毕竟后两者一个采用的是256bit的SIMD单元,另一个仅有128bit。在单精度的32bit数据处理上也呈现了类似的趋势,三者的性能对比分别是5.4、2.2和0.128,差距颇大。当然在面对INT16、INT8这种前代处理器不能支持的计算时,A64FX自然就体现出巨大的优势了。

内存和缓存设计

A64FX的L1缓存设计主要是针对512bit的SIMD进行了优化,能够持续吞吐512bit-SIMD数据并将其送入执行引擎架构。另外,A64FX的缓存还能够针对那些没有对齐的SIMD负载进行操作,使其输出的数据可以直接被一次性处理而不用再度对齐,这样的操作提高了效率并节省了时间。

另外L1缓存的优化在于使用了名为“CombinedGather”的机制,这可以大幅度增加数据吞吐量,这种机制主要对HPC非常重要。简单来说,“CombinedGather”可以将散落在内存各个地方的不同但是又相关的数据流收集在一起,并整理到寄存器中,方便处理器在下一步操作时直接使用,而不需要不断地查找等待数据。根据富士通提供的数据,使用了“CombinedGather”的系统相比没有这个技术的系统,其每个核心的吞吐能力提高了1倍。

另外一个重点在于超多核心处理器的内存实现方面。在A64FX上,有关这部分的核心设计被称为CMG,也就是核心内存组。一个CMG包含了13个处理器核心,其中12个会用做计算核心,另外一个则专门用于为12个核心进行相关进程守护、IO调配、内存数据处理等操作。所有13个核心的数据都通过一个被称为X-Bar的中转站连接至8MB16way的L2缓存上,然后再通过每个CMG的HMB2内存控制器连接到一个独立的HBM2内存颗粒上。整个A64FX处理器的内部有4个CMG,也就对应了4个HBM2内存和相关的内存控制器。这4个CMG之间的通讯采用了环形总线的设计,包括4个CMG、Tofu控制器、PCIe控制器以及其他部件等都通过环形总线交换数据。

从产品设计的角度来看,A64FX的这种环形总线设计方案和英特尔目前在处理器上使用的环形总线设计方案有一定的相似性,所有内核数据交换都是通过环形总线来完成的,这是一种简洁实现多核心之间数据互通的结构。但是有所不同的是,英特尔在环形总线上直接挂接的是CPU、GPU等核心,但A64FX则挂接的是CMG处理器簇,这意味着两个不同的处理器簇之间的通讯在最恶劣的情况下将带来巨大的延迟。比如恰好在环形总线相对方向的2个CMG簇需要通讯的话,数据不得不穿透每一个GCM的X-Bar、L2、环形总线控制器/数据接口以及忍受环形总线上数据等待和传递的时间。另外,由于不同的HBM2内存块挂接在不同的GCM上,这意味着整个处理器实际上被分成了4各部分。每个CMG有自己的内存空间和内存控制器,不同CGM之间的内存数据互通又需要通过环形总线和内存控制器才能共享,这同样带来了巨大的延迟,这点非常考验富士通在处理器内部通讯方面的设计。富士通在内部架构设计中比较出色(且奢侈)的做法是,为每个CMG单独使用了一个处理器核心来协调数据通讯的问题,但是这样做的效能和延迟表现究竟如何,现在还没有更多的数据可以供参考。总的来看,A64FX的设计可以说是比较取巧的,避免了很多复杂的设计问题,比如缓存一致性、内存一致性等,代价就是延迟或者损失了一个处理器的核心。最终效能如何,还有待观察。

再来看看有关HBM2内存的设计。富士通公布了每个CMG和HBM2之间的带宽情况,每个CMG内部层级最高的是核心,接下来是L1缓存。L1缓存写入核心的带宽为230GB/s,核心写入L1缓存的带宽为115GB/s。相应的,L2缓存写入L1缓存的带宽是115GB/s,L1缓存写入L2缓存的带宽则降低至57GB/s。最后一个层级是8GB的HBM2,这个层级和8MBL2写入读取的帶宽都是256GB/s。可以看出,除了L2和HBM2内存外,L1和核心、L2和L1之间的数据带宽都是非对称的。另外,富士通还特别指出,包括内核、缓存、内存控制器中都引入了乱序执行机制,最大化了每一个数据层级的读写能力。一般来说,乱序执行能力能够根据现行任务的紧急程度排序情况来提供数据,而不是再是根据时间进行排序,这在很大程度上带来了数据效率的提升。A64FX在这里使用了乱序执行的方法还是值得肯定的。

猜你喜欢
富士通秘密武器内存
外部高速缓存与非易失内存结合的混合内存体系结构特性评测
秘密武器
“春夏秋冬”的内存
它们有秘密武器
“疯狂”的富士通
富士通将军空调讲坛挺进长沙
基于内存的地理信息访问技术
上网本为什么只有1GB?
富士通的神话
悲情富士通