馬 躍,柴安穎,尹震宇,李明時,王春曉,李 鎖
(中國科學院大學,北京 100049) (中國科學院 沈陽計算技術(shù)研究所,沈陽 110168)
自主可控高性能處理器芯片是實施制造強國和網(wǎng)絡強國戰(zhàn)略的重要保障,本文依托“核高基”國家專項形成的CPU等軟硬件成果,開展基于安全可控CPU芯片性能測試與評估,以確保嵌入式處理器的可預測性能.文獻[1]提出一種自底向上的嵌入式Linpack基準測試模型,解決了測試過程中,現(xiàn)有的線性代數(shù)并行化技術(shù)限制處理器發(fā)揮最優(yōu)性能的問題[1].文獻[2]提出了一種基于HPL的能耗預測分析模型,將派生模型集成到操作系統(tǒng)或隊列管理器的調(diào)度程序中,高效完成了目標體系結(jié)構(gòu)能量消耗及性能評估工作[2];文獻[3]以基準表征技術(shù)為核心,研究分析EEMBC嵌入式基準測試套件的壓力點,驗證了基準測試對處理器性能評估的完整性和準確性[3];文獻[4]針對LoadRunner不能真實反映用戶體驗時間,無法直接用于基于國產(chǎn)CPU/OS的信息系統(tǒng)的問題,提出基于LoadRunner和JMeter的國產(chǎn)信息系統(tǒng)性能測試方案,大大提高了測試精準度[4];文獻[5]通過分析大規(guī)模Linpack時間開銷,建立一種并行性能模型,對矩陣規(guī)模、網(wǎng)絡帶寬、下三角方程求解效率以及矩陣乘法效率的改變對Linpack并行性能具有較好的預估[5];文獻[6]針對六個節(jié)點的集群進行測試,從不同方面將單機與集群的計算性能進行對比,評估集群并行計算性能的優(yōu)越性,證明了集群的并行計算能力在實際地震大數(shù)據(jù)計算中的可靠性與穩(wěn)定性[6].國外針對CPU性能測試推出了如Linpack、EEMBC、SysBench及Dhrystone等基準測試程序,對處理器性能進行評估.Linpack測試通過對稠密線性代數(shù)方程組求解能力的測試,測試不同問題規(guī)模下浮點運算次數(shù),來評價處理器處理性能.EEMBC由5個套件組成,分別用于測試汽車工業(yè)、消費電子、網(wǎng)絡交換、辦公自動化以及電信類領(lǐng)域的CPU性能.SysBench為多線程的Linux測試工具,可以對CPU、內(nèi)存、數(shù)據(jù)庫等多方面性能進行評估.Dhrystone以每秒鐘運行Dhrystone的次數(shù)為指標,通過循環(huán)執(zhí)行主程序次數(shù),來改變CPU運算規(guī)模,測試處理器性能.
但在實際應用過程中,Linpack和EEMBC需要很多l(xiāng)inux標準軟件庫來支撐測試程序的復雜計算,由于當前國內(nèi)各平臺CPU生態(tài)鏈不完善,軟件庫支持欠缺[8],國產(chǎn)系統(tǒng)無法提供Linpack和EEMBC理想的運行環(huán)境.SysBench雖能簡單測試處理器性能,但測試方法更偏向于系統(tǒng)性能測試,無法滿足處理器性能測試的專一性需求.Dhrystone雖然包含了處理器整數(shù)運算、邏輯運算、字符串處理以及存儲器訪問等方面的性能測試,但缺少針對處理器浮點運算測試方法.上述測試基準在國產(chǎn)處理器架構(gòu)下測試結(jié)果并不理想.
基于以上問題,本文提出一種基于收斂策略的國產(chǎn)CPU性能測試模型,優(yōu)化模型整體架構(gòu),設計起始運算規(guī)模評估模塊,采用三種模塊綜合評估處理器浮點運算性能,提高測試數(shù)據(jù)的準確性[11],分別在龍芯2H1000和北大眾志PKUnity-3-HD65兩種不同指令集架構(gòu)的處理器上進行性能測試,驗證了模型準確性與高效性.
Dhrystone是Reinhold P.Weicker于1984年開發(fā)的一種綜合測試基準程序,是測量處理器運算能力的最常見基準程序之一,逐漸成為通用處理器性能的代表.Dhrystone開發(fā)之初只有100多條語句,測試集包含了整數(shù)運算、邏輯運算、字符串處理以及存儲器訪問等操作,在測試程序中執(zhí)行主程序循環(huán),將處理器執(zhí)行循環(huán)迭代的平均時間作為Dhrystone測試結(jié)果.Dhrystone是人們進行嵌入式系統(tǒng)性能評測的主要性能測評工具,眾多處理器廠商均將其作為測試基準,對處理器進行性能測試并公布測試結(jié)果.
Dhrystone的計量單位為每秒鐘運行Dhrystone的次數(shù),即每秒鐘迭代主循環(huán)的次數(shù),之后規(guī)定以VAX-11/780機器上1757 Dhrystones/s為1 Dhrystone MIPS(DMIPS).Dhrystone為綜合性代碼,測試程序使用靜態(tài)程序模仿處理器大概率執(zhí)行的程序,可移植性強,適用于絕大多數(shù)處理器,在一定程度上能夠反映微處理器運算性能,能作為處理器整數(shù)計算性能的指標.但是Dhrystone存在代碼量過小、數(shù)據(jù)過小的問題,無法更為全面地說明嵌入式處理器性能特征,也無法充分展現(xiàn)國產(chǎn)處理器綜合性能.
Whetstone是評價計算機性能的綜合基準,由H J.Curnow和B A.Wiehmarm于1976年開發(fā),是ALGOL語句混合(statement mix)的一種發(fā)展.在開發(fā)之初,Wichmann在NPL和牛津大學對949個程序進行了分析,得到關(guān)于程序的靜態(tài)和動態(tài)統(tǒng)計數(shù)據(jù),然后計算不同指令出現(xiàn)頻度,設計出的一種合成基準程序.Whetstone的設計綜合了基準測試程序的簡單性和復雜性兩種要求,既具備程序代碼的簡易性,易于跨平臺移植,又不失運算復雜度.另外,該測試基準編譯程序能夠完全利用快速寄存器作為臨時數(shù)據(jù)存貯,實現(xiàn)極高速的運行速度,對科學計算型應用有較強的代表性.
Whetstone基準測試集以處理器測試需求為前提分別劃分了浮點運算、整數(shù)算術(shù)運算、功能調(diào)用、數(shù)組變址、條件轉(zhuǎn)移以及超越函數(shù)等模塊來進行處理器性能測試.主程序單次循環(huán)中各模塊可多次運行,模塊結(jié)構(gòu)和循環(huán)次數(shù)的設計與Wichmann對whetstone指令頻度和案例程序研究成果一致,模塊的每次運行產(chǎn)生不同的結(jié)果,但能保證運算不產(chǎn)生數(shù)值溢出,Whetstone的測試結(jié)果用MWIPS表示,1MWIPS表示機器每秒鐘能執(zhí)行百萬條Whetstone指令.Whetstone以多種運算性能結(jié)果作為處理器最終性能指標,相較于Dhrystone加入浮點運算測試,在處理器性能測試方面更為綜合與精確.但在實際應用過程中,Whetstone在對處理器進行循環(huán)次數(shù)較少的小規(guī)模運算測試時,測試結(jié)果誤差較大,無法體現(xiàn)目標處理器真實性能,在國產(chǎn)處理器測試中難以達到理想效果.
本文以Whetstone基準測試方法為研究基礎(chǔ),優(yōu)化測試模型框架,提出一種基于收斂策略的國產(chǎn)CPU性能測試模型,模型內(nèi)各模塊測試方法均遵循收斂原則,以防止大規(guī)模運算下數(shù)值溢出,設計并加入起始運算規(guī)模評估模塊,提高起始測試數(shù)據(jù)的準確性,采用三種模塊綜合評估處理器浮點運算性能,在確保測試方法的收斂性前提下,保證性能測試的全面性[12].
本文測試模型分為10個主要模塊,圖1為測試模型結(jié)構(gòu)圖.模型最初通過起始運算規(guī)模評估模塊,推算出適合CPU計算規(guī)模的起始大小,然后分別通過8個模塊測試CPU各性能參數(shù),表1為Whetstone測試基準對8個測試模塊每執(zhí)行一次循環(huán)計算應執(zhí)行的計算規(guī)模大小的定義.
在表1中,MFLOP 1、MFLOP 2和MFLOP 3模塊分別測試CPU浮點性能[13],IF MOPS模塊為條件判斷測試,F(xiàn)IXPT MOPS模塊為整型數(shù)運算測試,COS MOPS模塊實現(xiàn)了三角函數(shù)運算測試,EQUAL模塊和EXP MOPS模塊分別實現(xiàn)了過程調(diào)用和標準函數(shù)運算測試.
各模塊將實測計算時間、模型運行總時間、各模塊Whetstone指令執(zhí)行數(shù)量以及模型執(zhí)行Whetstone指令總數(shù)等實測性能參數(shù)傳遞給CPU性能綜合模塊,得出最終評測結(jié)果.Whetstone測試基準以每秒所能執(zhí)行的Whetstone指令數(shù)量(MWIPS)作為衡量CPU性能的綜合標準,以MWIPS為CPU性能標準,實現(xiàn)國產(chǎn)CPU在工業(yè)控制領(lǐng)域的選型及驗證,并通過對比模型中各模塊執(zhí)行時間比率,進一步分析CPU在超過計算閾值后性能迅速下降原因.
圖1 測試模型結(jié)構(gòu)圖Fig.1 Test model structure diagram
表1 各測試模塊介紹
Table 1 Description of each test module
NumberTestModuleFunctionOperationScale1MFLOP1floating12*loop2MFLOP2floatingpoint14*loop3IFMOPSifthenelse345*loop4FIXPTMOPSfixedpoint210*loop5COSMOPSsin,cosetc.32*loop6MFLOP3floatingpoint899*loop7EQUALassignments616*loop8EXPMOPSexp,sqrtetc.93*loop
(1)
MFLOP 1模塊和MFLOP 2模塊為CPU浮點性能測試部分.在MFLOP 1模塊中,E1為模型運算的一元數(shù)組,為運算提供初始數(shù)據(jù),γ為模型計算因子,在測試過程中調(diào)節(jié)大規(guī)模運算下計算結(jié)果的波動范圍.具體實現(xiàn)方法,如公式(2).為提高模型評估精度,本模型將元數(shù)組e1內(nèi)各元素均設為1.0,計算因子γ設為0.4999975,保證了浮點測試方法的收斂性,避免程序因大量循環(huán)計算而出現(xiàn)溢出的現(xiàn)象,使CPU浮點運算得到更好發(fā)揮.MFLOP 2模塊測試思想與MFLOP 1類似,但MFLOP 2模塊運算規(guī)模比MFLOP 1模塊高6倍,且加入?yún)?shù)調(diào)用方法PA(e1[]),調(diào)節(jié)模型對CPU過程調(diào)用測試的比例,來更為精確地評估CPU綜合性能.模型執(zhí)行一次循環(huán)時,MFLOP 1模塊和MFLOP 2模塊運算規(guī)模分別為12*loop和14*loop.
(2)
IF MOPS模塊為模型條件轉(zhuǎn)移測試部分,該模塊測試方法具備模型運算收斂性,通過條件轉(zhuǎn)移語句中變量的特殊賦值,保證測試程序始終在規(guī)定范圍內(nèi)執(zhí)行.圖2為條件轉(zhuǎn)移測試具體實現(xiàn)方案,變量j取值較為固定,每執(zhí)行一次循環(huán)需進行三次條件判斷,該選擇判斷方法構(gòu)成一種閉環(huán)結(jié)構(gòu),使運算過程始終保持收斂,滿足CPU測試中條件轉(zhuǎn)移的性能評估要求.模型執(zhí)行一次循環(huán),該模塊運算規(guī)模為345*loop.
圖2 IF MOPS模塊測試原理圖
Fig.2 IF MOPS module test schematic diagram
FIXPT MOPS模塊為模型定點運算測試部分,該模塊包含整數(shù)基本運算類型,同時包含數(shù)組賦值操作,如公式(3)所示.該測試方法依然遵循基準測試的收斂性原則,針對模塊實現(xiàn)方法中3種參數(shù)運算規(guī)則,將各參數(shù)設定為符合運算收斂性的定值,參數(shù)賦值說明如下,將j賦值為1,k賦值為2,l賦值為3.模型執(zhí)行一次循環(huán),該模塊運算規(guī)模為210*loop.在模型每次循環(huán)中均無算術(shù)溢出現(xiàn)象,既保證了模型整形數(shù)運算量,又在其基礎(chǔ)上避免了模型運行崩潰.
(3)
COS MOPS模塊為模型三角函數(shù)運算測試部分,該模塊測試方案以Whetstone測試基準中數(shù)據(jù)分析結(jié)果為基礎(chǔ),研究模型中arctan、sin及cos三角函數(shù)運算應占運算比例,設計出該計算方法,以三角函數(shù)和反三角函數(shù)作為計算支撐,如公式(4)所示.經(jīng)分析與驗證,在模型循環(huán)計算過程中,將計算因子μ和φ分別設定值為0.49975和1.0,且計算參數(shù)x和y分別設置為1.0,兩項公式最終運算結(jié)果趨近于初值,保證了模型大規(guī)模計算無算數(shù)溢出現(xiàn)象.模型執(zhí)行一次循環(huán),該模塊運算規(guī)模為32*loop.
(4)
MFLOP 3模塊為模型過程調(diào)用測試部分,該模塊包含基準測試中的參數(shù)尋址測試,且補充了性能測試中對浮點運算的評估方法,具體實現(xiàn)在P3()函數(shù)中,如公式(5).該模塊算法本身具有收斂性,將計算因子μ和ρ分T別設定值為0.49975和2.0,同時將參數(shù)x1和y1值賦值為1.0,x1、y1和z經(jīng)過模型循環(huán)計算之后,數(shù)值維持在穩(wěn)定區(qū)間,模型執(zhí)行一次循環(huán),該模塊運算規(guī)模為899*loop.
(5)
EQUAL模塊為模型數(shù)組運算測試部分,該模塊測試方案以Whetstone測試基準所定義的數(shù)組循環(huán)比例為依據(jù),通過調(diào)用P0()函數(shù),完成數(shù)組間相互賦值,從而實現(xiàn)數(shù)組運算的大數(shù)循環(huán),保證了性能測試的全面性,該測試方法具備模型運算收斂性,如公式(6).模型執(zhí)行一次循環(huán),該模塊運算規(guī)模為616*loop.
(6)
EXP MOPS模塊為模型標準函數(shù)運算測試部分,該測試方法包含平方根計算、指數(shù)運算和對數(shù)運算,見公式(7).將模型計算因子σ賦值0.50025,方法參數(shù)x為0.75,當模型進行大數(shù)循環(huán),運算所得結(jié)果維持在較為穩(wěn)定的區(qū)間,模型執(zhí)行一次循環(huán),該模塊運算規(guī)模為93*loop,滿足模型標準函數(shù)運算的測試要求.
(7)
CPU性能評估模塊將以上8個模塊測試所得數(shù)據(jù)進行分析處理,最終得出CPU性能評估結(jié)果.在測試模型中,8個模塊所設計的運算方式,均能夠保證模型算法的收斂性,即使模型迭代量增加,各模塊中運算結(jié)果的收斂曲線依舊趨于平穩(wěn),各計算值都趨于定值,保證了測試的穩(wěn)定性.
本文以基于收斂策略的國產(chǎn)CPU性能測試模型作為測試基準,分別在龍芯2H1000和北大眾志PKUnity-3-HD65兩種不同指令集架構(gòu)下的處理器上進行測試,與Dhrystone所測結(jié)果進行對比,驗證該模型測試方案的全面性與優(yōu)越性[14].
本文通過模型時間評估模塊完成兩款處理器的時間評估,得到CPU測試的運算起始規(guī)模,從而保證測試結(jié)果更為精準[15].在確定運算起始規(guī)模過程中,本文共測試得出5組數(shù)據(jù),每組測試對時間評估模塊運行次數(shù)不同,且每組模塊按100測試次數(shù)遞增,記錄各次CPU運算時間及運算規(guī)模值,最終以該組所有結(jié)果平均值作為模型起始運算規(guī)模值.
在圖3和圖4中,從第一組100次測試所得結(jié)果到第五組500次測試所得結(jié)果趨勢可以看出,龍芯2H1000和北大眾志PKUnity-3-HD65所得運算時間與起始運算規(guī)模評估結(jié)果均較為平穩(wěn),由此可以得出,隨著測試次數(shù)的不斷增加,起始運算規(guī)模結(jié)果維持在一個較為穩(wěn)定的區(qū)間.將5組數(shù)據(jù)的CPU運算時間及運算規(guī)模值取平均值,獲得最終的準確結(jié)果,龍芯2H1000處理器執(zhí)行循環(huán)測試平均時間需0.9588s,并得到起始運算規(guī)模(Init_Loop)不少于1044.8次;眾志PKUnity-3-HD65執(zhí)行循環(huán)測試平均時間需0.8246 s,得到起始運算規(guī)模(Init_Loop)不少于1211.62次.
圖3 起始運算規(guī)模變化圖Fig.3 Initial calculation scale change diagram
經(jīng)綜合評估后,在本次CPU性能測試過程中,為減少測試誤差,保證測試結(jié)果準確性,將兩款CPU起始運算規(guī)模設定為1500,并進行下一步測試工作.
圖4 評估時間變化圖Fig.4 Evaluation time change diagram
運用本文模型進行CPU性能測試,相較于Dhrystone測試基準,該模型加入浮點運算測試部分.以起始運算規(guī)模為最初節(jié)點,選取12個計算節(jié)點,依次提高CPU計算量,測得不同指令集處理器各計算量下MWIPS值.
圖5 模型各計算量下CPU性能變化圖Fig.5 CPU performance change diagram of model under different calculations
圖5為各處理器綜合性能隨計算規(guī)模的增大變化圖,同時,運用Dhrystone測試國產(chǎn)處理器并得出性能評估結(jié)果,圖6
圖6 Dhrystone各計算量下CPU性能變化圖Fig.6 CPU performance change diagram of Dhrystone under different calculations
為不同指令集架構(gòu)的處理器性能隨計算機規(guī)模增大變化圖.在浮點數(shù)運算測試方面,與Dhrystone測試基準相比,本模型將浮點運算性能作為國產(chǎn)處理器綜合性能指標之一,在圖5中龍芯和眾志處理器隨運算規(guī)模的不斷增大,DMIPS值逐漸增加,龍芯2H1000在運算規(guī)模達到50000時DMIPS值為1.25,此后性能趨于穩(wěn)定,PKUnity-3-HD65在運算規(guī)模達到100000時DMIPS值1.43,此后性能趨于穩(wěn)定,且兩條曲線均無下滑現(xiàn)象.但圖5兩種處理器性能測試結(jié)果隨運算規(guī)模不斷增大,出現(xiàn)性能下滑,結(jié)合表2和表3做出具體分析.
表2 龍芯2H1000性能測試結(jié)果
Table 2 Loongson 2H1000 performance test results
運算規(guī)模模塊執(zhí)行時間(s)MFLOP1MFLOP2IFMOPSFIXPTMOPSCOSMOPSMFLOP3EQUALEXPMOPS模型執(zhí)行總時間(s)MWIPS15000.010.130.050.120.190.500.110.191.31114.4520000.010.170.080.160.220.680.140.261.73115.4350000.050.240.150.420.491.680.360.664.05123.39100000.100.410.270.850.923.360.721.327.94125.96500000.261.872.136.772.2516.803.616.6040.30124.081000000.564.112.577.993.8133.577.3513.2073.15136.712000000.968.215.1315.986.9467.1114.7126.48145.53137.433000001.4812.337.7024.0510.09100.6422.1039.65218.05137.584000001.95349.3610.2732.0113.21134.9629.6254.25625.6463.935000002.47824.2114.8439.9773.20172.3337.8468.021232.8940.56100000013.003236.8326.4983.49535.76342.6676.66136.474451.3622.4750000001409.6312148.10129.87405.214198.4875.38383.29671.2219037.8926.26
表3 眾志PKUnity-3HD65性能測試結(jié)果
Table 3 PKUnity-3HD65 performance test results
運算規(guī)模模塊執(zhí)行時間(s)MFLOP1MFLOP2IFMOPSFIXPTMOPSCOSMOPSMFLOP3EQUALEXPMOPS模型執(zhí)行總時間(s)MWIPS15000.020.110.070.090.380.360.050.121.19126.3120000.020.140.100.100.400.420.060.161.41141.6850000.020.300.150.120.841.050.160.393.04164.58100000.080.430.230.251.562.080.320.785.73174.55500000.361.611.211.254.6210.461.613.9025.01199.931000000.532.662.282.508.3820.843.217.8048.20207.472000000.715.334.605.0115.7341.686.4216.2795.74208.903000001.187.996.887.5023.2362.539.6323.40142.34210.764000001.5010.989.1111.1030.5983.6112.8531.33191.07209.355000001.8314.0111.4312.5538.54104.4616.0939.91238.82209.36100000055.4698.3322.7725.0178.74419.6857.51112.29869.79185.605000000519.751026.00236.60250.07572.443908.06435.07513.767461.76111.67
在處理器性能穩(wěn)定區(qū)間內(nèi),根據(jù)表2和表3模型中各模塊處理時間,對CPU性能做出進一步分析,由同等運算規(guī)模下各模塊時間消耗可以看出,在條件轉(zhuǎn)移運算和三角函數(shù)運算方面,龍芯2H1000處理器性能表現(xiàn)更為優(yōu)越,但在浮點運算、整型數(shù)運算和標準函數(shù)運算方面,PKUnity-3-HD65處理器展現(xiàn)出更好的計算能力.
實驗結(jié)果表明,對于不同指令集架構(gòu)下的國產(chǎn)處理器,本模型能夠根據(jù)不同指令集架構(gòu)分別測得處理器性能指標與最大閾值,分析國產(chǎn)處理器在模型各測試指標下運行狀況,在CPU浮點運算測試方面,以三個模塊共同測試處理器浮點運算性能,保證了模型性能測試的全面性,具備處理器測試的高效性與準確性的特點,對國產(chǎn)處理器復雜的測試任務實現(xiàn)了良好支撐.
圖7 不同計算量下浮點運算時間占比圖Fig.7 Diagram of floating-point operation time ratios under different computation quantities
本文針對當前各類基準測試集無法對國產(chǎn)處理器實現(xiàn)精準的性能評估的問題,提出一種基于收斂策略的國產(chǎn)CPU性能測試模型,將測試內(nèi)容模塊化,多方面對處理器性能進行評估,測試方法遵循收斂性原則,避免大規(guī)模運算下程序出現(xiàn)溢出現(xiàn)象,設計了起始運算規(guī)模評估模塊,充分減小測試過程中的性能誤差,采用三種模塊綜合評估處理器浮點運算性能,提高測試指標的準確性,將模型在不同指令集架構(gòu)的國產(chǎn)處理器下進行驗證,選取龍芯2H1000和北大眾志PKUnity-3-HD65分別進行測試,以本模型性能指標為標準,分析并論證了龍芯2H1000以及北大眾志PKUnity-3-HD6兩款國產(chǎn)處理器在不同運算規(guī)模下的性能變化原因,得到處理器性能穩(wěn)定區(qū)間,實驗結(jié)果表明,模型在評估處理器性能參數(shù)及穩(wěn)定性方面優(yōu)勢明顯,實現(xiàn)了CPU浮點運算、整數(shù)運算等多種性能的綜合評估,具備性能測試的高效性與準確性.在下一步工作中,將進一步研究國產(chǎn)處理器特性,增強模型在特定指令集架構(gòu)下對處理器測試的適應能力,并以本模型為基礎(chǔ)完成國產(chǎn)處理器在高通用接口擴展測控單元和工業(yè)控制通信總線擴展測控單元等芯片測試工作,充分保障國產(chǎn)處理器在工控領(lǐng)域的適配與應用,為國產(chǎn)處理器在工業(yè)控制領(lǐng)域研發(fā)及應用提供性能參照.