
SPEC是标准性能评估公司(Standard Performance Evaluation Corporation)的简称。SPEC是由计算机厂商、系统集成商、大学、研究机构、咨询等多家公司组成的非营利性组织,这个组织的目标是建立、维护一套用于评估计算机系统的标准。
SPEC CPU 2006是SPEC组织推出的CPU子系统评估软件最新版,在早些年,业界使用的是其上一个版本SPEC CPU 2000。和SPEC CPU 2000一样,SPEC CPU 2006包括了CINT2006和C FP2006两个子项目,前者用于测量和对比整数性能,而后者则用于测量和对比浮点性能,SPEC CPU 2006中对SPEC CPU 2000中的一些测试进行了升级,并抛弃/加入了一些测试,因此两个版本测试得分并没有可比较性。
SPEC CPU测试中,测试系统的处理器、内存子系统和使用到的编译器(SPEC CPU提供的是源代码,并且允许测试用户进行一定的编译优化)都会影响最终的测试性能,而I/O(磁盘)、网络、 *** 作系统和图形子系统对于SPEC CPU2006的影响非常的小。
An ounce of honest data is worth a pound of marketing hype(一盎司诚实的数据值得一磅的市场宣传)是SPEC组织成立的座右铭,为了保持数据的公平、可信物握度以及有效,SPEC CPU测试使用了现实世界的应用程序,而不是用循数陆环的算术 *** 作来进行基准测试。SPEC CPU 2006包括了12项整数运算和17项浮点运算,除此之外,还有两个随机数产生测试程序998.sperand(整数)和999.specrand(浮 点),它们虽然也包含在套件中并得到运行,但是它们并不进行计时以获得得分。这两薯蚂顷个测试主要是用来验证一些其他组件中会用到的PRNG随机数生成功能的正确性。各个测试组件基本上由C和Fortran语言编写,有7个测试项目使用了C++语言,而Fortran语言均用来编写浮点部分。
CINT2006包括C编译程序、量子计算机仿真、下象棋程序等,CFP2006包括有限元模型结构化网格法、分子动力学质点法、流体动力学稀疏线性代数法等。为了简化测试结果,SPEC决定使用单一的数字来归纳所有12种整数基准程序。具体方法是将被测计算机的执行时间标准化,即将被测计算机的执行时间除以一个参考处理器的执行时间,结果称为SPECratio。SPECratio值越大,表示性能越快(因为SPECratio是执行时间的倒数)。CINT2006或CFP2006的综合测试结果是取SPECratio的几何平均值。
一直一来,缺芯少魂一直是中国信息产业的心病,中国的CPU市场也一直被Intel、ARM等国外厂商垄断,龙芯、申威、飞腾等国产CPU在社会上也往往遭到别有用心之徒诸如“打磨芯片”、“骗经费”、“政绩工程”等舆论抨击。不久前,采用申威26010的神威太湖之光在TOP500刷榜,飞腾也公布了采用ARM指令集的飞腾1500A和飞腾2000,龙芯的3A3000也顺利完成流片,那么这些国产CPU的性能到底如何呢?
如何评价CPU
如何评价CPU的性能呢?从体系结构的角度来看,有个指标叫MIPS,即每分钟执行多少条指令,执行指令数量越多,性能就越好,但这存在一个问题,当CPU指令集不同的时候,比较MIPS就意义不大了——比如A一条指令只算一个加法,B一条指令能做一个1024点的FFT。特别是在不同指令集的情况下,如何评价CPU的性能呢?
评价CPU性能必须考虑应用的多样性,比如科学运算重视双精浮点性能,但是如果数据供不上,运算能力再强也没用;比如PC日常使用更偏重于定点性能;再比如计算中心多任务环境关注的是吞吐率......因此单纯用某一个指标来衡量CPU性能是不科学的,必须综合考量。
业界也推出了很多基准测试程序,比如针对CPU的SPEC,针对嵌入式应用的EEMBC等。SPEC测试是比较权威的测试程序。和一些黑箱测试程序调整计分方式和计分权重后测试结果就发旦搜生变化不同,SPEC测试到底跑了什么程序,以及各项程序跑分和计分方式全部公开透明,而御兆且覆盖范围广——SPEC2000有12个定点程序,14个浮点程序,而且有比较强的代表性,比如gzip、vpr、gcc、mef、eon等。而SPEC2006则把定点程序扩展到14个定点程序和16个浮点程序。
在计分方法上,SPEC在计分上采用归一化的几何平均方法来进行综合性能评估——将不同CPU的执行时间与参照对象相比较后得到一个相对值。SEPC2000的参照对象是Ultra SPARC 2工作站的主频为300Mhz的CPU。如果运行测试程序1的时间是参照对象的十分之一的话,测试就是1000分,测试程序2的耗时是参照对象的八分之一的话,则为800分.....最后再算几何平均——比如SEPC2000有12个定点测试,就将12个测试成绩相乘再开12次方,SPEC2006相对于SPEC2000而言仅仅是扩展了几项测试程序,使测试更加科学合理。这里,我们以三星猎户座7420和华为麒麟950为例计算SPEC测试成绩。
以上为两款芯片的跑分成绩,由于两款SOC均是购买ARM的IP授权做集成的产物,猎户座7420的成绩其实是ARM Crotex A57的成绩,华为麒麟950则是ARM Crotex A72的成绩,将12个子项相乘再开12次方后,得到ARM Crotex A57在2.1G主频时定点测试成绩为1376分,换算一下就是655/G,ARM Crotex A72的定点成绩则为749/G。
不过SPEC也非尽善尽美,测试存在容易受编译器影响的问题。举例来说,SUN曾经通过编译器优化提升SPEC跑分50%,龙芯的某一代产品也曾用自主研发的LCC编译器,比使用GCC定点跑分提升了60%。另外,即便同样是GCC编译器,不同版本的GCC编译器下,测试成绩也会有很大差异。笔者认为,出现这种现象的根源并非SPEC测试的缺陷,反而用事实说明了,最后的用户体验是软件+硬件的结果,充分说明了软硬件磨合的重要性。
可能有的读者对不明白什么是编译器,在此说明一下,程序员在编程的时候写的是编程语言,但是计算机运行的时候是机器语言,编译器就是将程序员的编程语言翻译成机器语言的工具。
龙芯、飞腾、申威和Intel的比较
现在,我们先就龙芯和飞腾的桌面芯片与Intel的CPU做比较。由于桌面芯片更加注重单线程性能——单核性能镇迟租是基础,很多程序都依赖单进程的处理速度,如果单核性能上不去,核心数再多也没用,这也是AMD 六核、八核芯片打不赢Intel 四核芯片的原因。另外,对于桌面芯片来说,日常使用中更加倚重定点性能。因此,在这里我们以单线程实际测试的定点成绩做比较。
在编译器为GCC5.2的情况下,Intel I5 4460在3.2G主频下SPEC2006的定点成绩为32分;在编译器为GCC4.4.7的情况下,龙芯3A3000在1.5G主频下的定点成绩为11分;在编译器为GCC4.8的情况下,飞腾1500A在1.8G主频的定点成绩为10分。诚然Intel在编译器上占有一定优势,这里为了方便比较就忽略编译器带来的差异了,就定点性能而已,龙芯3A3000和飞腾1500A的单线程性能大约为Intel I5 4460的三分之一。
差距在哪里呢?主要是在主频上,其次在微结构。龙芯3A3000的主频只有1.5G,飞腾1500A的主频只有1.8G,而Intel I5 4460的主频达3.2G,而且如果需要的话,还能睿频到3.4G,很显然,在主频上龙芯3A3000只有Intel I5 4460的一半不到,而飞腾1500A也只有Intel I5 4460的一半多一点。
微结构也就是常说的CPU核,在主频相同的情况下,两款CPU的性能差异取决于微结构的差异,像龙芯GS464E、Intel的Haswell、ARM的Crotex A72都是微结构。龙芯3A3000在1G主频时,SPEC2006测试定点成绩为7.3,飞腾1500A主频为1G时,SPEC2006测试定点成绩为5.5,而I5 4460在1G主频时的定点成绩为10。可以说,龙芯的GS464E大约有Intel的Haswell性能的73%,而飞腾的FTC660大约是Intel的Haswell性能的55%。
那么如何提升主频和微结构呢?提升微结构需要在指令分支预测,寄存器重命名,多指令通路,乱序发射,功能部件,访存性能等方面做文章,目的是使整个的指令流水的效率尽可能高,因为如果有一个环节设计不好或不匹配的话,整个系统效率就发挥不出来,这是CPU的核心技术。提升主频很大程度上要依赖后端设计能力,也就是要指物理层电路的具体优化,包括单元布局、时序优化等放方面下苦功。
接下来就国产服务器CPU与Intel的服务器CPU做比较,以国产服务器CPU中多线程性能最强的飞腾2000为例。在编译器为GCC4.8的情况下,飞腾2000在2G主频的单线程SPEC2006测试成绩为定点12.4,浮点11.3,换算一下飞腾2000的CPU核FTC661的定点成绩为6.2/G,和Intel Haswell 10/G的成绩依旧有不小的差距,由于飞腾2000为64核芯片,在单线程性能相对有限的情况下,依靠核心数量的优势,FT2000的多线程SPEC2006测试成绩为定点570,浮点482,全芯片性能与Intel Xeon E5-2695v3相当,这是非常了不起的成绩。
由于科学计算倚重双精浮点性能,超算芯片的比较中就以双精浮点性能为指标进行,申威26010的双精浮点性能为3T,和Intel目前最好的超算芯片KNL相当,更难人可贵的是这是在制造工艺与Intel相差2代的情况下取得的成绩,这充分体现出申威26010在设计思想上的先进性。
结语
在桌面芯片上,龙芯和飞腾目前最好的桌面四核芯片的单线程定点测试成绩大约为Intel I5 4460的三分之一,虽然和Intel的差距依旧比较大,但目前龙芯和飞腾还没有大型游戏等对CPU性能要求较高的软件应用,现在的性能对于绝大多数应用来说都是够用的,特别是对党政军办公电脑和一体机,龙芯3A3000和飞腾1500A的性能已经属于性能过剩了,只要软件跟得上,在党政军领域能替换Intel的CPU。
在服务器CPU上,飞腾2000虽然在单线程性能上和Intel有一定差距,但其全芯片性能颇为不俗,能与Intel Xeon E5-2695v3相当,已经是全球全芯片性能最强的ARM服务器CPU,如果ARM等国外厂商能完善其服务器CPU的软件生态,飞腾则有可能借着ARM的生态一飞冲天。
在超算芯片上,申威26010完全可以和Intel最好的加速KNL硬碰硬的较量。
出品:科普中国
制作:铁流
监制:中国科学院计算机网络信息中心
“科普中国”是中国科协携同社会各方利用信息化手段开展科学传播的科学权威品牌。
本文由科普中国融合创作出品,转载请注明出处。
首页博客
研修院
VIP
APP
问答
下载
社区
推荐频道
活动
招聘
专题
打开CSDN APP
Copyright © 1999-2020, CSDN.NET, All Rights Reserved
打开APP
SPEC CPU2006 安装遇到的问题 原创
2018-11-14 15:57:19
4点赞
xiao_huocai
码龄8年
关注
由于兼容性问题SPEC CPU2006中自带的install.sh运行不了,需要重新编译源代码,进入/tool/src目录,运行buildtools文件。
遇到的问题
lib/getline.h:31:1: error: conflicting types for 'getline’
错误原因:函数冲突,stdio.h已经定义了getline,SPEC CPU2006也定义了。
解决方案:
打开./tools/src/specmd5sum/md5sum.c,注释掉getline.h头文件(38行)。
error building Perl
错误原因:高版本Linux内核删除了asm/page.h,配置perl时需要用到数学库。
解决方案:
打开./tools/src/perl-5.8.8/ext/IPC/SysV/SysV.xs文件,注释asm/page.h头文件(7行)
打开./tools/src/buildtools文件,在编译perl的代码部分(第333行和334行)做如下修改
修改前
LD_LIBRARY_PATH=`pwd`
DYLD_LIBRARY_PATH=`pwd`
export LD_LIBRARY_PATH DYLD_LIBRARY_PATH
./Configure -dOes -Ud_flock $PERLFLAGS -Ddosuid=undef -Dprefix=$INSTALLDIR -Dd_bincompat3=undef -A ldflags=-L${INSTALLDIR}/lib -A ccflags=-I${INSTALLDIR}/include -Ui_db -Ui_gdbm -Ui_ndbm -Ui_dbm -Uuse5005threads testordie "error configuring perl"
1
2
3
4
1
2
3
4
修改后
LD_LIBRARY_PATH=`pwd`
DYLD_LIBRARY_PATH=`pwd`
./Configure -Dcc="gcc -lm" -Dlibpth='/usr/local/lib64 /lib64 /usr/lib64'誉码颂 -dOes -Ud_flock $PERLFLAGS -Ddosuid=undef -Dprefix=$INSTALLDIR -Dd_bincompat3=undef -A ldflags=-L${INSTALLDIR}/lib -A ccflags=-I${INSTALLDIR}/include -Ui_db -Ui_gdbm -Ui_ndbm -Ui_dbm -Uuse5005threads testordie "error configuring perl"
1
2
3
1
2
3
Undefined reference to pow
错误原因:编译perl测试程序时,连接庆郑数学库错误。
解决方案:
在上面第2个问题的./Configure前加上
export PERLFLAGS="-A libs=-lm -A libs=-ldl"
1
1
You haven’t done a “make depend” yet!
错误原因:perl makedepend时调用的/bin/sh连接到dash shell,但是Debian和Ubuntu系统默认的dash有BUG。(服气。。。。 )
解决方案:
sudo rm /bin/sh
sudo ln –s /bin/bash /bin/sh
1
2
1
2
打开CSDN,阅读体验更佳
SPEC安装攻略
经典的SPEC安装攻模陆略,免费送给大家。对SPEC有兴趣探讨的欢迎联系
spec2006 使用报错
spec 报错有: 1编译时报错 specmake build 2>make.err | tee make.out /usr/bin/gcc -c -o av.o -DSPEC_CPU -DNDEBUG -DPERL_CORE -O2 -fno-strict-aliasing -DSPEC_CPU_LP64 -DSPEC_CPU_LINUX_X64 av.c ...
继续访问
最新发布 CPU计算性能speccpu2006的测试方法及工具下载
SPEC CPU2006是SPEC组织推出的CPU子系统评估软件,重点测试系统的处理器、内存子系统和编译器。 SPEC CPU2006包括了CINT2006和CFP2006两个子项目,前者用于测量和对比整数性能、包含12个不同的基准测试,而后者则用于测量和对比浮点性能、包含17个不同的基准测试。
继续访问
(2) 我的结果- spec2006中精确的simulation points运行点
spec06中获取simpoints的环境说明: spec的版本号为spec2006v1.0使用ref input with runspec100millions为周期生成的simpoints使用脚本为$GEM5_DIR/build/ALPHA/gem5.fast --outdir=$OUTPUT_DIR $GEM5_DIR/configs/example/sp...
继续访问
spec cpu 2006
编译和运行 参考:http://blog.csdn.net/wangwcnl/article/details/46227935 或者官方版:(注意路径替换为本地路径) file:///L:/cpu2006-1.2/Docs/install-guide-unix.html 注意,2006 只有用gcc4 编译 切换gcc版本参见上一篇 一些需要安装的东西 sudo apt-get i...
继续访问
linux spec cpu,安装SpecCPU2006 on Linux of CentOS6.3, gcc4.4.7
由于在tools/bin目录中只有ia64-linux,所以在直接运行./install.sh脚本时,系统会提示直接重新安装tools工具集。该过程如1.1.1所示。另外一个做法就是指定可用的现成的工具集,例如linux-suse101-AMD64,首先在CPU2006/tools/bk_bin目录中选择合适的工具集并拷贝到CPU2006/tools/bin目录中,(当前以linux-suse10...
继续访问
关于CPUSPEC2006中的447、483benchmark编译错误的解决方案
在配置文件中进行修改 在483后面加上红色内容 将447添加到Portability Flags – FP中 我用的config是linux-32-i386-gcc42.cfg ##################################################################### #Portability Flags - INT
继续访问
SPEC2006详细参数和测试过程常见问题处理总结(附实例 *** 作)
本文主要是使用SPEC2006在ARM平台进行测试,用的Linux系统为Debian,通过具体 *** 作实例讲述测试过程,SPEC2006是SPEC新一代的行业标准化的CPU测试基准套件。重点测试系统的处理器,内存子系统和编译器。这个基准测试套件包括的SPECint基准和SPECfp基准。其中SPECint2006基准包含12个不同的基准测试和SPECfp2006年基准包含19个不同的基准测试。SPEC设计了这个套件提供了一个比较标准的计算密集型,高性能的跨硬件的CPU测试工具。1、搭建系统环境;子项目。...
继续访问
linux运行在RISC上面,linux - 如何在riscv64 linux上运行SPEC CPU 2006? - 堆栈内存溢出...
我有一个使用qemu模拟运行的riscv64 linux(fedora 28)。[gqb@stage4 cpu2006]$ uname -aLinux stage4.fedoraproject.org 4.19.0-rc8 #1 SMP Wed Oct 17 15:11:25 UTC 2018 riscv64 riscv64 riscv64 GNU/Linux我的gcc版本是7.3.1 20180...
继续访问
Spec2006 编译错误 md5sum.c: conflicting types for ‘getline‘
参考:getline conflicting 问题来源: spec2006 编译的过程中出现如下错误 In file included from md5sum.c:38:0: lib/getline.h:31:1: error: conflicting types for 'getline' /usr/include/stdio.h:675:20: note: previous declaration of 'getline' was here lib/getline.h:34:1: error: c
继续访问
新建NDK项目可以,导入新的NDK项目就报错!Android NDK开发之Error configuring.
原因:CMake无法找到与“Ninja”对应的构建程序(CMake Error: CMake was unable to find a build program corresponding to "Ninja".) 方式一(简单): 配置Ninja 的环境,成功配置的链接(https://www.jianshu.com/p/474f8c29936f) 方式二(需要下载gradle...
继续访问
speccpu2017 500.perlbench 和600.perlbench报错
在speccpu2017运行intspeed和intrate时,遇到600和500测试用例报错。 报错内容如下: 报错内容如下: **************************************** *** Miscompare of test.outfor details see /home/speccpu2017/benchspec/CPU/500.perlbench_r/run/run_base_test_PCLtest-64.00...
继续访问
SPECCPU2006 Spec2006 使用说明
http://www.vimlinux.com/lipeng/author/penglee5.html Spec2006使用说明 五 10 十月 2014 Bypenglee 工具介绍 SPEC CPU 2006 benchmark是SPEC新一代的行业标准化的CPU测试基准套件。重点测试系统的处理器,内存子系统和编译器。这个基准测试套件包括的SPEC...
继续访问
SPEC CPU2006测试
SPEC CPU2006测试
继续访问
gem5: 可运行的spec2006 benchmark总结
gem5中运行spec2006的环境: ALPHA架构; 需要通过alpha交叉编译工具链编译spec2006; 需要设置静态编译环境,优化选项-static; 准备benchmark运行所需要的exe和input,最好将他们全部放在一个文件夹中; 本文采用ref数据集,实际上有些测试集需要all里面的数据; 根据gem5中运行spec2006的步骤设置好benchmark运行环境后,即可逐个测试b
继续访问
SPEC CPU2006工具使用问题glob
出现glob.c:(.text+0x50c): undefined reference to `__alloca'等问题解决方案 https://blog.csdn.net/weixin_40556448/article/details/107344484
继续访问
热门推荐 教你如何使用SPEC CPU2006
因为工作原因陆陆续续接触到SPEC的测试,由于此项测试相对门槛高一些,测试周期长,网上靠谱的资料不多,遂将自己的测试经验总结下来跟大家分享。 本文只涉及到一些基本的测试知识,欢迎有经验的朋友补充,交流~ 0 工具介绍 SPEC是标准性能评估公司(Standard Performance Evaluation Corporation)的简称。SPEC是由计算机厂商、系统集成商、大学、研究机构、咨询等多家公司组成的组织,这个组织的目标是建立、维护一套用于评估计算机系统的标准。 在早些年,业界使用的是其.
继续访问
SPEC CPU2006
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)