APP下载

Less is More?这次越多越好走近世界之最的多线程、多核心处理器

2020-07-04李实

微型计算机 2020年10期
关键词:线程分支内存

李实

处理器的单核心性能在许多应用场合中都很重要,但是随着现有条件下单核心性能接近天花板,以及多线程应用和并行计算的兴起,在服务器、超级计算机等设备上,更多的核心和更强悍的多线程性能变得备受关注。尤其是针对那些计算任务并不重,但是对分发性能要求特别高的数据中心来说,更多的核心和线程意味着它可以响应更多的访问需求,也意味着更大的商业市场规模。在这种情况下,一些厂商开始推出基于非x86架构的超多核心处理器,搭配SM丁多线程技术,带来了令人耳目一新的技术与产品。

说起超多核心处理器,如今风头正盛的要数AMD了,拥有64核心的锐龙线程撕裂者3990X利用其多核心加上128线程的优势规格,轻松拿下了当下x86处理器的性能桂冠。虽然AMD依靠这款处理器一步登顶,但是从市场和技术的角度来看,在x86架构的应用中,64个物理核心很可能是x86处理器在短期内发展的极限了。那么,更多核心的处理器发展方向在哪里呢?答案是ARM,这个在移动计算上大放光彩的架构,目前也逐步进入服务器市场,并且联合多家厂商推出了更多核心的处理器产品。

这是一款拥有96核心384线程的处理器

ARM以及相关架构产品进入服务器领域已经有数年时间了,不过由于缺乏事实上的领导者,因此整个产品规划和发展都显得比较混乱,厂商更倾向于根据自己的客户和市场情况定制相应的处理器架构,各家厂商之间也存在无序竞争的状态。在这些年,既有不少失败后倒下的公司,也兴起了很多有创意的产品。其中不得不提的是Cavium,这家企业是ARM在服务器芯片领域的开拓者之,,但最终被美满电子(Marvell)收购。这次收购让美满电子获得了一个完整的服务器处理器研发产品线和数代相关产品。

美满电子旗下的第一代ARM架构服务器产品被称为Thunder X,这款产品在设计和运行上存在一些问题,比如阻塞的L1缓存、高延迟的L2缓存以及高延迟的DRAM,此外还有低负载下运行功耗较高的问题。可以说,Thunder X在很大程度上是一款试水之作,并没有大规模流向市场。第二代产品被称为Thunder X2,这代产品发布于2018年,此时ARM上的Linux生态逐渐成熟,不再需要专门的Linux内核和其他工具配合,软硬件表现上更为出色。实际运行下来,虽然ThunderX2还存在一些问题,比如分支密集型代码的运行速度较慢,其中涉及L3缓存未命中以及DRAM延迟较高等问题,但是Thunder X2在大部分应用和测试中的表现还是很出色的,甚至在部分测试中展现出当时服务器市场上最出色的每单位价格性能。从这一代产品开始,Thunder X系列处理器真正进六了“可用“的商业化状态。

2020年,美满电子又发布了全新Thunder X3。这款处理器属于丁hunderX家族微体系架构的后续产品,采用7nm工艺制造,加入了4路SMT等关键特性,还通过全新定义的微体系架构提高了处理器的IPC、时钟频率以及更多的内核数量。现T在Thunder X3能在单路系统中最多提供96个核心和384个线程,这是令人惊讶的数据。

在处理器研发背景方面,美满电子提到,因为现在越来越多的应用程序开始向云端迁移,并且这些应用程序不但在工作性质方面发生了变化,而且整个工作负载的模式和生态系统也在改变,客户开始更加注重自定义软件堆栈并扩展这些应用程序。这意味着客户不一定只注重单核心、单线程性能,还更加看中总吞吐量和功率效率等。

和其他ARM服务器芯片研发厂商一样,大家都看到了x86架构在这,方面缺乏执行能力和相关产品,这也很好地反映了英特尔在过去几年的失误,尤其是在超多核心处理器方面,当然x86总体而言还是具有更高的性能。出现这一问题的原因是x86的相关产品需要适应广泛的市场目标,从消费者端一直延伸至服务器端,最终使得x86的相关产品在所有客户的手中都无法达到最出色的性能和效果。在这,点上,Thunder X3采用的方案能够很好地避免这个问题,尤其是在电源效率和能耗控制方面,并且能够带来更高的系统总吞吐量。

在产品研发周期方面,美满电子的产品研发周期是2年,比如 2016年推出Thunder X,2018年推出ThunderX2,今年也就是2020年则是丁hunderX3亮相。随后到2022年,美满电子还准备推出Thunder X4,其性能表现应该更让人期待。

夺人眼球的强悍规格

从规格来看,Thunder X3是一个非常有雄心的设计,其拥有多达96个支持ARM v8.3指令集的自定义内核,内核运行频率最高为3GHz,最终芯片的TDP值为100W~240W,具体数据取决于厂商配置方案。

不过目前美满电子还没有提供Thunder X3内核设计的相关资料,因此只有一些宽泛的的数据可供展示。比如美满电子宣称,Thunder X3的IPC相比上代产品提高了25%,单线程性能则提高了60%以上,套接字级别的性能提高了超过3倍,由于增加了SIMD单元,其浮点性能甚至可以提高5倍。

说起浮点性能,美满电子表示Thunder X3的主要特點是拥有4个128位的SIM。执行单元。就数据宽度而言,这相当于一个x86 AVX-512单元,这和AMD Rome架构拥有的2个256bit的SIMD单元以及英特尔Xeon内置的AVX-512向量执行单元的吞吐能力处在同一个水平线上。当然,英特尔最高端的Xeon处理器可以扩展至2个AVX-512单元,在浮点性能上依旧傲视群雄。考虑到SIMD单元发热量和功耗都比较高,在全速运转时ThunderX3的频率会降低至2.2GHz~2.6GHz(根据处理器可用的散热和功率余量而定),这个情况在英特尔或者AMD的处理器上也同样存在。

Thunder X3另一个特点是SMT。和英特尔、AMD设计2路SMT不同的是,Thunder X3拥有4r,SMT,这类设计之前只在IBM Power系列处理器中出现过。从技术角度来看,SMT的设计一般不需要在处理器内部架构上做出太多改变,其需要添加的是处理器在一个周期内从多个线程中获取指令的能力,以及与之匹配的更大寄存器剑牛来保护来自多个线程的数据。在这里,多于一个线程的指令可以在任何指定的流水线阶段中同时执行。设计人员可以根据芯片设计目的支持2个到8个并发线程。但是,更多的线程需要考虑处理器内部是否有足够多的资源。一般来说,一个线程并不会占据处理器流水线上的所有资源,这就为其他线程留下了空间。不过太多线程的加入而没有充足资源的话,也不会凭空带来性能的提升。当然,在设计合理的情况下,SMT是隐藏内存延迟、提高效率以及增加硬件吞吐量的好力法。在加入了4路SMT后,Thunder X3在最高配置方案下拥有96个处理器核心和384个线程,这是过去、现在和未来一段时间内服务器市场上出现的最多线程数量的单路处理器,并且很可能短时间内也没有其他厂商来挑战。

在处理器的内部拓扑结构方面,美满电子没有更多资料披露,但是暗示这款处理器的CPU内核之间拥有统一的低延迟设计。另外,处理器可以配置单路或者双路,如果是双路配置的话,插槽间使用第三代CCIP(Cavium Cache CoherentInterconnect)进行连接,两个插槽之间一共有24个通道,每个通道28Gbit/s,插槽之间的带宽总计是84GB/s。内存方面,Thunder X3支持8个DDR43200内存控制器,考虑到如此多的处理器核心,实际上8通道DDR4内存也只是刚刚够用。外部连接方面,Thunder X3擁有64个PCle 4.0通道,这在服务器处理器上不算多,AMD的Rome提供了128个PCle 4.0通道,刚好是Thunder X3的2倍。

美满电子目前只披露了上述内容,更多详细的架构情况还需要等待。不过在商业宣传上,美满电子倒是早早地给出了Thunder X3的大量性能数据并宣称其能抗衡市场上的主要竞争对手。

抗衡竞争对手ThunderX3的性能改进情况

美满电子在考虑Thunder X3的竞争对手时,选择了AMD Rome和英特尔Cascade Lake-SP,其中AMD Rome是AMD最新的服务器产品,采用Zen 2架构和7nm工艺,后者是14nm工艺制造,最多28核心56线程。

在目标云测试项目中,ThunderX3展示了显著超越两个竞争对手的性能。相比英特尔,Thunder X3依靠更多的核心带来了更强大的吞吐量,相比AMD Rome,Thunder X3的4路SMT发挥了很强的作用,也超出了AMD的相关产品。不过,在一些执行和计算绑定的到乍负载中,Thunder X3则输给了竞字权寸手,因为4路SMT在这里很难发挥作用。

在HPC市场上,Thunder X3和竞争对手的优势在于更高的内存带宽、更好的能效比和更多的线程。美满电子给出的数据显示Thunder X3在浮点测试、内存带宽中取得了胜利,这主要是增加的SIMD单元、更多通道的内存控制器带来的优势,尤其是内存延迟比AMD Rome要低一些。但是,考虑到上市时间,Thunder X3在2020年年底上市的时候,可能面对的将是采用了Zen 3架构的AMD Milan服务器处理器,那个时候鹿死谁手就不好说了:

ARM在云端市场的应用是越来越广泛了。Thunder X2此前就成功打办厂些超大规模公司中进行了部署,比如微软的zure云就使用了一部分Thunder X2处理器。Thunder X3的优势在于虚拟机市场,因为4路SMT的原因,Thunder X3单处理器拥有最多的线程。不过考虑到4路SMT支持的虚拟机方案,单路性能表现可能会很糟糕,这是否真的能够成为一个优势,还需要抒一个问号。

最后则是每瓦特性能了。目前美满电子宣称Thunder X3的每瓦特性能高出英特尔和AM。的产品不少,美满电子的数据是平均不同的工作负载后,Thunder X3的每瓦特性能比AMD的Rome还高30%。考虑到ARM架构以及Thunder X3的处理器规模,这样的效能数值是非常不错的。不过ThunderX3相比同样是超多核心处理器的亚马逊自研64核心Graviton 2,或霍冰Itra基于ARM Neoverse N1架构的64核心处理器的表现是否还会领先,将成为一个有趣的话题。尤其是后者肯定会成为Thunder X3的竞字取寸手。不过,Altra的处理器还没有正式以可用状态发布,因此性能对比暂时无从谈起。从架构和特性来看,Thunder X3有可能在浮点性能上略胜一筹,并且在诸如数据平面的工作中,借助4路SMT,也可能获得不错的性能优势。

总结一下,虽然目前美满电子尚未准备好或者还没有来得及给出Thunder X3的全部介绍,不过初步来看,Thunder X3在技术和应用中表现应该符合预期,有望在服务器市场形成一定的竞争力。接下来的几个月,美满电子还会发布Thunder X3的相关信息和架构设计等内容,本刊也会持续关注。

史上核心最多Tachyum128核心Prodigy处理器

本来Thunder X3在拿下了现有“最多线程处理器“桂冠的同时,还有希望冲击“最多核心单处理器“的称号。不过,它被一家来自斯洛伐克的创业公司抢走了这家名为Tachyum的芯片研发公司推出的名为Prodigy的处理器,以单处理器集成128个核心的数据,成为目前最多核心数量的单处理器。

从历史背景来看,很少有创业公司能够拥有如此强大技术能力,但是Tachyum却是一个例外。它的创始人Radoslav Danilak拥有25年的半导体行业经验,之前创立了SandForce,在被希捷收购后,又创立了Skyera,然后被西部数据收购。也正是这两次并购给他带来了不少资本,包括资金。随后,Radoslav DanilaktiIJ罗马尼亚创立了Tachyum,还获得了罗马尼亚政府1700万美元的创业扶持资金。它的第一款产品就是Prodigy,全个全球最多核心的处理器产品。言归正传,下面我们就来一起看看这个128核心的处理器都有哪些特别之处。

全球首个通用处理器 通吃各类任务

和之前的Thunder X3资料较少有所不同的是,Tachyum对Prodigy的相关信息披露得比较齐全,包括产品定位、规格、架构等。在Tachyum的定义中,Prodigy并不是一个传统处理器,而是被定位为“通用处理器“(universal processor),设计目标是面向服务器、AI、超算等市场。Tachyum宣称Prodigy拥有实时模拟人脑大小的神经网络功能,并且整体架构融合了CPU和GPU的优势,还是全球首个将通用处理器、高性能计算、AI人工智能、DML深度机械学习、可解释人工智能(Explainable AI)、生物人工智能(Bio AI)和其他AI学科所需要的计算任务结合在一起的处理器,本身基于并行多处理器环境和可简化的编程模型等,能够高效适应不同场合的不同工作任务。

Prodigy采用的工艺是台积电的7nm工艺,采用85mm边长的正方形FCBGA封装,实际芯片面积会更小一些,也小于AMD采用SP3接口的线程撕裂者的封装尺寸。产品型号方面,Prodigy拥有4个型号,分别是T216、T432、T864和T16128,其中后几位数字表明了处理器中包含的核心数量,比如T864就是有64个核心,T16128则是由128个核心。相关规格方面,本文列表如下:

以Prodigy最高端的T6128为例,这款处理器集成了128个核心,64bit架构,支持512bit向量计算,支持Al和ML向量和矩阵加速,在4GHz频率下每周期执行4个指令(4发射设计),支持虚拟化和高级RAS功能。缓存方面,T6128的指令缓存为32KB,支持ECC,数据缓存为32KB,支持ECC,最后一级缓存为64MB,支持DECTED ECC校验。内存方面拥有12个DDR5内存通道,但是每个通道只支持1个DIMM,DDR5内存频率最高支持4800MT/s,最大容量支持512GB内存。IO方面,支持4006网络接口和48个PCle 5.0通道,拥有36个控制器。性能参数方面,这款处理器最高支持262TFLOPS的AI计算性能和16TFLOPS的HPC计算性能,后者应该是指双精度计算能力。

除了上述信息外,Tachyum没有给出有关Prodigy使用的指令集的信息,但是宣称其无论是单线程性能还是多线程应用,都比英特尔的至强处理器更出色,但是又比ARM相关产品要更小巧。

Prodigy核心架构解析

虽然Tachyurn没有公布有关Prodigy使用了什么指令集,但还是公开了包括缓存、指令拾取、执行、内存等诸多架构细节信息,值得一看。

先来看Prodigy的核心设计。Prodigy处理器采用了三级缓存设计,其中一级数据联合缓存和指令联合缓存都采用了2-way方案,容量均为16KB。需要指出的是,Prodigy在架构图中的缓存信息和产品公布的缓存信息存在差异。具体来说,产品公布的一级缓存采用的是32KB+32KB的设计,而架构解析中显示采用的是16KB+16KB的方案。目前暂时不知道谁是正确值,也有可能是Prodigy在随后的设计中调整了容量。接下来,L2缓存采用4-way方案,容量为256KB,TLB采用了2-way方案,容量为256个条目队列,L3缓存是每个缓存片拥有512KB,这应该和整个缓存区域设计相关了。

在执行方面,Prodigy的处理器核心包含了1个读取单元、1个读写单元和1个写单元,执行方面包含了3个整数和地址ALU,2个移位器和2个分支单元。计算方面,Prodigy的核心设计了2个512bit的向量/矩阵的整数/)-点乘加单元,以及月个512bit向量ALU搭配1个移位器l移位单元。从这个酉己置信息来看,Prodigy的核心设计计算能力非常强大,尤其是2个512bit的向量/矩阵的整数/浮点乘加单元和3个512bit向量ALU,是高性能处理器都不多见的高计算密集核心设计方案,强如AMD Zen 2或者英特尔Cascade Lake-SP,也只有相当于1 I' AVX-512的浮点计算单元。当然,目前还不是很清楚Prodigy在计算杨自设计方面的细节,但仅就规模来看还是颇为令人惊讶7o其他一些特性还包括执行部分允许尽早生成地址以减少负载使用延迟,控制方面支持暂时挂起推测存储并不提交缓冲区直到分支预测完成等功能,相当完善。

核心流水线设计方面,P「。digy采用了9级整数流水线和14级向量/矩阵乘加流水线,数据存储配置采用了上文提到的一个256条目的2-wayTLB,搭配1个读取单元、1个读写单元和1个写单元,此外还有包括整数ALU,整数移位、分支预测单元、向量/矩陣乘加单元、整数向量单元以及相关缓存控制器、Mesh网络接口等。Prodigy在示意图中还很贴心地为这些单元标记了次序和深度,值得称赞。

Prodigy在指令拾取和分支方面的设计也很出色。除了上文介绍的部分内容外,Prodigy会在硬件分支预测失败后,每周期重新填充64byte的数据。拾取方面,每个时钟周期可姗良据不同的类型和需求,拾取4、8,12或者16bit的数据,另外还允许在指令排序之前进行拾取操作,宽度为12个入口。分支预测方面,每个时钟周期最多可以执行2个条件分支,当遇到分支错误的时候,数据延迟或者流水线刷新周期会控制在7个时钟周期以内,分支预测期也加入了修复错误分支预测的功能,但是暂时没有明确其操作原理。进一步来看分支预测单元,整个Prodigy的分支预测单元包含了静态和动态两个部分,大多数分支预测只有不高于1个周期的耗费,静态分支预测需要耗费2个周期,分支预测器采用的是基于全局历史的方案,支持1024个条目的分支预测缓存和16个条目的分支目标微缓存。整个分支预测也加入了循环、堆栈预测等方法来加强效能。

在向量和矩阵计算方面,除了前文的内容外,Prodigy能够支持IEEE双精度、单精度和半精度FPU,AI计算方面采用的是8位浮点算法。矩阵计算方面,Prodigy的方案最终功耗相比可比方案能够降低4倍之多,能够支持16bit的Int/FP 8x8矩阵或者FP64、FP32格式的4×4矩阵计算。在未来进一步优化后,矩阵计算的性能还能够提高至现在的2倍。

内存方面,Prodigy在核心的数据网络上采用的是Mesh架构,每个核心的每个周期、每个方向都可以传递32byte的数据,整个网络设计采用了低延迟和请求/响应的网络特性,采用更为公平的数据传递仲裁方案,数据传输以全时钟周期计算的话,支持每周期一跳,并且支持ECC校验保护。内存控制器方面,Prodigy同时支持DDR和DDR5,也支持ECC。但是,在Prodigy的资料中显示,8个内存控制器中的2个可以任选DDR4/5内存支持,另外3个支持DDR4。不过,Prodigy没有说剩余的3个控制器支持什么规格的内存,猜测可能是只支持DDR5。这里存在一个疑问,那就是作为一个高端处理器,在内存支持上如此纷杂。一般来说这类处理器要么全部支持、要么全部不支持,类似Prodigy这样根据控制器/通道来选择支持内存类型的不多见,目前还不确定是笔误还是设计人员有特殊考量。

另外,整个处理器还加入了2个HBM3控制器,支持8GB、16GB和32GB等不同的HBM3方案,同样支持ECC。HMB3可以用作DRAM的缓存或者内存,或者干脆不使用。在Mesh网络之外,Prodigy还拥有一个内部的IO环状总线,将所有的内存控制器、PCle控制器、网络接口以及处理器Mesh网络连接在一起。这个环状总线的速度是每周期IO到DRAM为32byte,其设计和英特尔的Ring Bus基本类似,只不过Prodigy的核心更多,加入了Mesh网络予以加强。不过,同时使用环形总线和Mesh网络,在晶体管耗费上可能存在一些问题,这还需要进一步去考量相关因素。

最后来看软件方面,Prodigy目前可以支持FPGA模拟器、蜘牛模拟器、二进制翻译器、C/C++/Fortran编译器、调试器和配置文件、TensorFlow编译器等诸多现有环境,当然操作系统只支持Linux。

替代英特尔至强和AMDEPYC,Prodigy能成功吗?

目前Prodigy的处理器只流片了64核心版本以及针对AI和HPC的版本。根据Tachyum的计划,Prodigy T864将用于取代单双路的至强E7和至强E5或者相对应的AMD产品,32核心的Prodigy T432将用于取代至强E5、至强E3以及至强E系列。

从Prodigy的设计来看,这款处理器亮点颇多,比如Mesh和环形总线的网络互联架构,强大的浮点、矩阵运算单元,较出色的分支预测单元和多级缓存设计。但是,这款处理器的设计和其宣称的市场覆盖情况还是存在一定差异的。处理器设计上最高效率的往往是专精的定制化产品,兼容性和目标市场越大,包袱就越多。作为业内老手,Prodigy处理器的Tachyum公司不可能不知道这,点,但是在宣传和产品方案上,我们依旧看到了大量类似的宣传。目前尚不知道这款产品是否真的有宣传白勺那样出色,还是只是纸上谈兵,我们还需要等待后续发展。

猜你喜欢

线程分支内存
外部高速缓存与非易失内存结合的混合内存体系结构特性评测
巧分支与枝
“春夏秋冬”的内存
一类拟齐次多项式中心的极限环分支
浅谈linux多线程协作
基于内存的地理信息访问技术
生成分支q-矩阵的零流出性
基于上下文定界的Fork/Join并行性的并发程序可达性分析*
硕果累累
Linux线程实现技术研究