【IT168评测中心】一年一度的盛事即将来临:Intel即将发布新一代的处理器Westmere,首发的仍然是服务器平台版本:Westmere-EP,犹如当年的Nehalem-EP(Intel Nehalem-EP处理器首发深度评测)。稍有不同的是从发布日期上Westmere-EP比Nehalem-EP早了一点,Nehalem-EP是3月31日,而Westmere-EP则会是3月17日。
09秋季IDF:32nm服务器CPU Westmere-EP
不过本文实际上并不是基于Westmere-EP的内容,虽然我们手上已经有了实际产品,不过由于NDA的缘故……接下来我们要展示的是我们为Westmere-EP准备的崭新的SPEC CPU 2006测试环境。关于Westmere-EP可以查阅我们之前发过的众多文章,喜欢新鲜资料的可以看这篇《ISSCC 2010:深入32nm Westmere处理器》,需要注意的是,ISSCC是半导体业界的盛会,因此这篇论文和这篇文章都是偏向于电子电路方面,通常比较难以看懂。
SPEC CPU测试是我们沿用了多年的一个大型CPU性能测试项目。SPEC是标准性能评估公司(Standard Performance Evaluation Corporation)的简称。SPEC是由计算机厂商、系统集成商、大学、研究机构、咨询等多家公司组成的非营利性组织,这个组织的目标是建立、维护一套用于评估计算机系统的标准。除了SPEC CPU之外,我们也使用SPECviewperf等产品来测试工作站/图形卡等领域的性能。
SPEC CPU 2006是SPEC组织推出的CPU子系统评估软件最新版,在早些年,我们使用的是其上一个版本SPEC CPU 2000。和SPEC CPU 2000一样,SPEC CPU 2006包括了CINT2006和CFP2006两个子项目,前者用于测量和对比整数性能,而后者则用于测量和对比浮点性能,SPEC CPU 2006中对SPEC CPU 2000中的一些测试进行了升级,并抛弃/加入了一些测试,因此两个版本测试得分并没有可比较性。
SPEC CPU测试中,测试系统的处理器、内存子系统和使用到的编译器(SPEC CPU提供的是源代码,并且允许测试用户进行一定的编译优化)都会影响最终的测试性能,而I/O(磁盘)、网络、操作系统和图形子系统对于SPEC CPU2006的影响非常的小。
SPEC CPU 2006测试本身的编译就很具有考验性
SPECfp测试过程中同时执行多个实例(instance),测量系统执行计算密集型浮点操作的能力,比如CAD/CAM、DCC以及科学计算等方面应用可以参考这个结果。SPECint测试过程中同时执行多个实例(instances),然后测试系统同时执行多个计算密集型整数操作的能力,可以很好的反映诸如数据库服务器、电子邮件服务器和Web服务器等基于整数应用的多处理器系统的性能。在下一页我们将会粗略地介绍每一子项测试的内容。
测试平台、测试环境 | ||||
测试分组 | ||||
类别 | ASUS RS700-E4服务器 双路Intel Gainestown Xeon X5570 | |||
处理器子系统 | ||||
处理器 | 双路Intel Xeon X5570 | |||
处理器架构 | Intel 45nm Nehalem | |||
处理器代号 | Gainestown(Nehalem-EP) | |||
处理器封装 | Socket 1366 LGA | |||
处理器规格 | 四核 | |||
处理器指令集 | MMX,SSE,SSE2,SSE3,SSSE3, SSE4.1,SSE4.2,EM64T,VT | |||
主频 | 2.93GHz | |||
Turbo Boost主频 (四核心) | 3.20GHz(+266MHz) | |||
Turbo Boost 主频 (单/双核) | 3.333GHz(+400MHz) | |||
处理器外部总线 | 2x QPI 3200MHz 6.40GT/s 单向12.8GB/s(每QPI) 双向25.6GB/s(每QPI) | |||
L1 D-Cache | 4x 32KB 8路组关联 | |||
L1 I-Cache | 4x 32KB 4路组关联 | |||
L2 Cache | 4x 256KB 8路组关联 | |||
L3 Cache | 8MB @ 2668.7MHz 16路组关联 | |||
主板 | ||||
主板型号 | ASUS Z8PS-D12-1U | |||
芯片组 | Intel Tylersburg-EP IOH:Intel 5520(Tylersburg-36D) ICH:Intel 82801JR(ICH10R) | |||
芯片特性 | 2x QPI 36 PCI Express Gen2 Lanes VT-d Gen 2 | |||
内存控制器 | 每CPU集成三通道R-ECC DDR3 1333 | |||
内存 | 4GB R-ECC DDR3 1333 SDRAM x6 | |||
系统磁盘子系统 | ||||
磁盘控制器 | LSI Embedded SoftRAID Controller | |||
磁盘控制器规格 | Intel ICH10R 6x SATA 3Gb/s RAID 0/1/1E/0+1 | |||
磁盘控制器设置 | RAID 1 | |||
磁盘控制器驱动 | OS build-in LSI MegaSR Driver | |||
磁盘 | Seagate Barracuda 7200.11 ST3320620AS x2 | |||
磁盘规格 | 7200RPM 320GB SATA 3Gb/s NCQ 16MB Cache | |||
磁盘设置 | SATA 3Gb/s NCQ 50GB系统分区 | |||
软件环境 | ||||
操作系统 | Microsoft Windows Server 2008 R2 Datacenter Edition (64-bit) |
我们在这台熟悉的服务器中重新进行了SPEC CPU 2006测试,因为SPEC CPU 2006测试和编译器等都有关系。我们安装了最新的Windows Server 2008 R2 Datacentere Edition操作系统(记住R2只有64位版本),安装了Visual Studio 2008 SP1(提供库文件)以及最新的Intel Compiler 11.1.054,并使用了经过多年调整获得的配置文件……
在Nehalem-EP首发评测的时候,我们使用的处理器编译选项是QxS,Intel Compiler 10版本开始对Intel SSE4指令集进行的优化选项,但是实际上还有更细致的优化选项:QxSSE4.2。我们最后就使用了QxSSE4.2。此外,我们没有使用很多SPEC CPU网站发布成绩专用的SmartHeap商业库,这套库文件可以增强测试组件对系统的Heap的利用效率,从而提升最后的应用得分。这个SmartHeap并不是单纯为了SPEC测试而生,实际的应用程序利用其也可以提升运行的性能,这也是它之所以是收费的商业软件的原因。
和其它的测试程序有些不同,SPEC CPU 2006需要大量的系统物理内存,对于SPEC rate_ base测试的每个运算核心最低配置1.5GB内存(某个子项目测试时输入的数据量实际达到了1.7GB每Instance)。
An ounce of honest data is worth a pound of marketing hype(一盎司诚实的数据值得一磅的市场宣传)是SPEC组织成立的座右铭,为了保持数据的公平、可信度以及有效,SPEC CPU测试使用了现实世界的应用程序,而不是用循环的算术操作来进行基准测试。因此,SPEC CPU最重要的是要分清楚不同的子项目。
SPEC CPU 2006包括了12项整数运算和17项浮点运算,除此之外,还有两个随机数产生测试程序998.sperand(整数)和999.specrand(浮点),它们虽然也包含在套件中并得到运行,但是它们并不进行计时以获得得分。这两个测试主要是用来验证一些其他组件中会用到的PRNG随机数生成功能的正确性。各个测试组件基本上由C和Fortran语言编写,有7个测试项目使用了C++语言,而Fortran语言均用来编写浮点部分。
SPEC CPU 2006 v1.0.1测试项目 | |||
---|---|---|---|
子项目 | 语言 | 原型/组件 | 说明 |
整数测试 | |||
400.perlbench PERL编程语言 | ANSI C | Perl v5.8.7 SpamAssassin v2.61 Digest-MD5 v2.33 HTML-Parser v3.35 MHonArc v2.6. 8 IO-stringy v1.205 MailTools v1.60 TimeDate v1.16 | 负载由三个script组成: 主负载是垃圾邮件检测软件SpamAssassin 一个是email到HTML的转换器MHonArc 最后一个是specdiff |
401.bzip2 压缩 | ANSI C | bzip2 v1.0.3 | 负载包括六个部分: 两个小的JPEG图片 一个程序 一个tar包起的几个源程序文件 一个HTML文件 混合文件,包括压缩起来的高可压缩文件及不怎么可压缩的文件 测试分别使用了三个不同的压缩等级进行压缩和解压缩 |
403.gcc C编译器 | C | gcc v3.2 | 对9组C代码进行了编译 |
429.mcf 组合优化 | ANSI C w/libm | MCF v1.2 | MCF是一个用于大型公共交通中的单站车辆调度的程序 429.mcf运行于32/64位模型时分别需要约860/1700MB的内存 |
445.gobmk 人工智能:围棋 | C | 围棋 | |
456.hmmer 基因序列搜索 | C | 使用HMMS(Hidden Markov Models,隐马尔科夫模型) 基因识别方法进行基因序列搜索 | |
458.sjeng 人工智能:国际象棋 | ANSI C | Sjeng v11.2 | 国际象棋 |
462.libquantum 物理:量子计算 | ISO/IEC 9899:1999("C99") | libquantum是模拟量子计算机的库文件,用来进行量子计算机应用的研究 | |
464.h264ref 视频压缩 | C | h264avc v9.3 | 使用两种配置对两个YUV格式源文件进行H.264编码 |
471.omnetpp 离散事件仿真 | C++ | OMNeT++ | 包括约8000台计算机和900个交换机/集线器,以及混合了各种从10Mb到1000Mb速率的大型CSMA/CD协议以太网络模拟 |
473.astar 寻路算法 | C++ | 实现了2D寻路算法A*的三种不同版本 | |
483.xalancbmk XML处理 | C++ | Xalan-C++ v1.8 mod Xerces-C++ v2.5.0 | XML文档/XSL表到HTML文档的转换 |
浮点测试 | |||
410.bwaves 流体力学 | Fortran 77 | 对三维瞬跨音速粘性流中冲击波的模拟计算 | |
416.gamess 量子化学 | Fortran | GMAESS | 三种SCF自洽场计算: 胞嘧啶分子 水和Cu2+离子 三唑离子 |
433.milc 量子力学 | C | MILC | 四维SU(3)格点规范理论的模拟,用来研究QCD量子色动力学、夸克及胶子 |
434.zeusmp 物理:计算流体力学 | Fortran 77/REAL*8 | ZEUS-MP | 用来计算理想、非相对论条件下的流体力学和磁流体力学,434.zeusmp模拟计算了一个统一磁场中的3D冲击波 |
435.gromacs 生物化学/分子力学 | C & Fortran | GROMACS | GROMACS是一个分子力学计算套件,然而也可以用于非生物系统,435.gromacs模拟了在一个水和离子溶液中的蛋白质溶菌酶结构在各种实验手段如核磁共振的X光照射下的变化 |
436.cactusADM 物理:广义相对论 | Fortran 90, ANSI C | Cactus BenchADM | 436.cactusADM对时空曲率由内部物质决定的爱因斯坦演化方程进行求解,爱因斯坦演化方程由10个标准ADM 3+1分解的二阶非线性偏微分方程组成。 |
437.leslie3d 流体力学 | Fortran 90 | LESlie3d | LESlie3d是用来计算湍流的计算流体力学程序,437.leslie3d计算了一个如燃油注入燃烧室的时间分层混合流体。 |
444.namd 生物/分子 | C++ | NAMD | NAMD是一个大型生物分子系统并行计算程序,444.namd模拟了了92224个原子组成的A-I载脂蛋白 |
447.dealII 有限元分析 | C++ w/Boost lib | deal.II lib | deal.II是定位于自适应有限元及误差估计的C++库,447.dealII对非常系数的亥姆霍兹方程进行求解,它使用了基于二元加权误差估计生成非常好的网格的自适应方法,该方程在3维得解 |
450.soplex 线形编程、优化 | ANSI C++ | SoPlex v1.2.1 | SoPlex使用单纯形算法解线性方程 |
453.povray 影像光线追踪 | ISO C++ | POV-Ray | POV-Ray是一个光线追踪渲染软件,453.povray渲染一幅1280x1024的反锯齿国际象棋棋盘图像 |
454.calculix 结构力学 | Fortran 90 & C w/SPOOLES code | CalculiX | CalculiX是一个用于线性及非线性三位结构力学的有限元分析软件,454.calculix计算了一个高速旋转的压缩盘片在离心力的作用下的应力和变形情况 |
459.GemsFDTD 计算电磁学 | Fortran 90 | GmesTD from GEMS | 459.GemsFDTD使用FDTD(有限差分时域)方法求解三维时域中的麦克斯韦方程,计算了一个理想导体的雷达散射截面 |
465.tonto 量子化学 | Fortran 95 | Tonto | Tonto是一个面向对象的量子化学程序包,465.tonto计算面向量子晶体学,它基于一个符合X光衍射实验数据的、约束的分子Hartree-Fock波函数 |
470.lbm 流体动力学 | ANSI C | 470.lbm使用LBM(格子波尔兹曼方法)模拟非压缩流体,它模拟了两种情况:类似活塞推动的剪切驱动流体和管道流体,测试包含了3000个步骤 | |
481.wrf 天气预报 | Fortran 90 & C | WRF v2.0.2 | 481.wrf基于WRF(Weather Research and Forecastin)模型,对NCAR的数据进行了计算,数据包括了UTC 2001.06.11到UTC 2001.06.12以三小时为间隔的数据 |
482.sphinx3 语音识别 | C | Sphinx-3 | 语音识别 |
可以看出,SPEC CPU 2006的测试项目都有着其原来的应用程序版本,整个SPEC CPU 2006测试就包括了多种实际的应用程序的运行性能测试。当然,SPEC CPU是一个测试CPU子系统的程序,因此一些需要读写磁盘的操作部分都已经被修改,使得外部存储子系统和网络系统对测试结果不造成影响,当然,对内存是非常有需求的。为了准备运行在双路六核心超线程的Westmere-EP平台上,我们不得不想方法去搞36GB总量的内存。
SPEC CPU 2006整数运算主要包含编译、压缩、人工智能、视频压缩转换、XML处理等,此外,各种日常操作也主要是基于整数操作。SPEC CPU 2006的整数运算包含了400.perlbench PERL编程语言、401.bzip2 压缩、403.gcc C编译器、429.mcf 组合优化、445.gobmk 人工智能:围棋、456.hmmer 基因序列搜索、458.sjeng 人工智能:国际象棋、462.libquantum 物理:量子计算、464.h264ref 视频压缩、471.omnetpp 离散事件仿真、473.astar 寻路算法、483.xalancbmk XML处理共12项。
SPEC CPU 2006整数性能
SPEC CPU 2006的浮点运算测试包括的全部都是科学运算,科学运算需要用到大量的高精度浮点数据,如410.bwaves 流体力学、416.gamess 量子化学、433.milc 量子力学、434.zeusmp 物理:计算流体力学、435.gromacs 生物化学/分子力学、436.cactusADM 物理:广义相对论、437.leslie3d 流体力学、444.namd 生物/分子、447.dealII 有限元分析、450.soplex 线形编程、优化、453.povray 影像光线追踪、454.calculix 结构力学、459.GemsFDTD 计算电磁学、465.tonto 量子化学、470.lbm 流体力学、481.wrf 天气预报、482.sphinx3 语音识别共17项测试。
SPEC CPU 2006浮点性能
可以看到,数个项目获得了不少的提升,较多的略有提升,一些则是没有变化,还有些得分略有降低。最特别的是462.libquantum 物理:量子计算,从原来的249分一跃成为755分,增幅达203%,433.milc的增幅也有90.7%;整个SPECint_rate_base2006从183提升到215,提升幅度17.5%,浮点则从153提升到了180,提升幅度达到了17.6%,居然和整数提升的幅度的一样。可见使用新的QxSSE4.2编译选项效果还是有的,新的库文件、编译器都发挥了不小的作用。
【IT168评测中心】从SPEC CPU的测试项目可以看出,它主要包含了多个方面的应用,可以较为全面地评估一套系统的处理器具有的性能。我们之前有一个CPU横评,从这里可以详细地对比多款处理器的SPEC CPU 2006性能,只是它们基于旧的测试环境。
增幅接近18%
经过长时间调试得到的新的测试配置更有利于充分发挥出处理器的性能来,在测试中,旧的Nehalem-EP平台获得了17.5%的性能提升,对Westmere-EP的效果更好,可惜由于众所周知的缘故,笔者只能自己暗爽了(Westmere-EP可以并且现在运行在笔者的X58机器上)。
离谜底揭晓还有一段时日,接下来,笔者将会继续带来更多相关的消息,敬请关注。
2007.11,45nm Penryn Xeon发布:
2009.03,45nm Nehalem Xeon发布:
2010.03,32nm Westmere Xeon发布:
???