[转帖]面对龙芯3A5000的逼迫,3A4000要为生存抗争!
- https://baijiahao.baidu.com/s?id=1709233817860985518&wfr=spider&for=pc
龙芯3A5000是龙芯中科自主设计的最新型号桌面CPU,比上一代3A4000提升了50%的性能。本人通过真机实测,印证了3A5000无论是单核性能还是多核性能,确实都有50%的提升。上一代3A4000较更早的3A3000性能翻倍时,仿佛都不如现在这50%的提升更令人激动,因为3A5000不但性能终于贴近了主流桌面CPU的性能区间,还使用了完全自主设计的LoongArch指令集,代表着一个全新时代的开端。

龙芯3A5000是一块里程碑
龙芯3A5000的主频为2.5GHz,使用SPEC CPU2006 测试的 int_base(整数计算基本性能)单核成绩为26分以上,int_peak(整数计算峰值性能)单核成绩为30分以上。这样的性能如果与Intel/AMD的产品相比,仅仅是在主流的边缘,但却不应妄自菲薄,因为现在还能制约龙芯CPU性能的,几乎只剩下了CPU运行频率。
不同CPU在相同频率下的性能,代表着CPU的核心设计水平,通常用IPC这个单位来衡量CPU核心的潜力。IPC的本意是指CPU每个时钟周期执行的指令数量,但现在大家把它引申为每GHz的性能,也很合适。通过专业的CPU测试软件对性能加以量化,把测试成绩换算到1GHz,这样CPU单核性能也就约等于 IPC * (频率/Ghz),可以比较准确地估算出相同核心的CPU在不同频率下的性能。
我把Intel i5-4460、i9-10850K都固定于2.5GHz的频率,使用相近的GCC版本和编译优化参数进行SPEC CPU2006 int_base测试,把成绩与3A5000的实测结果作比较,在相同的频率下,它们的单核性能已经非常接近。


龙芯官宣的int_base单核成绩为26分以上,int_peak单核成绩为30分以上。我的int_base测试成绩为26.6,已经超过官宣成绩。我的编译优化配置非常简单,一是所知有限,二是因为我懒。因此我觉得如果细致调整编译参数,int_base的测试成绩还能有一些提升空间。但是测试SPEC CPU2006太耗精力和时间,因此我只求达标,不求最高。int_peak我就觉得不用测试了,就以官方说的30分为准,毕竟为每一个测试子项单独调配优化参数实在太费时间。
Intel的测试成绩就比较奇妙了,从酷睿4代到10代,IPC提升微小,甚至内存从DDR3 1600变成了DDR4 3200也没有让IPC大幅上升。Intel恃着垄断地位不思进取,每代新品几乎只是依靠工艺改进,小幅度提高频率和降低功耗,CPU核心设计进步乏善可陈。挤牙膏收智商税,确信!在Intel挤牙膏这段时间,龙芯已经逐渐把IPC追近,CPU频率也在不断向着主流水平前进,十年前因单核性能低而暂停的众核计划,现在也终于可以继续实行。
然而,由于现在的主流桌面CPU大多有4GHz以上的睿频,一般能够长时间稳定运行的频率也超过3Ghz,3A5000与主流CPU差距仍然很大。其实现在所有的国产CPU运行频率都还不高,即使是使用7nm工艺的鲲鹏CPU离3GHz的运行频率也还有较大的距离,这是国产CPU共有的问题。一般来说,CPU核心设计越复杂,IPC就越高,但也越是难以达到较高的运行频率。要想以较小的代价提高CPU运行频率,那就得使用更先进的工艺,否则就需要大量的投入反复流片,寻找工艺和物理设计的短板,加以改进和规避。当CPU核心设计有较大改变,又需要重复这一烧钱的过程,虽然经验可以积累,但论经验又有谁能与Intel和AMD相比呢?
国产CPU当前最欠缺的是单核性能,提高单核性能既要重视频率提升,更要重视IPC提升,必须双管齐下。提高频率需要与生产工艺大量磨合,需要很高的成本。而且最新的生产工艺目前处于被卡脖子的状态,我们还无法完全掌控。而增强CPU核心设计的能力,提高CPU同等频率下的性能,则不需要依赖太多外部条件,是我们能够自主掌握的最核心的本领。只有钻研,再钻研,积累,再积累,才能三年不鸣而一飞冲天!只有单核性能高了,多核才能有竞争力,否则一百只螳螂也挡不住顽童脚尖的嬉戏。
为何如此强调单核性能呢?经常见到一些游戏用户抱怨,Intel几十个核心的服务器CPU玩有的游戏时还不如4个核心的i5顺畅。这是因为桌面应用的特性决定了“一核有难,多核围观”是常态。Web服务器可以把数千并发访问平均分配给所有核心,但浏览器对网页版面重排却只能从头到尾顺序进行。正因为桌面应用的特性,Intel在酷睿8代之前,就没有超过4核的桌面CPU产品。即使是服务器,也有许多任务无法多核并行处理,如资源争用、等待前置条件、算法无法拆解等等都会使程序被迫串行运行。因此如果一款32核CPU的单核性能是另一款64核CPU的两倍,那么32个核心能发挥的实际效率也就高于64个核心。
龙芯3A4000与飞腾FT-2000/4的生存之争
龙芯3A5000的单核性能和多核性能都要比3A4000高50%,而整机价格相当,那么3A4000似乎就成了明日黄花,很快就会无人问津了。3A4000的命运果真注定了吗?可能并不如此!

当前所有的国产桌面、服务器CPU都还不能与消费市场的主流产品抗衡,无论是性价比,还是单纯的性能,都有很大差距。维持它们生存并加速它们进步的,主要是特别注重安全的信创市场。在这个限定的市场,各家国产CPU企业既要展现产品的先进性,也要体现路线的正确性。只有优秀的产品才能获得顾客的青睐,只有正确的路线才有无穷的潜力,错误的路线终究是涸泽而渔。信创市场的容量有限,国产CPU必须抓紧时机,快速进步,才能在一两年之后彻底进入普通消费市场时,仍有生存和竞争的能力。
也就是说,3A4000其实不需要与3A5000竞争,它只要与其它国产CPU相比有些许优势,就仍然有生存的空间。正好最近我买了一套飞腾D2000的主板,飞腾D2000与上一款FT-2000/4相比,核心数量从4个扩展到了8个,但频率从2.6GHz降到了2.3GHz。它们使用的CPU核心完全相同,其它规格也基本一致。若论CPU的整体性能,D2000的8个核心肯定超过上一款FT-2000/4的4个核心,但论实际体验,有时可能会觉得更慢。D2000与3A4000比较的话,8核对4核,3A4000没有胜算,3A5000尚能一战。因此我是想把D2000的单核性能换算到2.6GHz,让它代替FT-2000/4来与3A4000比较一番。
以前我调试Linux for ARM的程序,用的是树莓派4B,性能低得实在难以忍受,咬咬牙就买了飞腾的最新桌面CPU产品。实际使用感受确实比树莓派4B快多了,但对于CPU性能的量化,只能使用专业的测试工具软件来测试性能。测试CPU性能首选工具SPEC CPU,我暂时使用2006版,新版SPEC CPU2017我还没有很多问题没弄明白,以后有时间再测。
SPEC CPU2006是一种行业标准化的性能测试工具,测试重点是CPU、内存、编译器。通常CPU本身和编译器及编译优化参数对测试结果的影响较大,而内存性能的影响相对较小,因此当内存性能和编译器版本差异不大时,就可以认为SEPC CPU2006的测试成绩代表了CPU性能。实际上由于软件的运行离不开操作系统环境,Linux核心和各种基础库的优化程度对CPU的性能发挥也有很大的影响,也会影响SPEC CPU2006的测试成绩。
龙芯官宣3A4000在2.0GHz时的int_base单核成绩为19.1,实际大量出货的是1.8GHz的版本,把2.0GHz时的19.1换算到1.8GHz,得分应该是17.2。飞腾从来没有在网上的报道中公开过其CPU的单核测试成绩,但一直流传着来源未明的的“官方”说法,称FT-2000/4在2.6GHz时单核int_base成绩17.2,与1.8GHz的3A4000相同。但是这两个成绩都有疑问,曾有一些网友声称实测龙芯3A4000单核int_base仅13.x,也有一些网友声称用FT-2000/4实测出了超过21分的int_base成绩,都与宣方成绩冲突,又都没有能令人信服的证明。真实情况到底如何,我们也来测测看。
Stream内存访问性能测试
在测试SPEC CPU2006之前,先测试一下它们各自的内存访问性能,这也和CPU的性能表现,以及各种软件的运行效率相关。使用Stream开源程序来测试,比较简单,就让3A5000也参与一下吧!

Stream是测试的内存访问性能的一个开源程序,可以在“863高性能计算机评测中心”的网页上找到简要介绍和源码下载地址。内存访问对CPU的计算能力要求不高,主要是考验CPU的内存控制器以及内存本身的性能。测试分为单线程内存访问和多线程内存访问,下图是单线程测试结果:

内存访问3A4000不敌3A5000可以理解,因为内存频率有差距,且3A5000在访存方面也有改进。但D2000被3A4000完败,速度甚至不到3A5000的一半,就有点匪夷所思,飞腾CPU的访存性能这么弱吗?这么弱的访存性能还做64核心的服务器CPU,不是赶鸭子上架吗?不过这只是单核测试的结果,下面再看看多线程内存访问的情况,D2000有8核,多线程测试是否可以翻盘呢?

从测试结果来看,D2000的内存访问性能比较令人失望,多线程测试仍然垫底。本来是想用D2000代替FT-2000/4来与3A4000进行对比,结果它自己都如此萎靡!如果飞腾的CPU能把内存访问性能增强,相信测试CPU性能成绩能提高一点。但也不能寄予太大希望,看看本文开始处几款CPU在相同频率下的性能对比,i5-4460的内存是DDR3 1600,i9-10850k的内存是DDR4 3200,内存性能差距一倍,但测试成绩并没有提高多少。
内存性能更影响的是实际应用程序的运行效率,而不像SPEC CPU测试这样,主要是测试各种计算能力,并没有很大的数据样本。
龙芯3A4000的 int_base测试(单核和多核)
龙芯3A4000的测试很简单,我前几天尝试在3A5000上测试SPEC CPU2006时,把几个常用的编译优化参数简单拼凑了一下,就得到了26.6的int_base单核成绩,与龙芯官宣的26分(以上)相比,还富裕了不少。那么就继续使用这几个简单的参数来测试3A4000就好了,只是由于3A4000与3A5000架构不同,编译参数有一些适应性的改动。
龙芯3A4000(1.8GHz) SPEC CPU2006 int_base单核实测结果为17.5分,如果折算到2.0GHz就是19.44分,与龙芯官宣的19.1相比仍然超出了不少。因原始测试报告比较冗长,为避免影响阅读,这里只截图其中最重要的部分。
----------------------------------------
3A4000 (1.8GHz)int_base编译参数:

----------------------------------------
3A4000 (1.8GHz)int_base单核测试成绩:17.5。

----------------------------------------
3A4000 (1.8GHz)int_base多核(4线程)测试成绩:55.1。

飞腾D2000的int_base和int_peak测试
测试飞腾D2000更加麻烦一些,我开始时使用与我测试3A5000/4000相似的编译器优化配置参数,但成绩不太理想,在2.3GHz的飞腾D2000上int_base单核得分仅15分。D2000的频率是2.3GHz,如果把成绩折算到FT-2000+/4的2.6GHz才16.96,离网传的17.2分还有差距,和某些网友说的21以上差得更远。然后我单独使用-O2和-Ofast参数进行测试,测试成绩仅分别为13.6和14.4,证明我使用的编译优化参数确实有效,但效果又不明显。
然后我请求声称实测超过21分的几位网友给予帮助,希望他们提供优化参数,但他们要么缄口不言,要么答非所问,要么把我拉黑,于是此事搁浅!后来有网友给我提供了一份疑是“飞腾官方泄露”的测试SPEC CPU2006用的CFG配置文件。我看到这个配置文件的第一眼,就几乎立即相信了这是官方的CFG文件。从下面的局部截图可以看到,这个文件用于64核的FT-2000+,因为FT-2000+和4核的桌面版本FT-2000+/4以及8核的D2000都是相同的CPU核心,因些这个配置肯定是对D2000有效的。

同时我也发现这个配置文件中,对FP(浮点性能测试)可能启用了一些特殊优化的库文件。在base/peak编译配置的共用部分,一些测试浮点性能的子项单独配置了库文件的搜索路径,这些配置也加入了编译参数中。我不知道这些文件夹下有些什么库文件,也没有渠道得到它们,因此如果测试浮点性能,那么我的测试结果可能会比较差。不过本次我只打算测试整数性能,那么无论这些定向优化的库文件是否存在,都不会影响测试。

上面就是存放某些定向优化的库文件的路径(部分),好在从配置文件来看,这此库文件与整数性能测试无关。
这个CFG文件中对peak(峰值)测试的优化配置参数十分复杂,我只能感叹编写者对GCC的熟悉,以及对测试出高分的执着,而不敢对那些参数设置改动半分。不过幸好base(基本)测试的编译配置还在我能理解的范围内,不至于太伤我的自尊。
使用这个CFG文件测试出的飞腾D2000的int_base单核成绩是15.2,比我自己拼凑的优化参数稍高一些。把成绩折算到2.6GHz就是17.2分,也就与传言中的FT-2000/4官方成绩相同,也与知乎上“原来如此”对FT-2000/4的实测成绩相同,只是他测出的龙芯3A4000的成绩和我实测的差距非常大。3A4000仅13.x的单核成绩绝对是负优化的成果,不可能如他文中所说和测试FT-2000/4时使用的优化配置一样。

本文发出之前,有网友在与我测试D2000时相同的环境下,用FT-2000/4实测SPEC CPU2006,分别使用“-O2 -static”和“-O3”参数测试int_base,测试成绩都为16.x,与我测得的D2000成绩换算到2.6GHz后的得分相当。
虽然我测试D2000的单核成绩已经达标,但我并不满意。因为龙芯3A5000/4000官宣成绩都留下了一些冗余,并且是用很简单的优化参数就超过了官宣成绩,那么飞腾D2000的官方优化配置是否也有冗余呢?
经过我的反复尝试,只要对原有参数删、改,测试成绩就一定会降低,哪怕把-O3改成-Ofast也会影响原有参数的平衡性,使总成绩降低。增加参数有的不影响,有的会使成绩降低!对于这种浑然一体、无懈可击的优化配置,我只能感叹自己能力不足,无法测试得到更好的成绩。最后只好聊胜于无地把“-march=arm8……”改成了“-march-arm8.1……”,再换了两根时序更好的内存条,以此表达我最后的倔强!测试结果大概……也许……可能对小数点两位之后的成绩有影响,四舍五入后到十分位还是一样,仍然只有15.2,折算到2.6GHz还是只有17.2。
飞腾D2000 (2.3GHz) int_base编译参数:

----------------------------------------
飞腾D2000 (2.3GHz) int_peak编译参数:

----------------------------------------
飞腾D2000 (2.3GHz) int_base和int_peak单核测试成绩:15.2和15.7。

----------------------------------------
飞腾D2000 (2.3GHz) int_base和int_peak多核(8线程)测试成绩:

虽然飞腾D2000的频率和龙芯3A5000差距很小,但实测单核性能比1.8GHz的3A4000还要低,而FT-2000/4虽然频率比3A5000更高一些,但用D2000测试结果换算得到的FT-2000/4的成绩也仍然低于1.8GHz的3A4000。D2000测得的15.2的测试成绩换算到2.6GHz之后为17.2,与网传的飞腾官方成绩以及知乎网友“原来如此”的测试成绩完全一样。D2000的bese和peak测试成绩非常接近,从编译参数的复杂度就能看得出,已经尽力了,就是这个样子!为了便于比较,下面把它们的成绩放到一起看一看。其中FT-2000/4的多核成绩,如果用D2000的8核int_base成绩除2后再折算就只有48,可能比实际成绩低,因此这里直接用官方公布的55分的成绩。不知道这个55分是base还是peak,我就把它当成base来用吧。另外3A5000的多核成绩也直接使用官方公布的80分成绩,因为我自己测试的int_base多核成绩才79.x,还有一点点差距。按照3A4000的单核与多核性能比例来算,3A5000多核int_base应该有83以上才对,可能龙芯LoongArch的系统优化还没有完全放出来吧!

FT-2000/4与3A4000同样是4个核心,无论单核性能还是多核性能,3A4000都完胜。FT-2000/4的主频是2.6GHz,3A4000的主频仅1.8GHz。飞腾最新的D2000频率不升反降,单核性能更是完败于3A4000。3A5000主频率仅比D2000高了0.2Ghz,单核性能却高了75%。多核性能方面,3A5000的4个核心与D2000的8个核心仅有6%的性能差距。由于单核性能远胜,3A5000在桌面应用中实际表现也会超过D2000。这是龙芯多年致力于提高CPU核心设计水平,增强单核同频性能带来的胜利。
最有意思的还是每GHz的测试成绩,飞腾2015年发布的首款ARM架构的CPU是FT-1500A,这款CPU实测的每GHz的测试成绩也是6.x。现在已经6年了,飞腾的CPU除了工艺和频率不断变化之外,CPU核心几乎没有长进。而龙芯呢,这6年把每GHz的性能翻了一倍,3A5000的CPU核心虽然只是在3A4000的基础上小幅改进,但也有10%的IPC提升。下一代3A6000将会启用新的CPU核心,IPC将会更高,且龙芯的CPU频率也在稳定提升,将会进一步缩小与主流CPU产品的差距。
总之,同样4核的飞腾FT-2000/4和龙芯3A4000相比,2.6GHz的FT-2000/4性能完败于1.8GHz的3A4000。这还不算FT-2000/4是16nm工艺,而3A4000是28nm工艺,工艺水平差了整整十年。而飞腾D2000因为单核性能不升反降,以至于8个核心的整体性能差一点点被4个核心的龙芯3A5000逼平!
龙芯3A4000生存无忧矣!!!
后记
如果说龙芯3A5000的单核性能接近桌面高端CPU产品的一半,那么飞腾D2000就只有1/4的样子,龙芯只要能把CPU频率继续提高,就能与主流产品匹敌。而飞腾要是再不努力提高IPC,CPU频率也不升反降,用64核的CPU战平Intel 2014年的14核产品还沾沾自喜,整天搞飞腾“电竞主机”这类宣传噱头,不知道将来拿什么去面对消费市场挑剔的顾客!
本文所有测试的测试报告原始文件,因文中不便贴链接,若有需要,可以留言中留下邮箱索取。
[转帖]面对龙芯3A5000的逼迫,3A4000要为生存抗争!的更多相关文章
- 【转帖】龙芯将两款 CPU 核开源,这意味着什么?
龙芯将两款 CPU 核开源,这意味着什么? https://www.oschina.net/news/78316/loongson-open-source-two-cpu-core 文章挺不错的 也讲 ...
- 【转帖】龙芯3A3000处理器深度评测:和Intel、AMD差距巨大
龙芯3A3000处理器深度评测:和Intel.AMD差距巨大 https://www.eefocus.com/mcu-dsp/424623/r0 作者非计算机科班毕业 让我汗颜. 我计算机毕业都不知道 ...
- [转帖]龙芯3A4000处理器实测:28nm工艺不变 性能仍可提升100%以上
龙芯3A4000处理器实测:28nm工艺不变 性能仍可提升100%以上 http://news.mydrivers.com/1/663/663122.htm 龙芯是中科院下属的计算机所研发的自主产权国 ...
- [转帖]你不曾见过的国产CPU:可能是最全的龙芯系列芯片家谱(下)
你不曾见过的国产CPU:可能是最全的龙芯系列芯片家谱(下) https://www.ijiwei.com/html/news/newsdetail?source=pc&news_id=7177 ...
- [转帖]统一操作系统 UOS 龙芯版上线
统一操作系统 UOS 龙芯版上线 看评论很有必要 搞一波 深度的操作系统了https://www.oschina.net/news/112065/chinauos-with-loongson?p=4 ...
- [转帖]国产统一操作系统UOS龙芯版正式上线
国产统一操作系统UOS龙芯版正式上线 2019/12/13 12:49:31来源:IT之家作者:骑士责编:骑士评论:446 https://www.ithome.com/0/462/725.htm ...
- 【PC桌面软件的末日,手机移动端App称王】写在windows11支持安卓,macOS支持ios,龙芯支持x86和arm指令翻译
面对这场突如其来的变革,作为软件开发者,应该如何选择自己今后的发展方向?桌面软件开发领域还有前景吗? 起源 自从苹果发布m1处理器,让自家Mac支持IOS移动端app运行之后,彻底打破了移动端app和 ...
- 龙芯fedora28日常生存指南
2021-01-30 v0.0.5 从0.0.1开始改了非常多,一月余时间的花费渴望为其他人提供一点帮助,能够快速上手. 这主要是这一年来我从3B1500到3A4000再到福珑2的日常使用记录,是之前 ...
- 龙芯 loongnix20 rc2 初体验
2021-07-24 v0.0.1 版权声明:原创文章,未经博主允许不得转载 3A5000 昨天发布啦,历史上的昨天是中共一大的第一天. 3A5000 的团购还没开始(大概还是3999左右整机的样子) ...
- 测试龙芯 LoongArch .NET之 使用 FastTunnel 做内网穿透远程计算机
龙芯3A5000 已经上市,与龙芯3A5000配套的三大编译器GCC.LLVM.GoLang和三大虚拟机Java.JavaScript..NET均已完成开发,从老伙计哪里搞来一台3A5000 机器,安 ...
随机推荐
- 云图说|新一代Serverless应用托管引擎——CAE
本文分享自华为云社区<云图说|新一代Serverless应用托管引擎--CAE>,作者:阅识风云. 开发运营一个应用软件,面临种种挑战:软件栈厚重.开发上线慢.资源易浪费.运维投入高.突发 ...
- Mock服务设计与实现:MySQL驱动字节码修改增强
摘要:华为导流测试平台通过对线上流量回放到被测环境中,利用线上真实流量进行充分测试,保证业务系统稳定上线.但是业务在导流测试过程中现网数据库往往难以同步到测试环境,导致现网数据无法正常回放,测试价值降 ...
- 华为中国生态大会2021举行在即,GaussDB将重磅发布5大解决方案
摘要:企业数字化转型如火如荼,云成为数字化与新基建的关键要素,数据成为智能时代新的生产资料和企业数字化的生命,而数据库则是支撑数据生命线的底座. 本文分享自华为云社区<华为中国生态大会2021举 ...
- 设备如何使用go sdk轻松连接华为云IoT平台?
摘要:本文介绍使用huaweicloud-iot-device-sdk-go 连接华为云IoT平台,实现简单的华为云文档介绍的四个功能:设备连接鉴权.设备命令.设备消息和设备属性. 本文分享自华为云社 ...
- 一文读懂火山引擎A/B测试的实验类型(1)——编程实验
一. 概述 编程实验:指的是通过代码编程进行AB实验,广泛使用于前端优化.策略优化和后端算法优化多种实验场景,包含客户端和服务端实验. 前置条件:接入客户端SDK或者服务端SDK,详见:应用接入 二. ...
- 一文快速了解火山引擎 A/B 测试平台
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 一. 概述 A/B Testing 作为因果推断的「黄金标准」,是效果评估的利器. 火山引擎 A/B 测试(Dat ...
- Linux 创建新用户
添加用户组[root@VipSoft ~]#groupadd admin 添加用户[root@VipSoft ~]#useradd jimmy -m -d /home/jimmy -g admin 修 ...
- Java 网络编程 —— 基于 UDP 的数据报和套接字
UDP 简介 UDP(User Datagram Protocol,用户数据报协议)是传输层的另一种协议,比 TCP 具有更快的传输速度,但是不可靠.UDP 发送的数据单元被称为 UDP 数据报,当网 ...
- 【Java 进阶】Java8 新特性的理解与应用
[进阶]Java8新特性的理解与应用 前言 Java 8是Java的一个重大版本,是目前企业中使用最广泛的一个版本. 它支持函数式编程,新的Stream API .新的日期 API等一系列新特性. 掌 ...
- 【AcWing】第6场周赛 B题 3734. 求和 (思维)
AcWing 3734. 求和 其实这道题并不难,只是思维性很强! 因为 \(a\) 的各个数位不包含除了 \(4\) 和 \(7\) 以外的其他数字. 仔细观察数据会发现因为 \(1\le l \ ...