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成绩的更多相关文章

  1. [转帖]16nm国内最先进 兆芯展示x86 KX-6000八核处理器

    16nm国内最先进 兆芯展示x86 KX-6000八核处理器 https://www.cnbeta.com/articles/tech/847125.htm 在近日的2019北京国际互联网科技博览会暨 ...

  2. [转帖]疑似兆芯开先KX-7000跑分曝光:IPC性能大幅提升

    疑似兆芯开先KX-7000跑分曝光:IPC性能大幅提升 https://www.bilibili.com/read/cv4028300 数码 11-23 1589阅读28点赞22评论 尽管有ARM架构 ...

  3. [转帖]AIDA64 6.10版发布:全面支持中国兆芯、海光x86 CPU

    AIDA64 6.10版发布:全面支持中国兆芯.海光x86 CPU https://www.cnbeta.com/articles/soft/892877.htm 支持国产x86了 作为硬件识别工具领 ...

  4. [转帖]兆芯发布国产X86处理器KX-6000和KH-30000,性能提升达50%,附详情介绍

    兆芯发布国产X86处理器KX-6000和KH-30000,性能提升达50%,附详情介绍 2019-06-20 09:56:38作者:linux人稿源:快科技 https://ywnz.com/linu ...

  5. 在CentOS 7.2下升级gcc编译器的版本

    默认情况下,CentOS 7.2预装的gcc版本是4.8.x,通过执行命令 gcc -v 可以看到,一般情况下这个版本的编译器已经满足需要了,但是某些特殊的时候为了支持C++更高的特性,需要对gcc编 ...

  6. C语言的编译过程、安装gcc编译器以及设置环境变量

    以我对C语言编译过程的了解,我用了一点时间画了一个图,提供给大家参考一下,希望有些能对您的问题提上帮助. 前几天刚初步学习了C语言的编译过程,感触挺深的.在C语言中头文件其实起了一个很大的作用. 1. ...

  7. 利用GCC编译器生成动态链接库和静态链接库

    转载请标明:http://www.cnblogs.com/winifred-tang94/ 1.编译过程 gcc –fPIC –c xxx.c 其中-fPIC是通知gcc编译器产生位置独立的目标代码. ...

  8. GCC编译器编译链接

    在gcc编译器环境下,常见的文件扩展名的含义如下: .c:C源程序,经过预编译后的源程序也为.c文件,它可以通过-E参数输出. .h:头文件 .s:经过编译得到的汇编程序代码,它可以通过-S参数输出. ...

  9. Linux安装gcc编译器详解

    本人使用的是CentOS 6.5 64位系统,由于在安装系统的时候并没有勾选安装gcc编译器,因此需要自行安装gcc编译器. 使用yum安装gcc 对于配备了yum的Linux发行版而言,安装gcc编 ...

  10. GCC编译器使用

    一.GCC简介 通常所说的GCC是GUN Compiler Collection的简称,除了编译程序之外,它还含其他相关工具,所以它能把易于人类使用的高级语言编写的源代码构建成计算机能够直接执行的二进 ...

随机推荐

  1. curl使用小记(一)

    目录 1. 概述 2. 实例 2.1. 访问网页 2.2. 显示头信息 2.3. 保存网页 2.4. 下载图片 2.5. 用户代理设置 2.6. 代理设置 3. 参考 1. 概述 curl也就是com ...

  2. 案例解析关于ArkUI框架中ForEach的潜在陷阱与性能优化

    本文分享自华为云社区<深入解析ForEach的潜在陷阱与性能优化:错误用法与性能下降的案例分析>,作者:柠檬味拥抱 . 在ArkUI框架中,ForEach接口是基于数组类型数据进行循环渲染 ...

  3. 读书笔记丨远程服务调用和RESTful,如何分析和抉择?

    摘要:相信未来REST规范将会变得更加流行和普及. 本文分享自华为云社区<云原生时代,远程服务调用和RESTful,如何分析和抉择?>,作者:breakDawn . 随着云原生的概念越来越 ...

  4. 火山引擎 EMR StarRocks 场景案例分享

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 日前 ,火山引擎数智平台(VeDI)旗下产品 E-MapReduce(简称"EMR")正式上线 ...

  5. 压测工具 wrk

    wrk 是一款针对 Http 协议的基准测试工具,它能够在单机多核 CPU 的条件下,使用系统自带的高性能 I/O 机制,如 epoll,kqueue 等,通过多线程和事件模式,对目标机器产生大量的负 ...

  6. 【论文笔记#2】Farseg++:用于高空间分辨率遥感图像地理空间对象分割的前景感知关系网络

    论文来源 IEEE Transactions on Pattern Analysis and Machine Intelligence 作者 Zhuo Zheng; Yanfei Zhong; Jun ...

  7. CNCF大使预测:2024年云原生面临倦怠、离职及云成本精简

    本文由 CNCF 大使 Eric D. Schabell 撰写,预测2024年云原生领域最可能发生的3大变化,并与其对云原生可观测性领域的见解结合. 关注云原生倦怠 毫无疑问,在 2023 年中云原生 ...

  8. 云网络智慧课堂-Qt程序代码开发规范

    序言: 编程规范可以提升代码可读性,提高可维护性. 目录: 一.命名规范 二.内存管理规范 三.函数方法规范 四.控制语句规范 五.注释规范 六.排版规范 七.版本管理规范 八.界面编程 词义解释:强 ...

  9. 大数相乘 a*b

    //zznu 1562//用数组模拟乘法计算的过程 #include<iostream> #include<stdio.h> #include<string.h> ...

  10. java项目实战-jdbc实现-书城的增删改查-day21

    目录 1. 安装mysql 安装navicate 2. jdbc实现增删改查 1. 安装mysql 安装navicate 参考网上资料 创库 创表 并放入3条测试数据 2. jdbc实现增删改查 bo ...