.hd-box .hd-fr

超越官方的民间测评:基于 SPEC CPU 2006 的国产龙芯 3A4000 处理器性能评测

2021-03-23 16:09IT之家(zevan)32评

“跑分” 这件事,相信各位读者对此并不陌生。“不服跑个分” 已经成为了某些手机发布时的保留节目。对于普通用户来说,最常用的跑分程序大概就是鲁大师和安兔兔了。安装一个程序,然后再点几个按钮,几分钟以后跑分结果就出来了,整个过程简单轻松。

如果要跑分的平台不是运行 Windows 系统的 X86 平台,也不是运行安卓系统的 ARM 平台,而是运行国产操作系统的国产处理器平台,用什么方法来衡量这些平台上的处理器性能呢?这时,我们可以使用一个重量级的跑分程序 SPEC CPU 2006。

SPEC CPU 2006 包含 12 项整数测试,17 项浮点测试,共计 29 个测试项目。测试以后会分别根据每一项的测试成绩,用几何平均算出最终的整数测试成绩和浮点测试成绩。根据编译选项设置的不同,可以得到处理器的基础(base)性能和峰值(peak)性能。对于 SPEC CPU 2006 的具体内容,网上已经有很多材料了,在此我不做赘述。在IT之家IT号这里,我着重介绍单核 peak 性能的测试。

一、三款国产处理器性能对比

使用 SPEC CPU 2006,我们可以对各种国产处理器的性能做一个评价。这里,我们首先对比三款国产处理器的 SPEC CPU 2006 性能。

飞腾 FT2000-4 处理器没有官方的 SPEC CPU 2006 性能。网友 yygg100使用飞腾的内部测试配置文件,得到了 FT2000-4 处理器的整数峰值性能为 23.2 分;遗憾的是,在这个测试中并没有进行浮点性能的测试,该网友也没有提供配置文件的细节。这个成绩已经初步实现了飞腾在 2016 年的规划,即到 2018 年 SPEC CPU 2006 性能达到 20~30 分。

兆芯则直接在官网上公开了处理器的性能,目前 KX-6000 的性能为 3GHz 下单核整数性能 29.2 分,浮点性能则高达 38 分。由于兆芯处理器采用 X86 指令集,在进行性能测试的时候兆芯可以使用 Intel 编译器来获得最高性能,这也是兆芯的生态优势之一。

龙芯 3A4000,采用 28nm 工艺,主频 2.0 GHz 下,单核 peak 整数性能 21.1 分,浮点性能 21.2 分;单核 base 整数 19.1 分,浮点 18.7 分。我在去年试图复现这个成绩,没有成功,即使超频到 2.15GHz 的情况下,最终的成绩也没有超过 20 分,深感遗憾。现在我想再试一下,以正视听。

图 1 三款国产处理器的单核性能对比

二、影响处理器性能的因素

在性能评测中,影响性能的因素有很多,简单的讲可以概括为以下几个个部分:

三、龙芯 3A4000 处理器的 SPEC CPU 2006 性能调优

在对龙芯 3A4000 进行性能测试的时候,我测试了操作系统内核、内存性能、主频、编译选项等对操作系统性能的影响。

1. 编译器优化选项

首先,我考察了编译器的各种优化选项对性能的影响。此时,我的测试环境是龙芯 3A4000 处理器,主频 1.8GHz, 配单根 8GB 2400MT/s 内存条。操作系统为龙梦 Fedora 28,内核版本为 5.4.60,编译器版本为 GCC 8.4。我简单尝试了 O2、O3、Ofast 三个优化选项,得到的 SPEC CPU 2006 性能如图 2 所示。

图 2 采用 O2、O3、Ofast 选项时的处理器性能对比

这个性能看起来实在是不怎么样。从 O2 到 O3 再到 Ofast,程序的性能有些许的提升,但距离龙芯官方生成的 20 分还差的很远。接下来,我们可以通过进一步编译器参数来对处理器的性能进行优化。我采用的主要编译器参数和作用如下表所示。

编译器参数

作用

-march=loongson3a

开启针对龙芯 3A 处理器的优化

-mabi=n32

使用 N32 的 ABI

-funroll-all-loops

循环展开

-mmsa

使用 MIPS SIMD 指令

-flto

开启链接时优化

-ftree-parallelize-loops

开启自动并行

-fprofile-generate, -fprofile-use

使用 profile guided optimization

对每个测试项目的编译参数,都进行了调整,最终得到的 peak 性能分数提高到了整数 18.09 分,浮点 17.64 分,相对于仅使用 Ofast 参数的性能分别提高了 34% 和 24%。图 3~ 4 对比了只使用 Ofast 参数的性能和 peak 性能的对比。

图 4 peak 性能和仅采用 Ofast 选项的性能对比

从测试的结果看,仅仅依靠编译选项的调整,就可以大幅提高应用程序运行的速度。对于部分测试的性能,甚至有数倍的性能提升。比如,456.hmmer 测试项目的分数从 11.7 分提高到 27.4 分,性能是之前的 2.3 倍,这主要是因为启用了 MIPS 的 SIMD 指令;436.cactusADM 测试项目的分数从 2.5 分提高到 7.3 分,性能是之前的 2.9 倍。

2. 操作系统内核的选择

除了编译选项的调整,操作系统内核也对应用程序的性能有着非常大的影响。采用同样的编译选项,我分别使用 Fedora 28 的 5.4.60 内核以及龙芯提供的 4.19.161 内核进行了性能测试。使用 4.19.161 内核,进一步提升了程序的性能,整数 / 浮点性能分别从 18.09 分 /17.64 分,提高到了 18.8 分 / 19.92 分,性能的提升分别为 4% 和 13%。

如图 5 所示,429.mcf 性能从 20.56 分提高到了 24.9 分,性能提高了 21%。而性能提升最为明显的项目是 436.cactusADM,分数从 7.3 分提高到了 44.9 分,性能暴涨到原来的 6.15 倍,简直像开挂了一样。这也表明龙芯公司在操作系统内核的优化上,也做了很多工作。

图 5 操作系统内核对性能的影响

3. 内存性能

进一步,我对比了内存性能对系统性能的影响。当系统增加一根内存条,组成双通道以后,整体的性能再次提升,整数 / 浮点性能分别提升到了 19.60 分和 20.99 分,相比之前的测试分别又提高了 4.3% 和 5.5%。其中,性能提升较大的项目如图 6 所示。很明显,这些项目也是访存密集型的。在对内存性能进行调优以后,1.8 GHz 主频的龙芯 3A4000 处理器的浮点性能已经超过了 20 分。

从测试的结果也可以看出,462.libquantum 测试对访存性能非常敏感,将内存从单通道升级到双通道,性能提升了 66%。

图 6 内存对性能的影响

4. 处理器主频

以上的测试都是在 1.8 GHz 主频下完成的。实际上,龙芯 3A4000 处理器睿频频率可以到 2.0 GHz。而使用龙芯内核开发者 flygoat 提供的龙梦 A1901 主板内核超频补丁,还可以进一步提升龙芯 3A4000 处理器的主频到 2.2 GHz。

提高主频的话,龙芯 3A4000 处理器的性能究竟可以提升到什么程度?从下图 7 可以看出,在 2.0GHz 主频下,整数性能和浮点性能分别为 21.3 分和 22.9 分,这已经超过了龙芯官方提供的整数 21.1 分、浮点 21.2 分的 peak 性能。我所测试的 A1901 主板,3A4000 处理器可以稳定在 2.1GHz 主频下,在此主频下整数性能和浮点性能分别为 22.2 分和 23.8 分。

图 7 不同主频下龙芯 3A4000 处理器的性能

然而,这并非是龙芯 3A400 处理器的性能极限。我在测试中使用的是 GCC 8.4 编译器,其中对龙芯 3A4000 中指令的支持并不完善。比如,龙芯 3A4000 中实现了 256 位向量操作指令 LASX,但我在跑分的时候只用到了 128 位的向量操作指令 MSA。如果编译器中的编译选项对龙芯处理器进行了深度的调优,整个系统的性能还有进一步提升的空间。

经过上述的测试,我对系统的硬件、软件等方面进行了多种调优,通过优化编译器选项、操作系统内核、内存性能,以及对处理器的超频,将 SPEC CPU 2006 的性能从最初的整数 13.1 分、浮点 12.2 分,提高到了最终的整数 22.2 分、浮点 23.8 分(2.1 GHz)。这些优化的经验,对于类似的系统同样适用。

四、针尖对麦芒:飞腾 FT2000/4 vs 龙芯 3A4000 处理器

我们了解了龙芯 3A4000 处理器的性能,那么和友商的飞腾 FT2000-4 处理器相比,龙芯 3A4000 的差距有多大呢?

项目

龙芯 3A4000

飞腾 2000-4

处理器核

GS464V

FTC663

指令集

LoongISA

ARM V8

处理器核数

4

4

处理器主频

2.0

2.6

工艺

28nm

14nm

功耗

30~50W

10~15W

内存控制器

DDR4 最高 2400MT/s

DDR4 最高 3200MT/s

可以看出,采用先进工艺的 FT2000-4 处理器在主频和功耗上大幅领先龙芯 3A4000 处理器。那么处理器的真实性能有多大的差距呢?最近,贴吧网友 yygg100 对 FT2000 处理器的 SPEC CPU 2006 的 peak 性能进行了测试,得到了在 2.6GHz 主频下单核 peak 整数性能 23.2 分的成绩。虽然他的测试并不完善,只有整数性能测试,没有浮点性能测试的数据,但这依旧是目前已知的 FT2000 处理器单核性能的最高值。

我们将这个数据与龙芯 3A4000 在 2.0GHz 下的性能进行了对比,龙芯 3A4000 性能为 21.3 分。由于龙芯处理器工艺落后,主频较低,主频只有飞腾处理器的 77%,而整数性能达到了飞腾处理器的 92%。

图 8 龙芯 3A4000 和飞腾 FT2000-4 处理器整数性能对比。

从图中可以看出,在 12 项测试中,飞腾处理器在 8 个项目上性能强于龙芯 3A4000,其中 libquantum 这一项的性能差距最大,龙芯处理器性能只有 FT2000 的 58%,因为飞腾处理器不仅主频较高,而且内存频率为 2666MT/s,相比龙芯 3A4000 的 2400MT/s 有明显的优势。

而在 429.mcf,445.gobmk,456.hmmer, 458.sjeng 这 4 个项目上,2.6 GHz 的飞腾 2000 处理器性能弱于 2.0 GHz 的 3A4000 处理器。随着龙芯 3A5000 处理器的上市,飞腾 2000 处理器的单核性能领先优势将会逐渐消失。

五、对龙芯 3A5000 的展望

龙芯 3A5000 处理器已经流片,很快就要发布了。龙芯 3A5000 处理器将采用台积电 12nm 工艺流片,处理器主频有望提高到 2.5 GHz 以上,和友商处理器的主频差距进一步缩小。据称,龙芯 3A5000 的 SPEC CPU 2006 性能将达到 25~30 分。

根据我对龙芯 3A4000 处理器的性能测试,如果把龙芯 3A5000 处理器视为 3A4000 的简单升级版,仅仅提高主频,内存频率和缓存都不变,采用图 7 中的数据,进行一个简单的数据拟合,我预测龙芯 3A4000 处理器在 2.5 GHz 主频时 peak 性能约为整数 25.9 分、浮点 26.7 分。龙芯 3A5000 会将三级缓存大小加倍,提高内存的频率 (有望达到 3200MT/s),还会进一步提升处理器的性能,我们可以假设有这些调整可以带来 5% 的性能提升;龙芯 3A5000 处理器采用了 Loongarch 指令集,摆脱了 MIPS 指令集的历史包袱,根据胡伟武研究员的报告,仅仅是指令集的更新,就可以让性能提升 16.6% 和 9.4%,我们可以保守估计有 9% 的性能提升。龙芯 3A5000 也有望使用真正的 256 位向量指令,而非 MSA 中的 128 位向量,程序运行速度可以进一步提高,可以保守估计这能带来 2% 的性能提升。

根据上面的计算,我认为龙芯 3A5000 处理器的 SPEC CPU 2006 单核 peak 性能可以达到整数 30 分、浮点 30 分。届时,龙芯处理器将在单核性能上追平或赶超其他国产处理器。2021 年下半年,16 核龙芯 3C5000 以及 64 核龙芯 3E5000 的流片,也将提高龙芯处理器的多核性能,有助于龙芯扩展服务器市场。

致谢

本次测试借用了网友 gueenet 的龙芯 3A4000 主机,对他的慷慨和信任我深表感谢!在对内核的性能测试中得到了陈华才、flygoat 的指导。对 SPEC CPU 2006 性能的探索,受到了网友 yygg100 所发视频的启发,对他的视频分享一并表示感谢。封面图由龙芯吧 Windows1089 提供。

参考资料:

IT之家对 SPEC CPU 感兴趣的朋友,可以参考https://github.com/zevanzhao/loongson-notes 中的文档,进行龙芯平台下 SPEC CPU 2006 的跑分。

广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,IT之家所有文章均包含本声明。

下载IT之家APP,分享赚金币换豪礼
相关文章
大家都在买广告
热门评论
查看更多评论