[转帖]使用GCC编译器实测兆芯KX-U6780A的SPEC CPU2006成绩
https://baijiahao.baidu.com/s?id=1722775453962904303
兆芯KX-U6780A是一款8核2.7GHz的使用x86/AMD64指令集(架构)的国产CPU,于2019年发布。兆芯于2013年成立,不久之后就使用VIA的CPU成品成功申请了“核高基”重大专项,获得“核高基”和上海国资委共70亿人民币投资。它的CPU初始技术是从VIA(台湾威盛)购买,而VIA的CPU都由位于美国的子公司Centaur(半人马)设计。VIA去年(2021)11月把Centaur的CPU设计团队卖给了Intel,但在此之前,2020年10月时就已经再次向兆芯转移设计资料,以2.57亿美元的价格把“部分芯片产品相关技术、数据等知识产权(不含专利权)”卖给了兆芯。
在VIA淡出CPU市场后,Centaur就处于半死不活的状态,可以说是兆芯帮VIA养活了Centaur。可是一回头VIA就一女二嫁,先把花兆芯的钱完成的最新设计高价卖给兆芯,再把设计团队卖给了Intel。除了为了让兆芯有资格设计x86/AMD64的CPU而必须保留的合资者身份之外,在CPU研发层面已经从国产x86的伟大事业中彻底脱身,实在不当人子。
因合作关系发生重大变化,兆芯使用全新核心的CPU从2020年开始就一直推迟,可能要到2024年才能发布产品。在使用新核心的产品问世之前,兆芯只有KX-U6780A是能拿得出手的桌面处理器。
官网介绍KX-U6780A在3.0GHz时,使用ICC(Intel C/C++/Fortrant)编译器在Linux测试SPEC CPU2006的“单任务”int(整数通用性能)成绩是29.2,浮点成绩是38,但未说明是base测试还是peak测试,但据推测兆芯官网上公布的成绩都是peak成绩。

ICC编译器对SPEC CPU2006的部分测试项目和类似的科学计算类程序有专门的优化,特别是对编号为462的测试子项优化水平令其它编译器望尘莫及,但对其它测试子项和普通应用程序的优化水平则达不到相同的程度。又因为ICC对常规应用程序的编译不是很友好,也仅支持x86/AMD64架构,所以各种操作系统和应用软件甚少使用ICC编译器编译。在Windows下C/C++编写的应用软件以使用MSVC和GCC编译器为主,在Linux系统下,各种Linux发行版和应用软件,普遍使用的是GCC编译器。也就是说使用GCC编译器测试的SPEC CPU2006时,最能反映CPU在实际系统和软件环境中的性能水平,而不仅仅是跑分的水平。特别是在跨架构对比CPU性能时,比如ARM与x86/AMD64进行对比时,尽量使用相同的编译器是很重要的条件。因此我打算使用GCC编译器实测KX-U6780A在Linux系统下的通用性能表现,也就是测试整数性能。因精力有限,浮点性能暂不测试,只把测出的整数性能与其它的一些CPU进行横向对比。
在开始测试之前,我先在SPEC官网找了一些同样使用ICC编译器的CPU测试成绩作为参考,看看KX-U6780A的水平如何。事实上在任何的整机宣传资料中都没有见过3.0GHz的KX-U6780A,最高只见到2.7GHz的,我买到的也是2.7GHz的产品。当然3.0GHz的KX-U6780A肯定存在,因为有它的测试成绩,那么此处也使用3.0GHz时的成绩进行对比:
上表中的int表示整数,fp表示浮点,speed是单任务,rate是多任务。可以看出,KX-U6780A在核心数量、内存性能、操作系统性能、编译器版本都明显占优的情况下,“单任务”整数(通用性能)略超Q9650,浮点性能也更胜一筹,但与2015年发布的i5-6400(4核无超线程)相比,KX-U6780A的单任务性能不到i5-6400的一半,即使用8核对比4核,多任务性能也有明显差距。单任务浮点性能仅约i5-6400的44%,多任务浮点性能也远弱于4核的i5-6400。KX-U6780A的浮点性能本次不实测,以后有空再说。
之所以强调“单任务”而非“单核”,是因为SPEC CPU2006的部分测试项目可以通过开启编译器“自动并行化”支持,使单个测试任务在多个CPU核心上并行运行,从而提高总成绩。上面的测试都是开启了“自动并行化”之后的测试成绩,KX-U6780A是8个核心,与4个核的CPU进行对比时天然具有优势条件。
绝大多数桌面应用软件仅在处理少部分任务时会使用多线程,对常规的应用软件通过编译器开启“自动并行化”也是没有效果的,大多数时间的运行状况由CPU单核性能决定。因此下面进行int_base测试时我不会开启“自动并行化”,但进行int_peak测试时我会对编号462的单项开启“自动并行化”,通常“自动并行化”也只会对编号462的单项有效。我测试用的KX-U6780A主频是2.7GHz,因为买不到官方测试使用的3.0GHz版本。具体测试环境如下:
首先看看使用GCC的各种编译优化参数来编译SPEC CPU 2006的整数(通用性能)测试集时,KX-U6780A的单任务int_base性能如何。这里的单任务是没有开启“自动并行化”的,也就是纯粹的单核心成绩。下表中没有列出我测试过的所有参数组合,仅仅是一小部分有代表性的测试结果。
可以看出在使用单一的优化参数时,成绩最好的是-O2,一些在印象中大概率对性能有益的参数,在加上后反而会使总成绩降低。经过反复调整参数,最后还是以-O2为基础配置参数组合,测试得到的成绩最好。
-fno-strict-aliasing这个参数也比较有意思,它本身不属于性能优化参数,主是要用于解决某些c/c++代码与编译器的兼容性问题的,但是加上它之后测试成绩明显降低。仔细对比发现当使用-fno-strict-aliasing参数后,大部分测试项目成绩明显降低,而有几个项目的成绩反而提升了一些。base测试时要求所有测试项目配置的编译“优化参数”必须一致,但因为这个参数不属于“性能优化”参数,所以我就给有提升的项目单独用上了。
反复调优之后得到的int_base成绩也仅仅15.6分,int_peak成绩有17.5分,也比较低。这样的成绩与ICC测试得到的成绩差距很大,但却是合理的,因为这是模拟的普通用户环境的性能表现,而不单单为了跑分。可以把几款CPU的ICC和GCC测试成绩进行对比,看看KX-U6780A的ICC和GCC成绩比例是否与它们差不多:

把KX-U6780A的测试成绩与我实测过的其它CPU对比,则有下面的图表:
上图中除了龙芯3A5000的int_peak成绩之外,其它都是本人实测的结果。把不同CPU的单核成绩折算到相同频率后的结果,可以代表CPU的核心设计水平。从上图可见兆芯与飞腾的CPU核心设计水平是一个梯队,龙芯CPU的核心设计水平则与Intel数年前的产品相当。实际上Intel直到11代酷睿,每GHz的性能也提升不大,但是它的CPU最高频率已经突破了5GHz。国产CPU因为设计团队与代工厂的生产工艺缺乏磨合,后端设计技术和经验积累不足,尚没有任何的量产产品突破3GHz的频率。
假设当前国产CPU的运行频率也都能达到5GHz,那么龙芯的CPU单核性能会与Intel/AMD的产品接近,而兆芯和飞腾的CPU单核性能则只有Intel/AMD的一半。在当前国产CPU的运行频率都只有Intel/AMD最高端产品的一半,龙芯的CPU单核性能也就接近Intel/AMD最高单核性能的一半,而兆芯和飞腾则只有1/4。因此兆芯和飞腾不约而同地通过增加核心数量来弥补单核性能的不足,毕竟增加核心数量要比提高单核性能容易许多。
CPU的多核性能不是单核性能的简单累加,受cache同步、内存访问等影响,核心数量越多,在多核并行时的平均单核性能就越低。我再测试了8个核心的KX-U6780A多核(多任务)整数性能,在测完单核后测多核就简单了,只需要运行测试工具时指定并行运行的实例数量,实例数量通常与CPU核心数量相同。测试得到的int_rate_base成绩为83.2,int_rate_peak成绩为86.7。这个成绩比飞腾的8核D2000略低,但高于4核的龙芯3A5000。
兆芯KX-U6780A的单核测试成绩比飞腾D2000略好,多核并行时成绩又比D2000低一些,说明它的多核互联效率可能要比D2000差一些。以int_base的单核和多核成绩计算多核并行效率如下:
虽然看起来龙芯3A5000的多核并行效率最高,但这并不绝对,因为3A5000只有4个核,另两款CPU都是8核。在测试KX-U6780A多任务成绩时,8核满负载时整机功耗在100W左右,整机中无独显,除主板/CPU/风扇之外,仅两根内存和一个nvme硬盘。在进行相同的测试时,飞腾D2000和龙芯3A5000的整机功耗都是60W左右,而这3款CPU的制程、频率、和全CPU性能都是相差无几的。
再回头看看兆芯KX-U6780A在int_base测试中的各子项成绩,可以看出兆芯KX-U6780A与另外两款国产CPU细致的性能区别:
可以看到在大部分测试项目中,KX-U6780A都和D2000差距微小,只有429.mcf和462.libquantum这两项有较大差距,才使总成绩高于D2000。
我的测试成绩肯定没有达到最优,但自信在相同的测试环境下,无论如何调整编译优化参数,成绩提升的幅度也不会超过10%,大概率连5%都超不过。如果有人认为我的测试环境和编译参数等存在问题,欢迎指正,但拒绝没有依凭、信口开河的指责。除了有权威机构作保的官方或半官方的公开成绩之外,我认为所有的“个人测试”都应试公开相关的软硬件环境、配置参数、以及完整的测试报告。无论测试成绩是高还是低,如果连公开编译参数让其他人复现都不敢,那么这样的“个人测试”就经不起推敲。经不起推敲的“个人测试”成绩我见过不少,有关于龙芯的,也有关于飞腾的,还有关于兆芯的,区别只是测某种CPU的成绩都极差,测其它CPU的成绩都极好罢了。那些测试的共同点是都不提供测试用的编译参数,也不贴出测试报告的截图,甚至有人在测试FT-2000/4时,宁可拿着手机拍摄“测试过程”,也要“保密”配置信息和测试报告。掩耳盗铃、自欺欺人,只会令消费者对所有的国产CPU都失去信心!
对于以个人身份进行的测试,我认为只有公开透明,可以让他人复现测试过程和结果,才能避免争议,经得起推敲。下面贴上我的测试报告:
KX-U6780A使用GCC/Linux测试SPEC CPU2006整数单任务(int_speed_base&peak)性能的测试报告(点击或用新标签页打开图片放大):

KX-U6780A使用GCC/Linux测试SPEC CPU2006整数多任务(int_rate_base&peak)性能的测试报告(点击或用新标签页打开图片放大):

如果上面的测试报告截图看不清,那么可以留言或私信写上电子邮箱,我给你发测试报告的原文件。
[转帖]使用GCC编译器实测兆芯KX-U6780A的SPEC CPU2006成绩的更多相关文章
- [转帖]16nm国内最先进 兆芯展示x86 KX-6000八核处理器
16nm国内最先进 兆芯展示x86 KX-6000八核处理器 https://www.cnbeta.com/articles/tech/847125.htm 在近日的2019北京国际互联网科技博览会暨 ...
- [转帖]疑似兆芯开先KX-7000跑分曝光:IPC性能大幅提升
疑似兆芯开先KX-7000跑分曝光:IPC性能大幅提升 https://www.bilibili.com/read/cv4028300 数码 11-23 1589阅读28点赞22评论 尽管有ARM架构 ...
- [转帖]AIDA64 6.10版发布:全面支持中国兆芯、海光x86 CPU
AIDA64 6.10版发布:全面支持中国兆芯.海光x86 CPU https://www.cnbeta.com/articles/soft/892877.htm 支持国产x86了 作为硬件识别工具领 ...
- [转帖]兆芯发布国产X86处理器KX-6000和KH-30000,性能提升达50%,附详情介绍
兆芯发布国产X86处理器KX-6000和KH-30000,性能提升达50%,附详情介绍 2019-06-20 09:56:38作者:linux人稿源:快科技 https://ywnz.com/linu ...
- 在CentOS 7.2下升级gcc编译器的版本
默认情况下,CentOS 7.2预装的gcc版本是4.8.x,通过执行命令 gcc -v 可以看到,一般情况下这个版本的编译器已经满足需要了,但是某些特殊的时候为了支持C++更高的特性,需要对gcc编 ...
- C语言的编译过程、安装gcc编译器以及设置环境变量
以我对C语言编译过程的了解,我用了一点时间画了一个图,提供给大家参考一下,希望有些能对您的问题提上帮助. 前几天刚初步学习了C语言的编译过程,感触挺深的.在C语言中头文件其实起了一个很大的作用. 1. ...
- 利用GCC编译器生成动态链接库和静态链接库
转载请标明:http://www.cnblogs.com/winifred-tang94/ 1.编译过程 gcc –fPIC –c xxx.c 其中-fPIC是通知gcc编译器产生位置独立的目标代码. ...
- GCC编译器编译链接
在gcc编译器环境下,常见的文件扩展名的含义如下: .c:C源程序,经过预编译后的源程序也为.c文件,它可以通过-E参数输出. .h:头文件 .s:经过编译得到的汇编程序代码,它可以通过-S参数输出. ...
- Linux安装gcc编译器详解
本人使用的是CentOS 6.5 64位系统,由于在安装系统的时候并没有勾选安装gcc编译器,因此需要自行安装gcc编译器. 使用yum安装gcc 对于配备了yum的Linux发行版而言,安装gcc编 ...
- GCC编译器使用
一.GCC简介 通常所说的GCC是GUN Compiler Collection的简称,除了编译程序之外,它还含其他相关工具,所以它能把易于人类使用的高级语言编写的源代码构建成计算机能够直接执行的二进 ...
随机推荐
- GDAL使用PROJ坐标转换相关问题的总结
目录 1. 概述 2. 详论 2.1. 数据 2.2. PROJ库 2.3. 参考 1. 概述 GDAL是使用PROJ进行坐标转换的,但是很容易出现转换不了的问题,这里总结一二,以供参考. 2. 详论 ...
- Java 查找并替换PDF中的指定文本
本文介绍通过Java程序批量替换PDF中的指定文本内容. 1. 程序环境准备如下: 程序使用环境如图,需要注意的是,本文使用了免费版的PDF jar工具:另外JDK版本建议使用高版本更佳. jar ...
- 遇到联邦计算数据碰撞难题怎么办?不妨试一试PSI
摘要:随着MPC.隐私计算等概念的流行,诸多政府机构.金融企业开始考虑参与到多方计算的场景中,扩展数据的应用价值. 本文分享自华为云社区<使用PSI解决联邦计算的数据碰撞问题>,作者:br ...
- 13个VSCode使用技巧,开启高效的开发模式
摘要:VsCode是一款开源的编辑器,拥有强大的功能,.由于拥有各种各样的插件,这就使得VsCode可以做到的事情更多了.在使用的过程中,也是有很多技巧的,掌握一些技巧对于后期写代码也会轻松很多. 本 ...
- Java编程中忽略这些细节,Bug肯定找上你
摘要:在Java语言的日常编程中,也存在着容易被忽略的细节,这些细节可能会导致程序出现各种Bug. 本文分享自华为云社区<Java编程中容易忽略的细节总结丨[奔跑吧!JAVA]>,作者:j ...
- Oracle 删除唯一约束
1.查出有哪些约束 SELECT CONSTRAINT_NAME,CONSTRAINT_TYPE,STATUS FROM USER_CONSTRAINTS WHERE TABLE_NAME ='D_D ...
- Pytest -初识
Pytest Pytest是一个基于Python的测试框架,用于编写和执行测试代码. Pytest的优点 Pytest可以并行运行多个测试,这减少了测试套件的执行时间 Pytest有自己的方法来自动监 ...
- CO01生产订单屏幕增强
一.生产订单客户屏幕新增字段 二.生产订单抬头AUFK表的CI_AUFK中新增屏幕字段 三.CMOD 增强分配PPCO0012 修改0100屏幕,新增对应字段,其中生产订单类型设置为下拉框 EXIT_ ...
- AcWing 每日一题 - 暑假
本篇解题记录题源来自 AcWing 的每日一题 · 暑假 补题链接:Here Week 1 星期四 AcWing 3761. 唯一最小数 利用 map 存出现过数的下标和次数即可 vector< ...
- 2019 篇 - 分享数百个 HT的工业互联网 2D 3D 可视化应用案例
继<分享数百个 HT 工业互联网 2D 3D 可视化应用案例>2018 篇,图扑软件定义 2018 为国内工业互联网可视化的元年后,2019 年里我们与各行业客户进行了更深度合作,拓展了H ...