摘要:本文通过分析龙芯处理器的体系架构、指令集的特点,基于龙芯的硬件平台和Linux操作系统的兼容性,提出一套全面测试龙芯处理器性能的方法,以实际测试龙芯2F处理器为例,获得测试结果,客观评价龙芯处理器的性能,对于军用计算机国产化具有重要意义。
0 引言
随着军事技术的发展,武器装备国产化已经成为我国军事现代化的重要进程。处理器是现代各种计算机设备的,武器装备国产化首先是处理器的国产化。
目前国内拥有自主知识产权的高性能处理器主要有中科院的龙芯系列处理器和国防科大的飞腾系列处理器。拥有自主知识产权的高性能通用处理器对于我国的国家安全和经济发展都具有非常重要的意义。
由于处理器之间体系结构、指令集、流水线等方面的差异,使得对处理器性能的评判标准有所不同。因此,如何客观评价CPU的性能指标,已成为军用计算机领域中的重要课题。
龙芯处理器主要包括三个系列,分别面向不同的功能应用。龙芯2F处理器是龙芯系列处理器中目前为成熟稳定、应用为广泛的一款处理器。龙芯2F处理器是实现64 位MIPS-Ⅲ指令集的通用RISC 处理器,其指令流水线每个时钟周期取四条指令进行译码,并且动态地发射到五个全流水的功能部件中。本文的测试方法以龙芯2F为研究对象,该方法同样适用于龙芯系列其余型号的处理器。
1 国内外主流性能测试方法
目前流行的CPU 性能测试方法有SuperPI、CPU-Mark、Kernbench等等,这些测试工具主要是针对处理器某一方面的特性而开发的,而且大多只能运行在Windows操作系统下。例如SuperPI是由东京大学开发的一款测试软件,通过计算圆周率的位数来测试CPU的性能。
龙芯处理器是基于MIPS-Ⅲ指令集的,并在其基础上增加部分龙芯特有的指令,因此具有其自身的平台特殊性。Windows不是开源的操作系统,其源代码由微软掌握,无法将其移植到龙芯的硬件平台之上。Linux由于其开源特性,目前已经成为龙芯硬件平台上广泛应用的操作系统,并且可以在PMON下便捷地加载运行。因此这里需要寻找可以在Linux下实现的、能够客观全面测试CPU性能的一套方法。
SPEC CPU2006 是SPEC(标准性能评测组织)开发的专门用于评价CPU 性能的一套基准程序,主要应用于对桌面型和服务器型CPU 的性能评价,其目的是比较不同类型CPU的整点运算和浮点运算性能。SPEC是由计算机业界几十个芯片厂商、计算机系统厂商、研究团体等构成的非营利性组织,其开发的SPEC CPU2006在CPU的性能评价领域具有很大的权威性。
2 龙芯CPU 性能测试
SPEC CPU2006是广泛使用的、计算密集型的基准测试程序,通过测试处理器、内存和编译器性能来评估处理器系统性能。SPEC2006覆盖的应用面非常广阔,包括文件压缩、FPGA 布局布线、编译器、组合优化、国际象棋、文字处理、计算机视觉、编程语言、解释器、数据库、布局布线模拟器、量子动力学、浅水模型、三维势场求解、偏微分方程、三维图形库、计算流体动力学、图象识别/神经网络、地震波传播模拟、计算化学、数论/素数测试等等。龙芯处理器性能测试框图如图1所示。
2.1 SPEC CPU2006基准程序研究
SPEC CPU2006的测试包含两个部分:用于测试处理器整数性能的CINT2006以及测试处理器浮点性能的CFP2006.
CINT2006包含12个测试场景,其中11个用C语言编写,1 个用C++语言编写,表1 详细描述了CINT2006的整型基准程序。
CFP2006包含17个测试场景,其中4个用C++语言编写,3个用C编写,6个用Fortran语言编写,4个用C和Fortran混合编写,表2详细描述了CFP2006浮点基准程序。通过这些场景的测试,可以全面表现处理器的真实计算性能。
2.2 SPEC CPU2006的配置文件的理解和更改
配置文件中包含了许多信息,比较重要的是编译基准程序的指令,例如编译基准程序所要用到的编译器,编译优化选项等,设置如下:
(1)runspec的运行参数,例如:output_format = asc,ps,设置输出文件的格式;tune=base,设置基本测试或是峰值测试;runlist=fp,设置运行的基准程序列表。
(2)specmake编译参数,例如:CC=gcc,指定C编译器;FC=gfortran,指定Fortran编译器;OPTIMIZE=-O2,设置编译时的优化选项。
(3)被测系统软硬件配置描述,例如:hw_model=Loongson 2F;sw_os=Debian.
(4)MD5码的生成。
为了保证测试结果的公正性,测试中采用了数字签名技术。即在编译和运行测试程序时,对测试结果进行校验,从而保证测试结果是从各个基准程序中获得,没有经过人工篡改。编译成功后在配置文件末尾将自动生成以_MD5_开头的一段代码。
2.3 运行SPEC CPU2006
SPEC CPU2006主要由基准程序源文件、脚本管理程序、配置文件以及测试结果文件组成。管理程序中重要的是runspec脚本管理程序,通过它用户可以编译、运行和维护基准程序。运行SPEC的标准命令格式为:
runspec-c default.cfg int,其中default.cfg为配置文件,int则表示运行所有的整型基准程序,也可以指定具体某个基准程序。运行成功后,将在result目录下生成结果和日志文件。
2.4 龙芯2F性能测试结果
SPEC CPU2006 基准测试集分为整型测试包和浮点型测试包,由三种语言编写,因此需要GCC编译器具有编译C、C++和Fortran的能力。GCC早期版本只提供对C/C++的支持,4.0版本之后增加了对Fortran的支持,因此完整运行SPEC CPU2006需要GCC4.0及以上版本。
GCC中Fortran包的正确安装需要多种插件的支持,根据操作系统本身的环境所需的插件不同,其中GMP和MPFR是必要的两个插件,建议选择版本安装。
图2是龙芯2F的整型性能测试结果,图3是浮点型性能测试结果,其中Seconds栏表示运行基准程序的时间,Ratio是终的测试值,每个基准程序运行3次,取中间值。测试结果表明,龙芯2F 处理器性能大致与Intel的低端Pentium4处理器性能相当。
3 结论
文章根据龙芯处理器的体系架构、指令集的特点,基于龙芯的硬件平台和Linux操作系统的兼容性,提出一套全面测试龙芯处理器性能的方法,详细介绍了测试流程,并生成测试结果。客观、全面地评价国产龙芯处理器的性能有助于推进军用计算机的国产化,对于国防建设、信息安全等方面具有重要意义。(作者:李士刚,黄威,张鹏)
友情链接