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