基于龍芯2號處理器的SPEC 2000測試程序的分析與應用
引言
自主研發(fā)高性能處理器芯片對于經(jīng)濟和國家安全方面具有重要意義。龍芯系列處理器的成功研制填補了我國自主研發(fā)高性能通用處理器的空白,龍芯2號采用先進的結(jié)構(gòu)設(shè)計技術(shù),已躋身于世界一流處理器的行列。SPEC CPU 2000是SPEC(標準性能評測組織)開發(fā)的專門用于評價CPU(中央處理器)性能的一套基準程序,在CPU性能測試領(lǐng)域具有很大的權(quán)威性。
當前,在許多的實際應用中,需要對處理器的性能進行評估,以確定處理器是否可以達到應用的要求,這種評估的結(jié)果需要客觀和準確,這樣才具備可信性。當前針對主流的處理器如Intel的X86處理器的測試方法已經(jīng)有很多,而且這些方法也普遍的經(jīng)過驗證。針對國產(chǎn)龍芯處理器的測試方法還比較的缺乏,因此有必要尋找一種可以客觀評價國產(chǎn)處理器的測試方法。
1 龍芯2E結(jié)構(gòu)分析
龍芯系列處理器是中國科學院計算技術(shù)研究所研制的高性能通用處理器。
龍芯2E處理器是一款實現(xiàn)64位MIPSⅢ指令集的通用RISC處理器,采用了4發(fā)射超標量超流水結(jié)構(gòu),實現(xiàn)了先進的轉(zhuǎn)移猜測、寄存器重命名、動態(tài)調(diào)度等亂序執(zhí)行技術(shù),以及非阻塞的高速緩存和取數(shù)操作猜測執(zhí)行等動態(tài)存儲訪問機制。
龍芯2E的一級Cache由64 KB的指令Cache和64 KB的數(shù)據(jù)Cache組成,片上二級Cache大小為512 KB,均采用四路組相聯(lián)的結(jié)構(gòu)。龍芯2E的基本流水線包括取指、預譯碼、譯碼、寄存器重命名、調(diào)度、發(fā)射、讀寄存器、執(zhí)行、提交等9級。龍芯2E先進的存儲系統(tǒng)設(shè)計可以有效地提高流水線的效率。
2 SPEC 2000測試程序概述
SPEC CPU 2000是SPEC(標準性能評測組織)開發(fā)的專門用于評價CPU(中央處理器)性能的一套基準程序,主要應用于桌面型和服務器型CPU的性能評價,其目的是比較不同類型CPU的整點運算和浮點運算性能。SPEC是由計算機業(yè)界幾十個芯片廠商、計算機系統(tǒng)廠商、研究團體等構(gòu)成的非營利組織,其開發(fā)的SPEC CPU 2000在CPU的性能評價領(lǐng)域具有很高的權(quán)威性。
3 在龍芯2E上使用SPEC 2000進行測試
SPEC 2000由兩套基準程序組成,分別測試CPU的整型運算性能和浮點運算性能。目前龍芯平臺上運行的操作系統(tǒng)以開源Linux為主,因此SPEC 2000的運行需要GCC和Gfortran編譯器的支持。
3.1 SPEC的安裝
首先從軟件包中解壓tar-jxvf SPEC 2000.tar.bz2,進入SPEC 2000根目錄運行install.sh進行安裝,安裝完成后運行./shrc啟動SPEC程序,最后敲入命令runspec-V,如能正確顯示SPEC工具版本信息,則說明安裝成功。
3.2 SPEC的運行
SPEC CPU 2000基準主要由基準程序源文件、腳本管理程序、配置文件以及測試結(jié)果文件組成。管理程序中最重要的是runspec腳本管理程序,通過它用戶可以編譯、運行和維護基準程序。典型的runspec用法是:
runspec-c default.cfg int 其中:default.cfg為配置文件;int則表示運行所有的整型基準程序。
3.3 配置文件
配置文件中包含了許多信息,其中最為重要的是編譯基準程序的指令參數(shù),例如編譯時所要用到的編譯器,編譯優(yōu)化選項等,設(shè)置如下:
3.4 MD5碼的生成
為了保證測試結(jié)果的公正性,測試中采用了數(shù)字簽名技術(shù)。即在編譯和運行測試程序時,對測試結(jié)果進行校驗,從而保證測試結(jié)果是從各個基準程序中獲得,沒有經(jīng)過人工篡改。運行成功后在配置文件末尾將自動生成以“MD5”開頭的一段代碼。
3.5 基準程序描述
SPEC2000基準程序存放在/spec2000/benchmark目錄中,其中cint2000目錄存放了12個整形基準程序,cep2000目錄存放了14個浮點基準程序。SPEC2000并沒有完全開放其源代碼,而是開放了其基準程序的代碼,因此運行runspec命令時需要針對基準程序進行編譯,而編譯規(guī)則只能在配置文件中設(shè)定。
SPEC 2000中的基準程序都是從實際應用程序中提取出來的,大多由C語言和Fortran語言編寫,如表1,表2所示。雖然基準程序的設(shè)計來源于真實的應用程序(如gzip和bzip2是Linux系統(tǒng)下的通用壓縮程序,gcc是Linux的默認編譯器),但考慮到其可移植性以及平臺之間的可比較性,基準程序經(jīng)過了一些改動,與實際的應用程序略有不同,兼顧了真實性與通用性。
3.6 測試結(jié)果的生成
SPEC 2000能夠生成多種格式的測試結(jié)果報表,包括asc,ps,raw,pdf,html等格式,報表所在目錄為/spec2000/result。
整形和浮點性能測試結(jié)果分別如表3和表4所示。其中Reference Time表示參考時間,Base Runtime表示實際運行時間,Base Ratio表示比值。其綜合得分為206和168分,是各項基準程序得分的幾何平均值,計算公式如下:
SPECint/fp=GEOMEAN(reftime/runtime*100)
4 結(jié)語
目前,龍芯處理器有三個系列處于并行研發(fā)中。龍芯1號處理器系列主要面向嵌入式應用,龍芯2號超標量處理器系列主要面向桌面應用,龍芯3號多核處理器系列主要面向服務器和高性能機應用。隨著龍芯各系列處理器的不斷研制和發(fā)展,如何客觀評價CPU的性能也逐漸將成為重要的研究課題。本文以SPEC 2000為例,介紹了在Linux操作系統(tǒng)下對龍芯2E處理器進行性能測試的一套方法,對于通用CPU性能的評價具有一定的現(xiàn)實意義。
龍芯處理器作為我國自主研發(fā)的高性能通用處理器,已滲入到嵌入式領(lǐng)域、桌面應用領(lǐng)域以及高性能服務器領(lǐng)域,必將與Intel、AMD等國際知名CPU生產(chǎn)廠商全面抗衡。因此對CPU性能進行客觀、全面的測試不僅可以衡量我國的CPU研制水平,也能夠通過測試比較、總結(jié)出龍芯的優(yōu)勢和不足。相信隨著龍芯平臺性能的不斷提高和周圍軟硬件環(huán)境的不斷完善,龍芯系列處理器的市場競爭力會越來越強,這對于我國形成有自主知識產(chǎn)權(quán)的計算機產(chǎn)業(yè)具有重要意義。