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

超越,官方,民间,测评,基于,spec,cpu,国产,龙芯,3a4000,处理器,性能,评测 · 浏览次数 : 0

小编点评

## 总结 * 论文测试了龙芯 3A5000 处理器的性能,并对性能提升进行了分析。 * 论文发现龙芯 3A5000 处理器的性能可以达到整数 30 分、浮点 30 分。 * 论文还发现龙芯 3A5000 处理器的性能可以被提升 9% 通过使用 Loongarch 指令集。 * 论文还发现龙芯 3A5000 处理器的性能可以被提升 2% 通过使用 256 位向量指令。 * 论文还发现龙芯 3A5000 处理器的性能可以被提升 5% 通过使用 16 核平台。 **主要结果** * 龙芯 3A5000 处理器的单核性能可以达到整数 30 分、浮点 30 分。 * 龙芯 3A5000 处理器的性能可以被提升 9% 通过使用 Loongarch 指令集。 * 龙芯 3A5000 处理器的性能可以被提升 2% 通过使用 256 位向量指令。 * 龙芯 3A5000 处理器的性能可以被提升 5% 通过使用 16 核平台。 ## 评价 * 论文测试的结果非常有价值,可以帮助人们了解龙芯 3A5000 的性能。 * 论文的分析方法非常有价值,可以帮助人们理解性能提升的因素。 * 论文的实验方法非常有价值,可以帮助人们验证理论结果。 ## 结论 * 论文测试了龙芯 3A5000 的性能,并发现该处理器具有很高的性能。 * 论文的分析方法非常有价值,可以帮助人们理解性能提升的因素。 * 论文的实验方法非常有价值,可以帮助人们验证理论结果。

正文

 
https://baijiahao.baidu.com/s?id=1695009412896463654&wfr=spider&for=pc

 


关注

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

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

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

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

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

处理器核的设计水平。处理器核的性能是决定处理器性能的最关键因素。在相同的主频下,使用高效处理器核的处理器性能更好。处理器主频。采用同样的处理器核,更高的处理器主频能够有更好的性能。优秀的制造工艺能够显著提高处理器的主频。比如,同样采用 FT663 内核,采用 40nm 工艺的飞腾 FT2000-2 处理器主频只有 1.0 GHz,而采用 16/14 nm 工艺的 FT2000-4 处理器主频高达 2.6 GHz。采用优秀的物理设计,也能够显著提高处理器的主频,比如龙芯 3A3000 处理器和龙芯 3A4000 处理器都采用 28 nm 工艺流片,前者主频只有 1.5 GHz,而后者的主频提高到了 2.0 GHz。处理器的缓存大小。众所周知,Intel 的处理器阉割缓存以后就变成了奔腾。更大的处理器缓存,有助于提高处理器的性能。比如,龙芯 3A2000 处理器共享 3 级缓存为 4M,龙芯 3A3000 处理器的共享三级缓存提高到了 8M,使得 3A3000 处理器的性能有了更多提升。内存的访存速度。有部分应用是访存密集型的,对这些应用来说,提高内存的访存性能能够有效提高处理器性能。影响内存性能的因素有内存的频率、内存通道的数目。如果主板上有多个处理器,还需要考虑每个处理器和内存的距离。编译器和编译选项。优秀的编译器,加上与应用特征匹配的编译选项,能够显著提高计算的性能。在 Intel 平台上,要全面发挥处理器的性能,最佳选择是使用 Intel 编译器;如果使用开源的 GCC 编译器,往往不能充分发挥处理器的能力。比如,兆芯 KX6000 处理器 SPEC CPU 2006 峰值性能整数 29.2 分,浮点 38 分,就是使用 Intel 编译器测出来的。此外,还有大量的编译选项提高二进制文件性能,选择合适的编译选项是提高性能的重要手段。比如,对于支持 avx 指令的处理器,在使用 GCC 进行编译的时候开启 - mavx 选项,可能会显著提高程序的性能。操作系统内核。过于古老的操作系统内核可能无法很好的支持新处理器的特性。如果操作系统内核编译的时候没有设定正确的选项,也可能无法支持新的处理器特性。以龙芯处理器为例,龙芯 3A4000 处理器增加了 MSA 指令,支持 128 位向量操作,如果操作系统内核不支持 MSA,那么所有启用了 MSA 指令的二进制文件都无法正常运行,也就无法发挥处理器的性能。程序运行依赖的底层函数库。程序运行依赖的 libc 库和 libm 库,对处理器性能的发挥也有影响。高性能的数学库能够加快底层数学函数的计算,提高计算性能。如果是进行矩阵运算、信号处理,那么高性能的 BLAS、LAPACK 库、FFT 库也能提高程序的运算速度。三、龙芯 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 分还差的很远。接下来,我们可以通过进一步编译器参数来对处理器的性能进行优化。我采用的主要编译器参数和作用如下表所示。

对每个测试项目的编译参数,都进行了调整,最终得到的 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 的差距有多大呢?

可以看出,采用先进工艺的 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 提供。

参考资料:

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

与[转帖]超越官方的民间测评:基于 SPEC CPU 2006 的国产龙芯 3A4000 处理器性能评测相似的内容:

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

https://baijiahao.baidu.com/s?id=1695009412896463654&wfr=spider&for=pc 关注 “跑分” 这件事,相信各位读者对此并不陌生。“不服跑个分” 已经成为了某些手机发布时的保留节目。对于普通用户来说,最常用的跑分程序大概就是鲁大师和安兔兔

[转帖]XEON E5 V3全核睿频有多酷?我们来看看

https://zhuanlan.zhihu.com/p/260820308 我们知道,因特尔的睿频技术,其实就是官方的超频。今天我们来看一下全核睿频时,XEON E5 V3有多大的能耐! XEON E5 2678V3,这个CPU在某宝上,现在只要500多RMB了。2678V3其实参数和2680V3

[转帖]REDIS SLOWLOG(慢日志)

slowlog 此命令用于读取和重置Redis慢查询日志。 一、Redis slowlog 官方概述: Redis Slow Log是一个用于记录超过指定执行时间的查询的系统。执行时间不包括与客户端交谈,发送答复等I / O操作,而仅包括实际执行命令所需的时间(这是命令执行的唯一阶段,在该阶段线程被

[转帖]重置 VCSA 6.7 root密码和SSO密码

问题描述 1、用root用户登录 VMware vCenter Server Appliance虚拟机失败,无法登录 2、vCenter Server Appliance 6.7 U1的root帐户错误尝试次数超过3次已锁定或帐户已过期 官方说明 在VCSA 6.7 U1中​​,SSO用户(即常用的

[转帖]重置 VCSA 6.7 root密码和SSO密码

问题描述 1、用root用户登录 VMware vCenter Server Appliance虚拟机失败,无法登录 2、vCenter Server Appliance 6.7 U1的root帐户错误尝试次数超过3次已锁定或帐户已过期 官方说明 在VCSA 6.7 U1中​​,SSO用户(即常用的

[转帖]超全超详细的HTTP状态码大全

本部分余下的内容会详细地介绍 HTTP 1.1中的状态码。这些状态码被分为五大类:100-199 用于指定客户端应相应的某些动作。200-299 用于表示请求成功。300-399 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息。400-499 用于指出客户端的错误。500-599 用于

[转帖]超详细的解决ModuleNotFoundError: No module named '_curses'错误的方法!!!

超详细的解决ModuleNotFoundError: No module named '_curses’的错误 问题描述:在写py脚本时,需要用到curses库(提供了控制字符屏幕的独立于终端的方法)。 导入的时候完全正常 Run的时候却报了这样的错误(它说找不到这个包) 本能的解决方法: 首先想到

[转帖]超详细的I/O多路复用概念、常用I/O模型、系统调用等介绍

概述 当我们要编写一个echo服务器程序的时候,需要对用户从标准输入键入的交互命令做出响应。在这种情况下,服务器必须响应两个相互独立的I/O事件:1)网络客户端发起网络连接请求,2)用户在键盘上键入命令行。我们先等待哪个事件呢?没有哪个选择是理想的。如果在acceptor中等待一个连接请求,我们就不

[转帖]超时时间connectTimeout,socketTimeout,proxy_read_timeout,proxy_connect_timeout笔记

1、一般的的情况 客户端(connectTimeout,socketTimeout) -- 七层接入proxy (connect timeout, read timeout, keepalive timeout, send timeout)-- nginx (proxy_read_timeout,p

[转帖]超能课堂(323) 为什么WiFi实际速率只有标称速率的一半?

超能课堂(323) 为什么WiFi实际速率只有标称速率的一半? 开始的地方 协议速率与实际速率有何不同? 什么是“全双工”与“半双工”? 无线网络与有线网络的抗干扰能力不在一个级别 无线网络与有线网络其实是相辅相成的 本文约 2730 字、5 张图表,需 5 分钟阅读 (切换至标准版) 在我们的实际